3

私の Gruntfile.js には次の構成があります。私が間違っていることは何ですか?

module.exports = function(grunt) {
    grunt.initConfig({
        pkg     : grunt.file.readJSON('package.json'),
        watch: {
            scripts: {
                files: ['js/**/*.js'],
                tasks: ['uglify']
            }
        },
        uglify  : {
            options: {
                banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n',
                sourceMapRoot: 'www/js/sourcemap/'
            },
            build: {
                files: [
                    {
                        expand: true,
                        cwd: 'js/',
                        src: ['**/*.js', '!**/unused/**'],
                        dest: 'www/js/',
                        ext: '.js'
                    }
                ]
            }
        }
    });

    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-contrib-uglify');

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

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

2 に答える 2

3

デフォルトでは、watch タスクはタスクの実行を生成します。したがって、それらは異なるプロセス コンテキストにあるため、watch イベントで構成を設定しても機能しません。nospawnタスクの実行を生成せず、同じコンテキスト内にとどまるように有効にする必要があります。

watch: {
  options: { nospawn: true },
  scripts: {
    files: ['js/**/*.js'],
    tasks: ['uglify']
  }
},
于 2013-06-03T03:47:16.190 に答える
1

あなたはほとんどそこにいました。「onWatch」関数は次のようになります。

grunt.event.on('watch', function(action, filepath, target) {

    grunt.config('uglify.build.files.src', new Array(filepath) );

    // eventually you might want to change your destination file name
    var destFilePath = filepath.replace(/(.+)\.js$/, 'js-min/$1.js');
    grunt.config('uglify.build.files.dest', destFilePath);
});

nospawn:truewacth タスクのオプションも必須であることに注意してください。

于 2014-02-21T20:45:57.873 に答える