有没有办法用@imports编译更少的文件并将它们与Gulp连接,所有这些都在同一个流中?

时间:2014-09-15 22:22:00

标签: gulp gulp-less gulp-sourcemaps gulp-concat

我在我的gulpfile.js中对此进行了分析:

gulp.task('buildStyles', function() { 
  return gulp.src([
    './styles/less/main.less',
    './styles/less/widgets/widgets.less',
    './styles/less/pages/pages.less',
    './styles/less/themes/default.less',
    './styles/less/rtl/rtl.less'
  ])
  .pipe(plumber())
  .pipe(sourcemaps.init())
  .pipe(less())
  .pipe(concat('allmin.css'))
  .pipe(sourcemaps.write('./maps'))
  .pipe(gulp.dest('./dest'));
});

但我总是收到如下信息:

$ gulp buildStyles
[18:46:31] Using gulpfile /Library/WebServer/Documents/qjt2015/trunk/gulpfile.js
[18:46:31] Starting 'buildStyles'...
gulp-sourcemap-write: source file not found:/Library/WebServer/Documents/qjt2015/trunk/styles/less/support-tickets.less
gulp-sourcemap-write: source file not found:/Library/WebServer/Documents/qjt2015/trunk/styles/less/comments.less
gulp-sourcemap-write: source file not found:/Library/WebServer/Documents/qjt2015/trunk/styles/less/article-comments.less
gulp-sourcemap-write: source file not found:/Library/WebServer/Documents/qjt2015/trunk/styles/less/threads.less
gulp-sourcemap-write: source file not found:/Library/WebServer/Documents/qjt2015/trunk/styles/less/chat.less

我在所有较少的文件中使用@imports,并且引用是在消息中看不到的引用。例如,我的widgets.less文件如下:

// ### Bootstrap's variables andmixins
@import "../../../bower_components/bootstrap/less/variables.less";
@import "../../../bower_components/bootstrap/less/mixins.less";
@import '../variables.less';
@import '../mixins.less';

@import './support-tickets.less';
@import './comments.less';
@import './article-comments.less';
@import './threads.less';
@import './chat.less';

我错过了什么吗? 提前,谢谢你的帮助!

1 个答案:

答案 0 :(得分:4)

你只需要为gulp-less指定paths选项,告诉它应该从哪里开始搜索用@import指令指定的文件。

例如,在widgets.less中,它试图找到

  • support-tickets.less
  • comments.less
  • article-comments.less
  • 等。

    Library/WebServer/Documents/qjt2015/trunk/styles/less/中的

    (请参阅您发布的错误消息),但我认为它应该在Library/WebServer/Documents/qjt2015/trunk/styles/less/widgets/中(相对于您的widgets.less文件)

只需像这样设置路径:

gulp.task('buildStyles', function() { 
  return gulp.src([
     // ...
  ])
  // ... other gulp tasks here
  .pipe(less({
     paths: [
       '/Library/WebServer/Documents/qjt2015/trunk/styles/less/',
       '/Library/WebServer/Documents/qjt2015/trunk/styles/less/widgets/',
       '/Library/WebServer/Documents/qjt2015/trunk/styles/less/pages/',
       // add additional paths here for less to find imports in
       // less will tell you which import files it can't find, so simply tell it where to find them.

     ]
  ))
  .pipe(concat('allmin.css'))
  // ...
});

```