gulp-uglify v3.0.0から preserveComments が消えたので書き方変えたよ

  • 7
    いいね
  • 0
    コメント

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を踏まえたオプションの書きかたに変更

いままではこう

gulpfile.js
var uglify = require('gulp-uglify');//プラグイン宣言
gulp.task('script', function(){
  gulp.src(src)
    .pipe(uglify({preserveComments: 'some'})) // ←これが今回の問題オプション
});

これが動かなくなりました。
gulp-uglify v3.0.0以上からはUglifyJS2の記述を踏まえて
これからはこう↓

gulpfile.js
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つかって書いてみる。

gulpfile.js
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