4

似乎我的项目 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');

};

有谁知道为什么会这样?

亲切的问候,

乙!

在此处输入图像描述

4

5 回答 5

6

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

于 2015-06-18T14:13:47.143 回答
2

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

我知道您可能已经继续前进,但希望这对将来的某人有所帮助。

于 2014-02-22T19:15:59.393 回答
2

尝试类似的东西

   ....

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

    },

    ...

});

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

我的 gruntfile 中的watch 任务可能会有所帮助。

于 2014-03-18T00:56:38.430 回答
1

我注意到这与旧版本的grunt-contrib-watch. 就我而言,我使用的是grunt-contrib-watchV0.4.4。

尝试grunt-contrib-watch通过运行将包更新到最新版本:

npm install grunt-contrib-watch@latest --save-dev 

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

于 2013-08-14T14:30:22.353 回答
-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']);

}

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

于 2013-08-14T08:14:35.770 回答