0

これは私の 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"]);
};
4

2 に答える 2