Gulp を使用して次のことを実行しようとしています:
- 3 つの特定の JavaScript ファイルを取得し、それらを連結して、結果をファイル (concat.js) に保存します。
- この連結されたファイルを uglify/minify し、その結果を別のファイル (uglify.js) に保存します。
これまでのところ、次のコードがあります
var gulp = require('gulp'),
gp_concat = require('gulp-concat'),
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(gp_uglify())
.pipe(gulp.dest('js'));
});
gulp.task('default', ['js-fef'], function(){});
ただし、uglify 操作が機能していないか、何らかの理由でファイルが生成されません。
これを実現するには何をする必要がありますか?
ベストアンサー1
結局、'uglification' の前に連結されたファイルを使用し、出力する必要があったことがわかりました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
。
また、ソースマップが必要な場合は、更新されたコードを以下に示します。
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(){});
見るgulp ソースマップオプションと構成の詳細については、こちらをご覧ください。
更新 - 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