0

这是我的 Gruntfile。我同时运行 nodemon 来运行我的应用程序并观察我的咖啡脚本的变化。

Coffeescript 获取 src 文件并将它们转换为 JS 文件(目前有 3 个,main.coffee、Person.coffee 和 Car.coffee)

我希望我的 Nodemon 在每次这些文件更改时重新启动,以使用最新保存的更改运行它。

问题来了:当只修改了1个 coffee文件时,运行coffee会重新编译所有coffee文件,依次生成3个js文件,依次使nodemon重启3次。这是不可取的,因为我在使用网络请求的应用程序中工作,我不希望它失控。

是否可以让 nodemon 只重启 1 次?

我想连接所有的 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"]);
};
4

2 回答 2

1

You probably need to use the delayTime option. The problem is, it doesn't actually wait for all files to finish, it simply waits some amount of time before restarting, thus preventing multiple restarts.

nodemon: {
    dev: {
        script: 'dist/main.js',
    },
    options:{
        watch: "dist/**/*.js",
        delayTime: 2000
    }
}
于 2014-02-08T19:43:48.343 回答
0

您可以使用grunt-newer. 然后在watch任务中您可以指定您只想编译更改的文件。

watch: {
    dist: {
        files: ['src/dist/**/*.coffee'],
        tasks: 'newer:coffee'
    },
}
于 2015-02-11T12:02:55.040 回答