我正在尝试将拼合的JavaScript文件的结果映射到两个不同的位置,但我想先对它们进行一些额外的处理。我遇到的问题是每个额外的位都完全不同。
这是我尝试过的。我希望在将输出保存到app/scripts
时包含源地图,但我希望不包含源地图,但在将其保存到dist/scripts
时会对其进行uglify。
gulp.task('scripts', () => {
return gulp.src('app/scripts.babel/**/*.js')
.pipe($.babel({
presets: ['es2015']
}))
.pipe($.flatten())
.pipe($.if('*.js', $.sourcemaps.init()))
.pipe($.if('*.js', $.sourcemaps.write('.')))
.pipe(gulp.dest('app/scripts'))
.pipe($.uglify())
.pipe(gulp.dest('dist/scripts'));
})
这段代码没有按照我的意愿行事,因为创建源地图的结果会传递给流程的其余部分(除此之外,它实际上是崩溃说Unhandled stream error in pipe
)。我想只使用相同的任务来做这件事。我该怎么做?
答案 0 :(得分:1)
您使用gulp-sourcemaps
的方式完全错误。应在源地图中记录的转换必须在String cumuloDatos1 =
"http://xxxxxxxxxxx:2480/command/mydb/sql/" +
"CREATE%20VERTEX%20V%20SET%20name%20%3D%20%27%20datoAletarorio%27"
和sourcemaps.init()
之间进行。此外gulp-flatten
执行not support sourcemaps。幸运的是,使用gulp-rename
可以达到同样的效果。
您收到该错误的原因是您尝试sourcemaps.write()
源地图文件。因为那些显然不包含有效的JS uglify()
解析器的人会抛出。
解决所有这些问题的方法是简单地将您的流存储在变量中,然后将uglify
存储到两个不同的目的地。但是,由于基础vinyl
files在两个结果流之间共享,因此您需要先使用gulp-clone
克隆它们。否则,相同的文件将在两个目的地中结束。
最后,您使用merge-stream
合并两个结果流,以便您可以从任务中.pipe()
。
return