Gulp没有注意到我的文件发生了变化

时间:2015-04-15 09:58:26

标签: node.js gulp browserify

我正在和其他几个人合作开展一个项目。虽然他们让Gulp工作,但它似乎无法在我的计算机上运行,​​即使我们的代码是相同的。

当我写'gulp'命令时,我明白了:

[10:51:17] Starting 'browserify'...
[10:51:19] Finished 'browserify' after 2.37 s
[10:51:19] Starting 'default'...
[10:51:19] Finished 'default' after 17 μs

但是当我保存Gulp正在观看的文件中的更改时,“更新”事件似乎没有被触发。

这是Gulp文件

var gulp        = require("gulp"),
jest        = require("gulp-jest"),
source      = require('vinyl-source-stream'),
browserify  = require('browserify'),
watchify    = require('watchify'),
reactify    = require('reactify');
require("harmonize")();

var paths = {
   scripts: "src/**/*.js",
   tests: "__tests__"
};

gulp.task("jest", function () {
    return gulp.src(paths.tests).pipe(jest({
        scriptPreprocessor: "preprocessor.js",
        unmockedModulePathPatterns: [
            "../node_modules/react"
        ],
        testPathIgnorePatterns: [
            "node_modules",
            "spec/support"
        ],
        moduleFileExtensions: [
            "js",
            "json",
            "react"
        ]
    }));
});

gulp.task('browserify', function() {
    var bundler = browserify({
        entries: ['./src/js/TopLevel.js'],
        transform: [reactify],
        debug: true,
        cache: {}, packageCache: {}, fullPaths: true
    });
    var watcher  = watchify(bundler);

    return watcher
    .on('update', function () { // When any files update
        var updateStart = Date.now();
        console.log('Updating!');
        watcher.bundle() // Create new bundle that uses the cache for high performance
        .pipe(source('main.js'))
        .pipe(gulp.dest('./public/assets/js'));
        console.log('Updated!', (Date.now() - updateStart) + 'ms');
    })
    .bundle() // Create the initial bundle when starting the task
    .pipe(source('main.js'))
    .pipe(gulp.dest('./public/assets/js'));
});

gulp.task("watch", function() {
  gulp.watch("src/**/*.js", ["jest"]);
  gulp.watch("__tests__/*.js", ["jest"]);
});

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

但是,我认为代码没有任何问题,因为它适用于我的其他团队成员。

非常感谢任何帮助和评论!

2 个答案:

答案 0 :(得分:1)

试试这个:

gulp.task("watch", function() {
  gulp.watch("./src/**/*.js", ["jest"]);
  gulp.watch("./__tests__/*.js", ["jest"]);
});

答案 1 :(得分:0)

如果您只在命令行中运行gulp,则监视任务将不会触发,因为默认任务仅运行browserify,只需将默认任务更改为此。

gulp.task("default", ["browserify", "watch"]);