Sto aggiungendo watchify
al nostro processo di compilazione ma voglio porre una precondizione a watchify in esecuzione, e cioè che i file che sono stati modificati passano il nostro passaggio di linting (che utilizza ESLint
).Eslint prima dell'esecuzione di watchify
stavo pensando di fare questo:
function runBrowserify(watch){
var babel = babelify.configure({
optional: ['es7.objectRestSpread']
});
var b = browserify({
entries: './app/main.js',
debug: true,
extensions: ['.jsx', '.js'],
cache: {},
packageCache: {},
fullPaths: true
})
.transform(babel);
if(watch) {
// if watch is enable, wrap this bundle inside watchify
b = watchify(b);
b.on('update', function(ids) {
//run the linting step
lint(ids);
//run the watchify bundle step
gutil.log(gutil.colors.blue('watchify'), 'Started');
bundleShare(b);
});
b.on('time', function (time) {
gutil.log(gutil.colors.blue('watchify'), 'Finished', 'after', gutil.colors.magenta(time), gutil.colors.magenta('ms'));
});
}
bundleShare(b);
}
function bundleShare(b) {
b.bundle()
.pipe(source('main.min.js'))
.pipe(gulp.dest('./dist'));
}
function lint(glob) {
return gulp.src(glob)
.pipe(eslint())
.pipe(eslint.format())
.pipe(eslint.failOnError());
}
Il problema è che il passo rilascio di fibre è asincrono in modo da non finire prima che l'accorpamento sarebbe fatto (si getta anche quindi probabilmente ho bisogno di usare plumber
per impedirgli di terminare il passaggio watch
).
Quindi, come potrei fare una precondizione prima di chiamare lo bundleShared
?
Hai capito? – Loknar
no. Devo accontentarmi del fatto che corrono fianco a fianco, quindi a volte mi manca errori ESLint –
Mi chiedo se forse questo potrebbe essere fatto passando una chiusura a watchify.on ('update', func)? https://github.com/substack/watchify Ci proverò qualche volta e ti faccio sapere –