Licenseコメント残すためのオプション preserveComments が消えた
npm updateしたら
preserveComments
is not a supported option
とか言われた。そんなバカな。
ってわけで調べたら、gulp-uglifyに↓こんなissueが
https://github.com/terinjokes/gulp-uglify/issues/215
https://github.com/terinjokes/gulp-uglify/issues/265
中身を見てみると
「preserveComments が動かないっす」
「gulp-uglify v3.0.0からそのオプション自体消しますんで」
みたないやり取り
なんてこった。
uglifyjs2を踏まえたオプションの書きかたに変更
いままではこう
var uglify = require('gulp-uglify');//プラグイン宣言
gulp.task('script', function(){
gulp.src(src)
.pipe(uglify({preserveComments: 'some'})) // ←これが今回の問題オプション
});
これが動かなくなりました。
gulp-uglify v3.0.0以上からはUglifyJS2の記述を踏まえて
これからはこう↓
var uglify = require('gulp-uglify');//プラグイン宣言
gulp.task('script', function(){
gulp.src(src)
.pipe(uglify({
output:{
comments: /^!/ //正規表現でLicenseコメントの頭によくある/*!を検出
}
})
};
わりとさくっと動いた。よかった。
optionの設定はUglifyJS2を見ると詳細があります。やったぜ!
https://github.com/mishoo/UglifyJS2#minify-options
正規表現の部分を改良すれば/*!以外のライセンスコメントも抽出できるね。
とか思ってたら
https://www.npmjs.com/package/uglify-save-license
ってのがあった。素敵!!
pumpを利用して書く
https://github.com/terinjokes/gulp-uglify#errors
gulp-uglifyでerrorを出力するようにしたからpumpをおすすめします
的なことが書かれてたのでpumpつかって書いてみる。
gulp.task('script', function(callback) {
pump([
gulp.src('assets/js/*.js'),
$.plumber(),
$.concat('all.js'),
uglify(),
gulp.dest('./htdocs/assets/js/')
],
callback
);
});
pipeでつなぐと途中でerrorした場合、そのtaskを抜けるのでエラーが最初の一つしかわからない。
pumpなら記述内をすべて行ってからエラーをまとめて出力してくれるようです。
gulp-uglify、sourcemapやめるってよ
追伸 sourcemapも設定しないでねとのこと。そのうち消えるのかな?
https://github.com/terinjokes/gulp-uglify#options