使用Libsass的默认任务出现Gulp Bower错误&;苏西

使用Libsass的默认任务出现Gulp Bower错误&;苏西,gulp,bower,susy,gulp-sass,Gulp,Bower,Susy,Gulp Sass,当我第一次运行gulp任务(默认)时,sass任务会在Bower包上给出一个错误。更具体地说是关于 错误: Plumber found unhandled error: Error in plugin 'gulp-sass' Message: file to import not found or unreadable: su/utilities Current dir: /Users/Jeroen/sites/gulp/bower_components/susy/

当我第一次运行
gulp
任务(默认)时,
sass
任务会在Bower包上给出一个错误。更具体地说是关于

错误:

Plumber found unhandled error:
   Error in plugin 'gulp-sass'
   Message:
      file to import not found or unreadable: su/utilities
   Current dir: /Users/Jeroen/sites/gulp/bower_components/susy/sass/susy/
Susy bower软件包已成功安装,其信息来自my bower.json文件。但是,当默认任务到达
sass
任务时,它找不到Susy

style.scss

@import "../bower_components/susy/sass/susy";
这仅在我第一次运行
gulp
时发生。
watch
任务在此错误后不会停止/中断,并在之后继续工作。(我可以毫无问题地编译sass)

但看起来有点乱,有什么办法可以防止吗

你可以在这里看到我的整个gulpfile.js:

与此问题无关的关于如何改进gulpfile的提示也很受欢迎。

在这一行中

gulp.task('default', ['bower', 'sass', 'scripts', 'imagemin', 'iconfont', 'watch']);
所有的任务都是并行执行的。如果您没有任何依赖项,这很好。但是,根据您的解释,成功运行
sass
很大程度上取决于成功执行
bower
。在运行
sass
时,
bower
可能尚未完成,因此无法提供所需的文件

要在Gulp3.*中解决这个问题,您需要正确连接依赖项。我建议如下:

// Define plugins
var gulp = require('gulp'),
    gulpLoadPlugins = require('gulp-load-plugins');
    $ = gulpLoadPlugins();

gulp.task('bower', function() {
  return $.bower()
    .pipe(gulp.dest('./bower_components'))
});

// Sass compile + prefix task
gulp.task('sass', ['bower'], function(){
  ...
});



// Default Task
gulp.task('default', ['sass', 'scripts', 'imagemin', 'iconfont']);

// Watch Task
gulp.task('watch', ['default'], function(){
  gulp.watch('sass/**/*.scss', ['sass']);
  gulp.watch('js/*.js', ['scripts']);
  gulp.watch('originals/*', ['imagemin']);
  gulp.watch('icons/*.svg', ['iconfont']);
});
和ruf
gulpwatch
。这将执行所有可以同时并行运行的任务,但bower将在sass之前执行。您可能面临的一个问题是:每次执行
sass
时都要运行
bower
。这就是为什么我们将使用
gulpchanged
来防止重新运行

gulp.task('bower', function() {
  return $.bower()
    .pipe(changed('./bower_components'))
    .pipe(gulp.dest('./bower_components'))
});

希望这有帮助

谢谢,添加任务依赖项可以解决问题。但是,当我在混合中添加
gulpchanged
时,它给出了另一个错误:
TypeError:cannotreadproperty'mtime'of null
。我不知道这个插件,它看起来很有用。所以我要看看你能不能让它工作。谢谢你的帮助!这可能就是为什么改变了的吞咽法不起作用的原因:啊,很公平
gulp newer
可能也是您感兴趣的一个插件: