node.js - grunt-newer 无法与 Watchify 一起正常工作

标签 node.js gruntjs grunt-contrib-watch

我使用Grunt作为Node和一堆包。例如jsHintjsDocBrowserifyUglify ...

我使用 WatchifyNewer 运行 Gruntfile 以实现自动化。到目前为止,一切顺利。

Gruntfile,工作得很好:

module.exports = function(grunt) {
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        jshint: {
            all: ['my/js/files/*.js']
        },
        jsdoc : {
            dist : {
                src: ['my/js/files/*.js'], 
                options: {
                    destination: 'doc'
                }
            }
        },
        browserify: {
            'public/js/files/script.js': ['my/js/files/*.js']
        },
        uglify: {
            my_target: {
                files: {
                    'public/js/files/script.js': ['public/js/files/script.js']
                }
            }
        },
        htmlmin: {
            dist: {
                files: {
                    'public/html/index.html': ['public/html/index.html']
                }
            }
        },
        cssmin: {
            combine: {
                files: {
                    'public/css/css.min.css': ['my/css/files/*.css']
                }
            }
        },
        watch: {
            javascript: {
                files: ['my/js/files/*.js'],
                tasks: ['newer:jshint:all', 'jsdoc', 'browserify', 'uglify']
            },
            html: {
                files: ['public/html/index.html'],
                tasks: ['htmlmin']
            },
            css: {
                files: ['public/css/*.css'],
                tasks: ['cssmin']
            }
        }
    });

    // load plugins
    grunt.loadNpmTasks('grunt-contrib-jshint');
    grunt.loadNpmTasks('grunt-jsdoc');
    grunt.loadNpmTasks('grunt-browserify');
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-contrib-htmlmin');
    grunt.loadNpmTasks('grunt-contrib-cssmin');
    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-newer');
};

只要我只使用Newer作为jsHint,它就可以工作。但是,如果我尝试使用 jsDocUglify 进行相同的操作,我会收到错误消息。

示例:

我试试这个...

tasks: ['newer:jshint:all', 'newer:jsdoc:all', 'browserify', 'uglify']

而不是...

tasks: ['newer:jshint:all', 'jsdoc', 'browserify', 'uglify']

我收到错误消息:

Running "newer:jsdoc:all" (newer) task
Warning: Cannot read property 'files' of undefined Use --force to continue.
Aborted due to warnings.

为什么它对 jsHint 有效,但对其他的无效?有人有想法吗?非常感谢一些提示!

亲切的问候

最佳答案

您的 jshint 任务的目标是 all,因此 newer:jshint:all 是正确的。

您的 jsdoc 目标是 dist,因此您必须使用此目标:newer:jsdoc:dist

对你来说更容易,每个任务只有一个目标(只有你的监视任务有多个目标),所以你只能这样做:

 ['newer:jshint', 'newer:jsdoc', 'browserify', 'uglify']

关于node.js - grunt-newer 无法与 Watchify 一起正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27129978/

相关文章:

javascript - SequelizeJS 用 promise 返回 "fulfillmentValue"

node.js - 如何在 express 中从我的模板目录的根目录中包含/扩展一个 jade 文件?

javascript - 捆绑的 JS 库,例如angular, jQuery, lodash 在 eval 抛出 "require is not defined"之后

javascript - Gruntjs 任务问题

python - 如何为nodejs运行像pm2这样的python脚本

javascript - 用于 jasmine 测试的 jquery-validation 插件导入

node.js - 在 Azure 中使用 grunt 发出 ENOTUP 警告

Codeigniter 和 React.JS 设置

node.js - Grunt watch 任务似乎需要很长时间

node.js - Grunt-contrib-connect:如何在指定的浏览器中启动服务器