这是我正在使用的任务的简化版本:
g = require 'gulp'
$ = require('gulp-load-plugins')()
g.task 'vendor:styles', ->
sass_filter = $.filter('*.scss')
less_filter = $.filter('*.less')
g.src(['vendor/font-awesome-4.2.0/scss/font-awesome.scss', 'vendor/bootstrap-3.2.0/less/bootstrap.less'])
.pipe $.sourcemaps.init()
.pipe(sass_filter).pipe($.sass()).pipe(sass_filter.restore())
.pipe(less_filter).pipe($.less(strictMath: true)).pipe(less_filter.restore())
.pipe $.concat('vendor.css')
.pipe $.sourcemaps.write('./maps')
.pipe g.dest('.tmp/styles/vendor')
(这是Coffeescript,但Javascript几乎相同。如果上面难以解析,我可以提供JS。)
运行上述内容时,gulp-sourcemaps 会抛出:
gulp-sourcemap-write: source file not found:/Users/pikeas/Documents/code/pypjs/crypto/front/merged/vendor/font-awesome-4.2.0/scss/normalize.less
...(repeated x20, for print.less, carousel.less, etc)
换句话说,它在 Font Awesome 目录中寻找 Bootstrap 的文件。我尝试使用 gulp-if 代替 gulp-filter,但同样的错误也失败了。
编写此任务的正确方法是什么?