事实证明我需要使用gulp-rename
并在“丑化”之前先输出串联文件。这是代码:
var gulp = require('gulp'),
gp_concat = require('gulp-concat'),
gp_rename = require('gulp-rename'),
gp_uglify = require('gulp-uglify');
gulp.task('js-fef', function(){
return gulp.src(['file1.js', 'file2.js', 'file3.js'])
.pipe(gp_concat('concat.js'))
.pipe(gulp.dest('dist'))
.pipe(gp_rename('uglify.js'))
.pipe(gp_uglify())
.pipe(gulp.dest('dist'));
});
gulp.task('default', ['js-fef'], function(){});
来自(哪里grunt
起初有点令人困惑,但现在明白了。我希望它能帮助gulp
noobs.
而且,如果您需要源映射,这里是更新的代码:
var gulp = require('gulp'),
gp_concat = require('gulp-concat'),
gp_rename = require('gulp-rename'),
gp_uglify = require('gulp-uglify'),
gp_sourcemaps = require('gulp-sourcemaps');
gulp.task('js-fef', function(){
return gulp.src(['file1.js', 'file2.js', 'file3.js'])
.pipe(gp_sourcemaps.init())
.pipe(gp_concat('concat.js'))
.pipe(gulp.dest('dist'))
.pipe(gp_rename('uglify.js'))
.pipe(gp_uglify())
.pipe(gp_sourcemaps.write('./'))
.pipe(gulp.dest('dist'));
});
gulp.task('default', ['js-fef'], function(){});
See gulp-sourcemaps有关选项和配置的更多信息。
更新 - 2022 年 2 月
如今,使用 Gulp4 和 Async/Await 功能处理构建任务可能会更容易:
// gulpfile.js
const fs = require('fs/promises');
const concat = require('concat');
const uglify = require('uglify-js');
let files_arr = ['file1.js', 'file2.js', 'file3.js'];
async function myGulpTask()
{
var concat_str,
uglify_str
;
// concat content
concat_str = await concat(files_arr);
// save to file
await fs.writeFile('concat.js', concat_str, 'utf8');
// uglify content
uglify_str = await uglify.minify(concat_str, {mangle:false}).code;
// save to file
await fs.writeFile('uglify.js', uglify_str, 'utf8');
}
module.exports = {
myTask: myGulpTask
};
然后从 CLI:
gulp myTask