在一系列任务中,Gulp干净无法正常工作

时间:2015-12-08 12:23:06

标签: gulp yii2 composer-php

我正在使用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']); 

1 个答案:

答案 0 :(得分:0)

你应该按顺序运行de bower-del。在我的SkeletonSpa中,我在构建之前遇到了相同的清理问题。这里我有2个任务cleanbuild,其中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插件并实现它; - )