这是我的Gruntfile。我同时运行nodemon来运行我的应用程序并注意观察我的coffeescript中的更改。
Coffeescript获取src文件并将其转换为JS文件(目前为3,main.coffee,Person.coffee和Car.coffee)
我想让Nodemon在每次更改文件后重新启动,以使用最新保存的更改来运行它。
问题在于:当只有1 咖啡文件被修改时,运行咖啡将重新编译所有咖啡文件,这反过来会生成3个JS文件,这反过来会使nodemon重启3次。这是不可取的,因为我在使用网络请求的应用程序中工作,我不希望它失去控制。
是否可以让nodemon重启一次?
我想连接所有的JS文件,但这会混淆我的JS文件的模块性。
我还想过逐个“看”文件,但如果我达到50个文件就会变得很麻烦。
我该如何解决这个问题?
module.exports = function(grunt) {
"use strict";
grunt.initConfig({
pkg: grunt.file.readJSON( 'package.json' ),
coffee: {
dist: {
join: true,
expand: true,
flatten: true,
cwd: 'src/dist',
src: ['*.coffee'],
dest: 'dist',
ext: '.js'
},
},
watch: {
dist: {
files: ['src/dist/**/*.coffee'],
tasks: 'coffee'
},
},
concurrent: {
dev: {
tasks: ['nodemon', 'watch'],
options: {
logConcurrentOutput: true
}
}
},
nodemon: {
dev: {
script: 'dist/main.js',
},
options:{
watch: "dist/**/*.js"
}
}
});
grunt.loadNpmTasks('grunt-concurrent');
grunt.loadNpmTasks('grunt-contrib-coffee');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-nodemon');
grunt.registerTask("default", ["coffee", "concurrent"]);
};
答案 0 :(得分:1)
您可能需要使用delayTime
option。问题是,它实际上并没有等待所有文件完成,它只是在重新启动之前等待一段时间,从而防止多次重启。
nodemon: {
dev: {
script: 'dist/main.js',
},
options:{
watch: "dist/**/*.js",
delayTime: 2000
}
}
答案 1 :(得分:0)
您可以使用grunt-newer
。然后在watch
任务中,您可以指定只编译已更改的文件。
watch: {
dist: {
files: ['src/dist/**/*.coffee'],
tasks: 'newer:coffee'
},
}