我正在尝试设置一个Gruntfile.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);
});
};
答案 0 :(得分:4)
你应该帮自己一个忙,在这种情况下使用grunt-newer可以让你轻松地做你想做的事。
理论上,您应该能够注册常规uglify
任务和目标,然后只需将newer
添加到其中。
grunt.registerTask('build', ['newer:uglify:something']);
或者只是在命令行中
grunt newer:uglify:something