-1
我在枚舉目錄中的子目錄。對於每個子目錄,我希望應用一些類似少編譯的gulp活動,然後創建特定於該子目錄的輸出文件。如何使用gulp實現這一目標?
我希望吞嚥過程繼續下去,因爲稍後需要執行進一步的轉換步驟。
有人可以幫助我瞭解如何通過「吞嚥管道」中途創建這些文件?
我在枚舉目錄中的子目錄。對於每個子目錄,我希望應用一些類似少編譯的gulp活動,然後創建特定於該子目錄的輸出文件。如何使用gulp實現這一目標?
我希望吞嚥過程繼續下去,因爲稍後需要執行進一步的轉換步驟。
有人可以幫助我瞭解如何通過「吞嚥管道」中途創建這些文件?
這似乎是相當有趣的實現和gulp沒有任何限制。
我會給你詳細的例子,我前一段時間是如何完成這樣的任務的。
假設你有目錄A.子目錄childA,childB和childC包含在directoryA中。所以基本上你的樹結構如下:
directoryA
--childA
--childB
--childC
我一直在尋找一種靈活的解決方案,所以我會建議包括在每個子目錄命名你想運行任務的JSON文件。使用fs您可以訪問這些文件。您還可以使用run-sequence同步執行吞嚥任務。
爲了演示目的,在childA子目錄中放置一個名爲manifest.json的文件。
manifest.json中包含以下聲明:
{
"filesToProccess" : ["./childA/*.js", "./childB/*.js"],
"tasksToRun" :["taskA", "taskB"]
}
最後gulpfile想這樣的:
'use strict';
//dependencies declared into package.json
//install them using npm
var gulp = require('gulp'),
fs = require('fs'),
runSequence = require('run-sequence'),
path = require('path');
//these two array will keep the actions you have included into manifest file.
var filesHolder = [], tasksHolder = [];
gulp.task('taskA', function() {
return gulp.src(filesHolder)
.pipe(whatever)
.pipe(gulp.dest('whatever')); //chailed actions
});
gulp.task('taskB', function() {
return gulp.src(filesHolder)
.pipe(whatever)
.pipe(gulp.dest('whatever'));
});
//a simple utility function to read all subdirectories of directoryA
function getDirectories(srcpath) {
return fs.readdirSync(srcpath).filter(function(file) {
return fs.statSync(path.join(srcpath, file)).isDirectory();
});
}
//finally insert the default gulp task
gulp.task('default', function(){
var manifest;
//map directory's A subdirectories
var availableDirs = getDirectories("./directoryA");
//finally loop the available subdirectories, load each manifest file and
availableDirs.forEach(function(subdir) {
manifest = require("./directoryA/"+subdir+"manifest.json");
filesHolder = manifest.filesToProccess;
tasksHolder = manifest.tasksToRun;
runSequence(tasksHolder , function() {
console.log(" Task ended :" + tasksHolder + " for subdirectory : " + subdir);
});
});
});
這些措施都沒有,似乎對自己特別有挑戰性的;哪一個給你麻煩? – Mathletics