2015-03-06 2 views
1

\ Привет, ребята, я полностью застрял с этим.gulp watch с babel, а затем pm2 restart

В принципе, я хочу, чтобы мой локальный разработчик мог иметь gulp, чтобы посмотреть мои файлы src js файлов, и преобразовать их в babel и вывести их в папку dist, а затем после этого запустите узел перезапуска pm2, чтобы загрузить последние изменения.

Проблема, с которой я сталкиваюсь, я не могу на всю жизнь понять, как добавить обратный вызов для просмотра, чтобы вызов перезапуска pm2 произошел только после того, как babel сделал свою магию, преобразуя файлы.

var gulp = require("gulp"); 
 
var babel = require("gulp-babel"); 
 
var pm2 = require("pm2"); 
 
var watch = require("gulp-watch"); 
 
var plumber = require("gulp-plumber"); 
 

 
var SRC = "src/**/*js"; 
 
var DIST = "dist/"; 
 

 
function restartPM2() { 
 
    //restart pm2 code in here 
 
} 
 

 
gulp.task("default", function() { 
 
    return gulp.src(SRC) 
 
    .pipe(watch(SRC)) 
 
    .pipe(plumber()) 
 
    .pipe(babel()) 
 
    .pipe(plumber.stop()) 
 
    .pipe(gulp.dest(DIST)); 
 
    // somewhere in here need a call back after babel has transformed 
 
    // the code and saved it to dist/ to then call restartPM2 
 
});

Любая помощь будет принята с благодарностью!

+0

может не просто сделать пм2 смотреть папку сборки? –

+0

Я изначально сделал это, но я получал сумасшедшее количество перезапуска, когда gulp копировал файлы в каталог – Okeydoke

+0

Возможно, немного поздно, но то, что работает для меня для nodemon, - это -d (debounce, delay), возможно, есть такой вариант для pm2? – Zlatko

ответ

6

Во-первых, вы не смотрите правильно. Тогда вы должны держать вещи раздельными. Вот как я хотел бы сделать:

var paths = { 
    babel: './somedir' 
} 

//basic babel task 
gulp.task('babel', function() { 
    return gulp.src(paths.babel) 
    .pipe(babel()) 
    .pipe(gulp.dest('./')) 
}) 

//see below for some links about programmatic pm2 
gulp.task('pm2', function(cb) { 
    pm2.connect(function() { 
    pm2.restart('echo', function() { 
     return cb() 
    }) 
    }) 
}) 

gulp.task('default', ['babel']) //I don't restart pm2 with the default task but you could 

//the watch task 
gulp.task('watch', function() { 
    //their could be more watchers here ofc 
    gulp.watch(paths.babel, ['babel', 'pm2']) 
}) 

Если запустить gulp watch, он будет следить за paths.babel и на изменения, выполнить обе задачи (столпотворение, пм2). Если в этом примере вы выполняете только gulp (или gulp babel), он запустит соответствующую задачу. Вы также можете запустить gulp pm2.

Ressources:

+0

Вы выполняете задачу 'babel', которая будет перекомпилировать все файлы. Интересно, можем ли мы просто баблировать этот конкретный файл? –

+0

Я не понимаю, почему вы не могли – soyuka