2013-03-09 94 views
6

当运行的呼噜声,我得到以下错误:咕噜丑化任务失败

Warning: Unable to write "client/dist/js/build.js" file (Error code: undefined). Use --force to continue.

在我Gruntfile.js丑化的配置:

uglify: { 
     build: { 
     src: ['client/src/js/*.js'], 
     dest:['client/dist/js/build.js'] 
     } 
    } 

我使用grunt-contrib-uglify

任何想法为什么会发生这种情况?

回答

15

假设您的Grunt版本是0.4.0,AFAIK您没有使用最新的语法(请参阅https://github.com/gruntjs/grunt-contrib-uglify#usage-examples)。

尝试

uglify: { 
    build: { 
     files: { 
      'client/dist/js/build.js': ['client/src/js/*.js'] 
     } 
    } 
} 

我也不能肯定是否通配符妥善处理。

+0

工作就像一个魅力,谢谢。 – 2013-03-13 20:07:57

15

我知道这被标记为已解决,但我仍然更喜欢this answer from a similar question,因为您可以轻松地将这些文件重新用于其他命令,而无需再次写入它们。

总之,回答说

//Does not work 
src: ['client/src/js/*.js'], 
dest: ['client/dist/js/build.js'] 
//Works 
src: ['client/src/js/*.js'], 
dest: 'client/dist/js/build.js' 

测试工作示例没有写入文件两次:

'use strict'; 
module.exports = function(grunt) { 
    grunt.initConfig({ 
    uglify: { 
     build: { 
     src: ['client/src/js/*.js'], 
     dest: 'client/dist/js/build.js' 
     } 
    }, 
    watch: { 
     js: { 
     files: '<%= uglify.build.src %>', 
     tasks: ['uglify'] 
     } 
    } 
    }); 
    grunt.loadNpmTasks('grunt-contrib-uglify'); 
    grunt.loadNpmTasks('grunt-contrib-watch'); 
    grunt.registerTask('default', [ 
    'uglify', 
    ]); 
    grunt.registerTask('dev', [ 
    'watch' 
    ]); 
}; 

注意'<%= uglify.build.src %>'是非常方便的;)

执行

$ grunt watch 
Running "watch" task 
Waiting...OK 
>> File "client/src/js/hello.js" changed. 
Running "uglify:build" (uglify) task 
File "client/dist/js/build.js" created. 
Uncompressed size: 15 bytes. 
Compressed size: 32 bytes gzipped (15 bytes minified). 

Done, without errors. 
+1

+1这是一个很好的解决方案。除此之外,我还用我的img,js和css路径生成了我的package.json,以便我可以用'<%= pkg.path.js%>'引用它们。 – Larry 2013-07-19 14:35:11