4

我正在处理一些自动化任务,我注意到 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']);
};

我能做些什么来避免它?我只想要文件中最新版本的代码。

4

2 回答 2

10

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

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

您必须限制更多文件,因为如果文件与 src 选项匹配,则内容将被附加而不是替换 - 因为它是“锁定”的,我猜:

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

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

于 2014-02-05T08:16:44.410 回答
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']);
于 2015-03-13T10:33:05.050 回答