2

変更されたばかりのファイルのみを醜くする Gruntfile.js をセットアップしようとしています。私はで与えられた質問と回答からこれのいくつかを適応させました

Uglifyの動的拡張が有効になっている場合、Grunt.jsウォッチタスクで変更されたファイルのみを醜くする方法は?

私がこれを理解しているように、監視イベントでイベントをトリガーする必要があります。これにより、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 に答える