2

我正在尝试创建一个 gulpfile,它对我的​​个人 javascript 文件 (.js) 进行 lint,但忽略任何供应商/第三方库。

我的 gulp 文件如下所示:

var gulp = require("gulp"),
    uglify = require("gulp-uglify"),
    jshint = require("gulp-jshint"),
    jasmine = require("gulp-jasmine"),
    nodemon = require("gulp-nodemon");


// lint JS files for bad habbits
gulp.task("lint", function () {
    gulp.src(["**/*.js", "node_modules/*"])
        .pipe(jshint())
        .pipe(jshint.reporter("default"));
});


gulp.task("nodemon", function () {
    nodemon({
            script: "server.js", 
            ext: "html css jade js", 
            ignore: ["node_modules/*"]
        })
        .on("change", ["lint"])
        .on("restart", function () {
            console.log("Change detected, restarting server ...");
        });
});

gulp.task("default",["nodemon"]);

当我在终端中运行“gulp default”命令时,它仍然会检查node_modules中的 javascript 文件。我尝试了 glob 语法的变体,但似乎无法实现所需的行为。

知道我哪里出错了吗?

谢谢。

4

2 回答 2

5

您设置的 glob 模式node_modules/*仅匹配目录根目录中的node_modules文件,但不匹配深度较高的所有子项。您需要设置 is as node_modules/**/*,这将匹配所有内容。但是,我建议您仅将js文件与node_modules/**/*.js.

你还需要用 来否定模式!gulp不知道你想这样做,所以它看起来像:

gulp.src(['**/*.js', '!node_modules/**/*.js'])

对于nodemon,您可以按照相同的方式使用该node_modules/**/*模式。

gulp 用于 globbing 的库是 minimatch。

于 2014-12-28T07:43:03.070 回答
1

ignore: ["node_modules/"]在没有'*'的情况下使用它,它会起作用

于 2014-12-28T12:02:12.893 回答