Grunt.js& uglify将uglified代码附加到文件而不是重写它

时间:2013-09-25 06:35:38

标签: javascript gruntjs uglifyjs

我正在处理一些自动化任务,我注意到grunt.js和uglify模块没有重写缩小的文件。每当我开始执行繁琐的任务时,他们就会附加新版本的代码。

module.exports = function(grunt) {

  grunt.initConfig({
    uglify  : {
      build : {
        src     : ['**/*.js', '!*.min.js'],
        cwd     : 'js/app/modules/',
        dest    : 'js/app/modules/',
        expand  : true,
        ext     : '.main.min.js',
      },
    }
  });

  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.registerTask('default', ['uglify']);
};

我可以做些什么来避免它?我只想在文件中使用最新版本的代码。

2 个答案:

答案 0 :(得分:10)

对于js /(例如js / lib / * .js)子文件夹中的所有文件,我遇到了同样的问题:

 build: {
             expand: true,
             cwd: 'js/',
             src: ['**/*.js','!*.min.js'],
             dest: 'js/',
             ext: '.min.js',
        }

你必须限制更多的文件,因为如果文件与src-option匹配,内容将被追加而不被替换 - 因为它被“锁定”我想:

    src: ['**/*.js','!**/*.min.js']

那应该可以解决你的问题。

答案 1 :(得分:1)

谢谢SpazzMarticus!我用户grunt-newer仅使用较新的文件运行uglify。 你可以试试这个:

grunt.initConfig({
        uglify: {
            options: {
            },
            build: {
                files: [{
                    expand: true,
                    cwd: 'public/js',
                    src: ['**/*.js','!**/*.min.js'],
                    dest: 'public/js',
                    ext: '.min.js'
                }]
            }
        },
        watch: {
            options: {
                livereload: true,
                nospawn: true
            },
            scripts:{
                files: ['public/js/**/*.js'],
                tasks: ['newer:uglify']
            }
        }
    });

grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-newer');
grunt.registerTask('yt', ['watch']);