我正在使用yii2来构建一个Web服务。并帮助我把我使用的所有东西放在一起。我有一个类似于
的文件结构 gulpfile.js
的index.php
基础知识/
-composer.json
-vendor /
使用composer获取所有依赖项后,它们将保存到vendor文件夹中。问题在于,由于某种原因,yii2将bower资产保存在名为bower-asset
的文件夹中,但只有在调用该文件夹bower
时才会起作用。所以我写了这两个任务来帮助我。任务1将bower-asset文件夹的内容复制到同一目录中的bower文件夹中,第二个任务删除bower-asset
文件夹。当任务2从默认任务运行时,我的问题出现了。然后它会返回一个像这样的错误
[15:11:20] Starting 'bower-del'...
events.js:85
throw er; // Unhandled 'error' event
^
Error: ENOENT, lstat '/Users/Me/Documents/mamp/dumb/game/basic/vendor/bower-asset/jquery/dist'
at Error (native)
如果我尝试告诉任务在任务二开始之前等待任务1完成,也会出现
gulp.task('bower-del', ['bower-copy'], function () {
让我感到惊讶的是,如果我自己运行任务2,即gulp bower-del
,则删除文件夹没问题。
为了简单起见,我从gulp文件中执行了其他任务。
这就是我的gulp任务的样子:
// Copies bower-asset into bower folder
gulp.task('bower-copy', function(){
gulp.src('./basic/vendor/bower-asset/**/*')
.pipe(gulp.dest('basic/vendor/bower/'));
});
// Deletes old bower-asset folder
gulp.task('bower-del', function () {
return gulp.src('./basic/vendor/bower-asset/', {read: false})
.pipe(clean());
});
gulp.task('default', ['bower-copy', 'bower-del']);
答案 0 :(得分:0)
你应该按顺序运行de bower-del。在我的SkeletonSpa中,我在构建之前遇到了相同的清理问题。这里我有2个任务clean
和build
,其中build
任务只应在clean
任务完成时运行,例如。它们不应该并行运行。
我的实施如下:
gulp.task('build', (cb) => {
let runSequence = require('run-sequence');
runSequence('clean', ['info', 'styles', 'scripts', 'images', 'copy'], 'todo', cb);
});
gulp.task('clean', ['clear-cache'], () => {
let del = require('del');
let vinylPaths = require('vinyl-paths');
return gulp.src([settings.dist, settings.reports])
.pipe(vinylPaths(del));
});
这样就可以了。只需看一下run-sequence插件并实现它; - )