2016-11-14 110 views
1

我想在服務器啓動時運行一些吞吐任務。吞噬任務似乎執行,但他們什麼都不做。 在我server.js:Gulp執行但不執行任何操作

var gulp = require('gulp'); 

self.gulpRun = function(){ 
    require('./tauler/gulpfile.js'); 
    gulp.start('default'); 
}; 

console.log('gulp start'); 
self.gulpRun(); 
console.log('gulp end'); 

在我gulpfile.js:

var gulp = require('gulp'), 
    gutil = require('gulp-util') 
    clean = require('gulp-clean'); 

gulp.task('default', ['clean'], function() { 
    gutil.log('Gulp is running!'); 
    gulp.src('src') 
     .pipe(gulp.dest('public')); 
}); 

gulp.task('clean', function(){ 
    gutil.log('Gulp-clean is running!'); 
    gulp.src('public').pipe(clean()); 
}); 

輸出:

gulp start 
[20:32:33] Gulp-clean is running! 
[20:32:33] Gulp-default is running! 
gulp end 

的rellevant文件系統(之前和之後的代碼運行)如下:

/project-root 
├── server.js 
├── public 
│ └── whatever.html 
└── tauler 
    ├── src 
    │ ├── index.html 
    │ └── ... 
    └── gulpfile.js 

我已經嘗試了「src」和「dest」中的不同組合,如「./public」或「path.join(__ dirname,'public')」。 文件和目錄不會更改。

關於如何進行的任何想法?提前Thnks!

回答

2

最好的辦法是將gulp文件作爲子進程從你的服務器文件中調用,以確保在進程完成後你的RAM將從gulp的東西中清除。

const spawn = require("child_process").spawn; 



const gulp = spawn('gulp', ["default", "--gulpfile", "./tauler/gulpfile.js"], { stdio: 'inherit' }); 

gulp.on('close',() => { 
    console.log("gulp done"); 
}); 

指所有src文件夾中的內容使用

const gulp = require('gulp'); 

gulp.task('default', [], function() { 
    gulp.src('./src/**/*.*') 
     .pipe(gulp.dest('dist')); 
}); 
+0

謝謝!它部分工作(只有乾淨的任務),但文件不是從「src」複製到「公共」,仍然不明白爲什麼它不是以原始形式工作... =/ – orpuig

+0

我已經更新了答案有一個詳細的例子 –