既存のファイルがない場合にのみ、gulpにファイルを書き込む方法を教えてください。Gulp書き込みファイルが存在しない場合
ベロー溶液はアルファにある腐食4.0のために働く。
// for when gulp 4.0 releases
.pipe(gulp.dest(conf.plugScss.dist, {overwrite: false}))
既存のファイルがない場合にのみ、gulpにファイルを書き込む方法を教えてください。Gulp書き込みファイルが存在しない場合
ベロー溶液はアルファにある腐食4.0のために働く。
// for when gulp 4.0 releases
.pipe(gulp.dest(conf.plugScss.dist, {overwrite: false}))
は一気3.xのには、完全に同等ではありませんが、あなたは同じことを達成するためにgulp-changed
を使用することができます。
gulp-changed
は、通常、宛先フォルダに最後に書き込まれてから変更されたファイルだけを書き込むために使用されます。ただし、カスタムhasChanged
機能を提供することができます。
var gulp = require('gulp');
var changed = require('gulp-changed');
var fs = require('fs');
function compareExistence(stream, cb, sourceFile, targetPath) {
fs.stat(targetPath, function(err, stats) {
if (err) {
stream.push(sourceFile);
}
cb();
});
}
gulp.task('default', function() {
return gulp.src(/*...*/)
.pipe(changed(conf.plugScss.dist, {hasChanged: compareExistence}))
.pipe(gulp.dest(conf.plugScss.dist));
});
私は一口タップして行くことによってそれを解決:あなたのケースでは、ファイルが既にfs.stat()
を使用して存在する場合、関数は何もなく、チェックしないん書くことができます。
conf.plugScss.files.forEach(function (file, index, files)
{
gulp.src(file)
.pipe(rename({
prefix: "_",
extname: ".scss"
}))
.pipe(tap(function (file, t)
{
file.contents = Buffer.concat([
new Buffer('HEADER'),
file.contents
]);
var fileCheck = function(err, stat) {
if (err !== null && err.code == 'ENOENT')
{
fs.writeFile('dist/' + file.path.split('/').reverse()[0], file.contents)
}
return null;
}
fs.stat('dist/' + file.path.split('/').reverse()[0], fileCheck.bind(this));
}));
// for when gulp 4.0 releases
// .pipe(gulp.dest(conf.plugScss.dist, {overwrite: false}))
});
ありがとうございました。私はすでにそれを解決しました。下の私の答えを見てください。しかしそれを公正に保つために、あなたはそれを解決しました。 +1 – dewwwald