我正在使用Gulp和gulp uglify和concat来创建生产JS。如何在许可证注释之前添加新行?
示例输出
/*! Version 1 */
function Test1(){}/*! Version 2 */
function Test(){}
期望的输出
/*! Version 1 */
function Test1(){}
/*! Version 2 */
function Test(){}
包含gulp序列的代码
function gulpDeploy(src, fileName, dest){
gulp.src(src)
.pipe(concat(fileName, {
newLine:'\n;'
}))
.pipe(uglify({
preserveComments : 'license'
}))
.pipe(gulp.dest(dest));
}
看起来newLine选项应该这样做,但它什么都不做..
答案 0 :(得分:1)
我非常有兴趣看到仅使用uglify
和concat
的替代答案来执行此操作,但使用gulp-replace
进行的天真修复将是:
var gulp = require('gulp');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var replace = require('gulp-replace');
gulp.task('default', [], function() {
gulp.src('file*.js')
.pipe(concat('output.js', { newLine: '\n;' }))
.pipe(uglify({ preserveComments: 'license' }))
.pipe(replace(/(\/\*\! Version [^*]* \*\/)/g, '\n$1')) // Version-comments to new line
.pipe(replace(/^\s*\r?\n/gm, '')) // Remove empty lines that may get left
.pipe(gulp.dest('./build'));
});
我希望让第一个正则表达式只查找版本注释,这些注释不会在新行的开头启动(因此第二个replace
调用不会需要),但似乎很难让正则表达式工作(因为负面的看起来似乎不起作用,或者我认为你可以使用(?<!^)\/\*\! Version [^*]* \*\/
to do it...)