Автоматическая сборка при любых изменениях в папке src

Это Gulpfile.js

const gulp = require('gulp');
const mocha = require('gulp-mocha');
const eslint = require('gulp-eslint');
const runSequence = require('run-sequence');
const istanbul = require('gulp-istanbul');
const mongodbData = require('gulp-mongodb-data');

//Tasks to run as watch during development.  Runs unit tests with coverage and lint.
gulp.task('developer-watch', function (done) {
    runSequence('test-unit-code-coverage', 'lint', done);
});

//Run eslint tests
gulp.task('lint', function () {
    //Run on all js files except those in the node_modules or reports directories
    return gulp.src(['**/*.js', '!node_modules/**', '!reports/**'])
    //Run lint with the config file
        .pipe(eslint('./config/.eslintrc'))
        //Print any error or warning details to the console
        .pipe(eslint.format())
        //Print a summary to the console
        .pipe(eslint.results(results => {
            console.log('Total Results: ' + results.length);
            console.log('Total Warnings: ' + results.warningCount);
            console.log('Total Errors: ' + results.errorCount);

            //This is necessary for the precommit task as it needs an exit code of 1 to be returned to know if it should fail or continue
            if (results.errorCount !== 0) {
                console.log('[ERROR] gulp preCommit task failed with ' + results.errorCount + ' lint errors');
                console.log('[FAIL] gulp preCommit task failed - exiting with code ' + 1);
                return process.exit(1);
            }
        }));
});

//Tasks to run before code commit is permitted.  If any of these fail, commit cannot complete
gulp.task('preCommit', function () {
    runSequence('test-unit', 'lint', error => {
        //if any error happened in the previous tasks, exit with a code > 0
        if (error) {
            console.log('[ERROR] gulp preCommit task failed', error);
            console.log('[FAIL] gulp preCommit task failed - exiting with code ' + 1);
            return process.exit(1);
        }

        return process.exit(0);
    });
});

//Load any files in the config folder prefixed with seed_ to the local mongo db.  Each file will be a collection named the same as the file name.
//To be used for seeding the local user database for development purposed only.
gulp.task('seed_mongo', function () {
    gulp.src('./src/api/persistence/seed/**')
        .pipe(mongodbData({
            mongoUrl: 'mongodb://localhost:27017/ma000_db',
            dropCollection: true
        }));
});

//Run all tests in the test/unit directory
gulp.task('test-unit', function () {
    return gulp.src(['./test/unit/**/*.js'])
        .pipe(mocha({
            checkLeaks: true,
            bail: true
        }));
});

//Run unit test code coverage report by running all tests in the test/unit directory
gulp.task('test-unit-code-coverage', ['test-unit-code-coverage-setup'], function () {
    return gulp.src('./test/unit/**/*.js', {read: false})
        .pipe(mocha())
        .pipe(istanbul.writeReports({
            'dir': './reports/coverage/unit',
            'reporters': [
                'text',
                'html'
            ]
        }));
});

//Set up for code coverage to watch coverage of all files in the src directory
gulp.task('test-unit-code-coverage-setup', function () {
    return gulp.src(['./src/**/*.js'])
        .pipe(istanbul({includeUntested: true}))
        .pipe(istanbul.hookRequire());
});

// gulp.task('default', ['preCommit']);
gulp.task('watch', function() {
    gulp.watch('./src/**/*.js', ['build']);
})

Таким образом, в проекте есть две команды: сначала выполнить сборку с помощью npm run build, а затем запустить npm. После внесения каждого небольшого изменения я должен снова запустить эти команды, и это каждый раз тратит 5 минут. Я попытался добавить часы в конце, так что есть автоматическая сборка каждый раз, но это не происходит. Пожалуйста, помогите, как или что добавить, так что если есть какие-либо изменения в src, то есть автоматическая сборка. Дайте мне знать, если вам нужен какой-либо другой файл.

0 ответов

Другие вопросы по тегам