Grunt:grunt-hub并没有关注所有项目

时间:2014-09-24 12:05:41

标签: javascript node.js cmd gruntjs dir

我已将grunt-hub安装到我的工作区中,看起来像这样

hub/
node_modules/
    grunt/
    grunt-hub/
Gruntfile.js
package.json

在Gruntfile.js中我写过这个,

module.exports = function (grunt) {
    'use strict';
    grunt.initConfig({
        pkg : grunt.file.readJSON( 'package.json' ),
        hub: {
            src: [
                'hub/*/Gruntfile.js'
            ],
            watch: {
                src: '<%= hub.src %>',
                tasks: ['watch']
            }
        }
    });
    grunt.loadNpmTasks('grunt-hub');
    grunt.registerTask('default', []);
}

我在hub目录中有四个文件,它们有自己的Grunt文件。

hub/
    project1/
        ...
        Gruntfile.js
        ...
    project2/
        ...
        Gruntfile.js
        ...
    project3/
        ...
        Gruntfile.js
        ...
    project4/
        ...
        Gruntfile.js
        ...

当我跑...

grunt hub

......它完美无缺;它会观察我所做的所有更改并运行我命令它们运行的​​方式。

唯一的问题是在命令提示符中我被告知......

>> C:\Grunt\hub\project1\Gruntfile.js:

Running "watch" task
Waiting...

>> C:\Grunt\hub\project2\Gruntfile.js:

Running "watch" task
Waiting...

>> C:\Grunt\hub\project3\Gruntfile.js:

Running "watch" task
Waiting...

...但是我没有被告知正在监视project4。当我对与project4相关的文件进行更改时,没有任何反应,而对其他一切都有效。

我该怎样做才能让它同时观看project4?

3 个答案:

答案 0 :(得分:2)

根据https://www.npmjs.org/package/grunt-hub

尝试更改options.concurrent

答案 1 :(得分:0)

livereload对此有影响。以下是一些选项:

  • 将监视任务添加到集线器任务配置(grunt.config.hub.js)中的任务列表中:

            watch: {
                    options: {
                            allowSelf: true
                    },
                    src: hubSettings.src,
                    tasks: ['watch']
            },
    

OR:

  • 将监视任务设置为默认值grunt hub
  • ,运行grunt hub:target:watch

<强>参考

答案 2 :(得分:0)

我的工作方式如下:

    // scss files to watch ##
    watch_scss: [
        'wp-content/themes/**/*.scss', // regex to track all sass files in themes ##
        'wp-content/plugins/**/*.scss', // regex to track all sass files in plugins ##
    ],

    // grunt hub - master controller ##
    hub: {
        all: {
            options: {
                allowSelf: true,
            },
            src: [
                'Gruntfile.js', // this grunt file ##
                'wp-content/themes/**/Gruntfile.js', // in themes ##
                'wp-content/plugins/**/Gruntfile.js' // in plugins ##
            ],
            tasks: [ 'default' ]
        },
    },

    // watch task ##
    'watch': {
        // track changes to scss src files ##
        'sass': {
            'options': {
                'livereload': 1337, // dedicated port for live reload ##
                'debounceDelay': 5000, // wait a little for sass to complete ##
            },
            'files':
                '<%= watch_scss %>' // files defined in config ##
            ,
            'tasks': [
                [],  // nada ##
            ]
        },`

确保包括守望先锋任务:

grunt.loadNpmTasks( 'grunt-contrib-watch' ); // Watcher ##

并为默认定义一个艰苦的任务:

grunt.registerTask( 'default', [
    'watch', // watch ##
]);

确保您的单个gruntfile文件在watch任务上也没有livereload选项,然后运行“ grunt hub:all:watch”