Gez*_*zim 4 javascript build gulp
我有我需要一些源文件,并将它们复制到一饮而尽任务build/premium和build/free,然后从删除一些额外的文件
build/free.
我的尝试是这样做的:
gulp.task("build", ["clean"], function () {
gulp.src(["src/*", "!src/composer.*", "LICENSE"])
.pipe(gulp.dest("build/premium"))
.pipe(del(["build/free/plugins/*", "!build/free/plugins/index.php"]))
.pipe(gulp.dest("build/free"));
});
Run Code Online (Sandbox Code Playgroud)
这会导致错误:
TypeError: dest.on is not a function
at DestroyableTransform.Stream.pipe (stream.js:45:8)
at Gulp.<anonymous> (/Users/gezim/projects/myproj/gulpfile.js:9:6)
Run Code Online (Sandbox Code Playgroud)
如何完成删除端口?有没有更好的方法来做到这一点?
这是一个简单的clean任务实现gulp-del:
var del = require('gulp-del');
gulp.task('clean', function(){
return del(['folderA/js', 'folderA/css', 'folderB/js']);
});
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您可以在构建后调用它(读取"使用构建作为依赖项"):
gulp.task("build", function () {
return gulp.src(['src/*', '!src/composer.*', 'LICENSE'])
.pipe(gulp.dest("build/premium"))
.pipe(gulp.dest("build/free"));
});
gulp.task("complete-build", ["build"] function(){
return del(['build/free/plugins/*', '!build/free/plugins/index.php']);
});
Run Code Online (Sandbox Code Playgroud)
然后调用"complete-build"任务来执行它.说实话,这更像是一个"咕噜"式的问题,但与Gulp合作完成.也许在将build/free文件写入文件夹之前过滤内容的建议更多的是Gulp精神.
根据del@gerl的报告,删除模块已重命名为:
var del = require('del');
gulp.task('clean', function(){
return del(['folderA/js', 'folderA/css', 'folderB/js']);
});
Run Code Online (Sandbox Code Playgroud)
我只会gulp-filter丢弃不应从第二个目标复制的内容。
我将任务的意图解释为希望其中的所有内容都存在于src中build/premium。但是,build/free应排除原来src/plugins包含的所有内容,但仍应包括src/plugins/index.php。
这是一个工作的gulpfile:
var gulp = require("gulp");
var filter = require("gulp-filter");
var del = require("del");
gulp.task("clean", function () {
return del("build");
});
gulp.task("build", ["clean"], function () {
return gulp.src(["src/**", "!src/composer.*", "LICENSE"])
.pipe(gulp.dest("build/premium"))
.pipe(filter(["**", "!plugins/**", "plugins/index.php"]))
.pipe(gulp.dest("build/free"));
});
Run Code Online (Sandbox Code Playgroud)
传递给的模式filter是相对路径。由于gulp.src模式具有src/**它意味着它们相对于src。
还请注意,del它不能直接传递给.pipe()它,因为它会返回一个承诺。它可以像clean任务一样从任务中返回。