Grunt - Watch Task无效

时间:2013-08-14 07:02:22

标签: javascript gruntjs

似乎我的项目grunt文件中的监视任务正在启动,然后立即退出。

请查看附带的截图。

请找到我的Gruntfile.js的代码;

module.exports = function (grunt) {

    grunt.initConfig({
        sass: {
            options: {
                cacheLocation: '.sass-cache'
            },
            prod: {
                options: {
                    style: 'compressed'
                },
                files: [{
                    'assets/css/dist/main.min.css': 'assets/css/sass/main.scss'
                }]
            },
            dev: {
                options: {
                    style: 'nested'
                },
                files: [{
                    'assets/css/main.css': 'assets/css/sass/main.scss'
                }]
            }
        },
        imageoptim: {
          files: [
            'img/flat',
            'img/flat/**'
          ],
          options: {
            imageAlpha: true,
            jpegMini: true,
            quitAfter: true
          }
        },
        uglify: {
            options: {
              mangle: true,
              compress: true
            },
            jsCompress: {
                files: {
                    'js/dist/main.min.js': ['js/src/script1.js', 'js/src/script2.js']
            }
          }
        },
        concat: {
            options: {
                separator: ';',
          },
          dist: {
                src: ['js/src/script1.js', 'js/src/script2.js'],
                dest: 'js/dist/main.min.js',
          }
        },
        watch: {
            sassWatch: {
                files: 'css/sass/**/*.scss',
                tasks: ['sass:prod', 'sass:dev'],
            },
            JsWatch: {
                files: ['js/modules/script1.js', 'js/modules/script2.js'],
                tasks: ['uglify:jsCompress', 'concat:dist'],
            }
        },
        notify: {
            sassNotify: {
                options: {
                    title: "Task Complete",
                    message: "Your Sass has been compiled and concatanatated!"
                }
            },
            jsNotify: {
                options: {
                    title: "Task Complete",
                    message: "Your JS has been minified and concatanatated!"
                }
            },
            imageNotify: {
                options: {
                    title: "Task Complete",
                    message: "All images have been compressed"
                }
            }
        }
    });

    grunt.loadNpmTasks('grunt-contrib-sass');
    grunt.loadNpmTasks('grunt-imageoptim');
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-notify');

    grunt.registerTask('sassNotify', 'watch:sassWatch');
    grunt.registerTask('jsNotify', 'watch:jsWatch');
    grunt.registerTask('imageNotify', 'imageoptim');

};

有谁知道为什么会这样?

亲切的问候,

乙!

enter image description here

5 个答案:

答案 0 :(得分:6)

我的问题是它正在观看我有100多个图像文件,它正在跟踪所以我只是指定它应该观看(js,html,scss,css)。

答案 1 :(得分:1)

我注意到这与grunt-contrib-watch的旧版本无法正常工作。就我而言,我使用的是grunt-contrib-watch V0.4.4。

尝试运行:

,将grunt-contrib-watch包更新到最新版本
npm install grunt-contrib-watch@latest --save-dev 

然后再次尝试执行您的任务。

答案 2 :(得分:1)

我遇到了这个问题,正在寻找答案。在我的情况下,我的files:匹配模式中有一个拼写错误导致它找不到要监视和中止的目录,尽管错误消息本来不错。我注意到,在sass任务中,您使用assets/添加文件,但不在观察任务中。

我知道你可能会继续前进,但希望将来可以帮助某人。

答案 3 :(得分:1)

尝试类似

的内容
   ....

    watch: {
        dev: {
            files: 'assets/sass/**/*{.scss,.js}',
            tasks: ['sass:dev','uglify:jsCompress'],
        },

    },

    ...

});

grunt.registerTask('dev', 'watch:dev');

watch task in my gruntfile可能会有所帮助。

答案 4 :(得分:-3)

以下是我的Gruntfile.js的样子,并且工作正常:

module.exports = function(grunt) {

    grunt.initConfig({
        sass: {                              // Task
            dist: {                            // Target
                options: {                       // Target options
                    style: 'expanded'
                },
                files: {                         // Dictionary of files
                    'css/styles.css': './sass/site.scss'
                }
            }
        },
        watch: {
            sass: {
                files: ['sass/**/*.scss'],
                tasks: ['sass']
            },
            organic: {
                files: ['../organic-css/**/*.scss'],
                tasks: ['sass']
            }
        }
    });

    grunt.loadNpmTasks('grunt-contrib-sass');
    grunt.loadNpmTasks('grunt-contrib-watch');

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

}

也许您需要注册“默认”任务。