2

我正在尝试设置一个 Gruntfile.js,它只对刚刚更改的文件进行 uglizes。我已经从给出的问题和答案中改编了其中的一些内容

如果已启用 Uglify 中的动态扩展,如何使用 Grunt.js 监视任务仅对更改的文件进行 uglify?

据我了解,应该在监视事件上触发一个事件,然后将 uglify 任务更改src为当前文件路径。然而,GruntJS 仍然会丑化所有文件,而不仅仅是刚刚更改的文件。

我不确定我是否只是误解了 GruntJS 在这里的工作方式,但是谁能建议我哪里出错了?

var productionPath = "production", devPath = "dev";

module.exports = function(grunt) {
    require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);

    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        uglify: {
            options: {
                banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
            },
            build: {
                expand: true,
                cwd: devPath + '/js/',
                src: ['**/*.js'],
                dest: productionPath + '/js/',
                ext: '.min.js'
            }
        },
        watch: {
            options: { spawn: false },
            scripts: {
                files: [devPath + '/**/*.js'],
                tasks: ['uglify']
            }
        }
    });

    grunt.registerTask('default', ['uglify', 'watch']);

    grunt.event.on('watch', function(action, filepath, target) {
        grunt.config('uglify.build.src', filepath);
    });
};
4

1 回答 1

4

你应该帮自己一个忙,在这种情况下使用grunt-newer可以让你很容易地做你想做的事。

理论上,您应该能够注册一个常规uglify任务和目标,然后简单地newer添加到它前面。

grunt.registerTask('build', ['newer:uglify:something']);

或者只是在命令行中

grunt newer:uglify:something
于 2013-10-30T17:56:37.263 回答