我有两个gulp任务:第一个处理缓存+ babel + sourcemaps,另一个将翻译后的文件连接成一个单独的JavaScript文件+源图。
gulp.task('prepare:js', () => {
const babelOptions = {
"presets": [
[
"env",
{ "targets": { "browsers": ["firefox >= 24"]} }
]
]
}
return gulp.src('app/scripts')
.pipe(changed('.tmp/scripts'))
.pipe(sourcemaps.init())
.pipe(babel(babelOptions))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('.tmp/scripts'))
})
gulp.task('package:js', ['prepapre:js'], () => {
return gulp.src(['.tmp/scripts/*.js', '.tmp/scripts/**/*.js'])
.pipe(sourcemaps.init({loadMaps: true}))
.pipe(concat('app.bundle.js'))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('dist/scripts))
})
它几乎可以按照我的意愿运作。剩下的问题是源图。实际上,它会生成一个包含重复信息的单一源图:
app/scripts
)和连接文件之间的一个映射,感谢loadMaps: true
(我想要保留的那个).tmp/scripts
)和连接代码(我想要摆脱的代码)之间的另一个映射。问题是,如果我删除指令.pipe(sourcemaps.init({loadMaps: true}))
,将不再包含第一个源图。
我也可以合并这两个任务,但我不能再使用gulp-changed
了(因为app/scripts
中的文件的任何更改都会触发连接并刷新缓存。)
如何摆脱第二次映射?