これは私の Gruntfile です。nodemon を同時に実行してアプリケーションを実行し、coffeescript の変更を監視します。
Coffeescript は src ファイルを受け取り、それらを JS ファイルに変換します (現在、main.coffee、Person.coffee、および Car.coffee の 3 つ)。
これらのファイルが変更されるたびに Nodemon を再起動し、最後に保存された変更で Nodemon を実行したいと考えています。
ここに問題があります:たった 1 つの coffee ファイルが変更された場合、coffee を実行するとすべての coffee ファイルが再コンパイルされ、3 つの JS ファイルが生成され、nodemon が 3 回再起動されます。ネットリクエストを使用するアプリケーションで作業しているため、これは望ましくありません。制御不能になることは望ましくありません。
nodemon を 1 回だけ再起動することはできますか?
すべての JS ファイルを連結することを考えましたが、それでは JS ファイルのモジュール性が台無しになります。
ファイルを 1 つずつ「監視」することも考えましたが、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"]);
};