grunt uglify任务失败

Sor*_*ami 6 node.js gruntjs

运行grunt时,我收到以下错误:

警告:无法写入"client/dist/js/build.js"文件(错误代码:undefined).使用--force继续.

uglify的配置在我的Gruntfile.js:

uglify: {
      build: {
        src: ['client/src/js/*.js'],
        dest:['client/dist/js/build.js']
      }
    }
Run Code Online (Sandbox Code Playgroud)

我正在使用grunt-contrib-uglify.

任何想法为什么会这样?

raf*_*nia 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']
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我也不确定是否正确处理了通配符.


Gab*_*oux 15

我知道这标记为已解决,但我仍然喜欢这个类似问题的答案,因为您可以轻松地将文件再次用于其他命令,而无需再写两次.

简而言之,答案说

//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'
Run Code Online (Sandbox Code Playgroud)

测试工作示例,无需编写文件两次:

'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'
    ]);
};
Run Code Online (Sandbox Code Playgroud)

请注意,这'<%= 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.
Run Code Online (Sandbox Code Playgroud)