mrborgen
mrborgen

Reputation: 401

Gulp doesn't notice my file changes

I'm working on a project with a few others. While they get Gulp to work, it doesn't seem to work on my computer, even through our code is identical.

When I write the 'gulp' command, I get this:

[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

But when I save the changes in the files Gulp is suppose to be watching, the 'update' event doesnt seem to be triggered.

Here is the Gulp file

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"]);

However, I don't think there is anything wrong with the code, as it works for my other team members.

Any help and comments are highly appreciated!

Upvotes: 0

Views: 560

Answers (2)

deowk
deowk

Reputation: 4318

If you are only running gulp in the command line the watch task will not trigger since the default task is only running browserify, just change your default task to this.

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

Upvotes: 0

Edgar Zakaryan
Edgar Zakaryan

Reputation: 576

Try this:

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

Upvotes: 1

Related Questions