someFolder
内のすべてのファイルを読み取ってから、gulp-inject-string
という固定ファイルにこれらのファイルを挿入することは、この質問の無関係な基準を使用して行います。Gulpタスク:ループ内のストリーム
私が持っているもののいくつかの擬似コード:
var gulp = require('gulp');
var inject = require('gulp-inject-string');
var fs = require("fs");
gulp.task('compile', function() {
\t /* reading the file names in the directory */
\t var fileNames = fs.readdirSync('someFolder', 'utf8');
\t fileNames.forEach(function(fileName) {
\t \t /* getting the whole file content and then removing what
\t \t I don't want to be injected with a regex */
\t \t var wholeFile = fs.readFileSync('someFolder/' + fileName, 'utf8');
\t \t var file = wholeFile.replace(/<!-- COMMENT-WITH-SOME-FIXED-STRING:. * -->[\r\n]/g, '');
\t \t /* now getting into mainFile to inject this file */
\t \t gulp.src('mainFolder/mainFile.html')
\t \t /* injecting the content after it has been processed by the regex exactly where I need it
\t \t (which depends on the fileName I got earlier) */
\t \t .pipe(inject.afterEach('<!-- COMMENT-WITH-SOME-FIXED-STRING+FILENAME: ' + fileName + ' -->', file))
\t \t .pipe(gulp.dest('mainFolder'));
\t });
});
私だけsomeFolder
内の1つのファイルがある場合、これは正常に動作しますが、それ以外の場合は、最後の読み取りファイルを挿入します。私はJavaScriptでの非同期操作で数回行われたが、全く同じ結果を持っていたとして
for(var i...){ (function(i){ /* stream stuff here*/ })(i) }
:
私のような何かをしてループするための共通の内側に無名関数にストリームを吸収しようとしました。
merge-stream
私はまた、fileNames
以上の関数をマッピングして、ストリーム自体を返してからマージを適用してみましたが、同じ結果を再度使用してみました。
ストリームを処理しようとして間違っていますか?
あなただけのファイルの束を一緒にCONCATしようとしていますか?なぜ[gulp-concat](https:// github。co.jp/contra/gulp-concat)? –
@StevenLambertいいえ、私は正規表現といくつかのクリーンアップを実行した後に主要な問題の基準に関係のない 'inject'を使って、プリンターにファイルを注入しています。 – GMaiolo