LoginSignup
9
8

More than 5 years have passed since last update.

UglifyJSでコードの削減

Last updated at Posted at 2014-04-23

UglifyJS2でコードを削減する方法を調べつつ試したのでいくつかメモ。当然ながらgrunt-contrib-uglifyでも同様の事ができる。

-c, --compress

index.js
var a = (true) ? 1 : 2;
$ uglifyjs index.js -c -o index.min.js
index.min.js
var a=1;

--compressを付けて分岐が常に片方しか実行されないようなコードを書くと、実行されない箇所のコードは削除される。

pure_funcs

index.js
(function(global) {

  var _ = global._;

  function require_() {
    _ = require('lodash');
  }
  require_();

  function log_() {
    console.log('log');
  }
  log_();

  _.noop();

}(this));
$ uglifyjs index.js -b -c 'pure_funcs=["require_", "log_"]' -o index.min.js
index.min.js
!function(global) {
    var _ = global._;
    _.noop();
}(this);

--compressのあとにpure_funcsを指定すると、指定された関数が削除される。

-d, --define

index.js
if (typeof __DEBUG__ !== 'undefined') {
  console.log('__DEBUG__');
}

if (__DEBUG__) {
  console.log('__DEBUG__');
}

console.log('Hello, World!');
$ uglifyjs index.js -c -d '__DEBUG__ = void 0' -o index.min.js
index.min.js
console.log("Hello, World!");

--defineで変数を宣言できる。--compressが同時に指定されていると実行されない箇所のコードが削除される。

grunt-contrib-uglify

grunt-contrib-uglifyで指定する場合の設定など。load-grunt-configを使った場合のコードなのでいい感じになんとか。

uglify.coffee
module.exports =

  main:
    files:
      'index.min.js': [
        'index.js'
      ]
    options:
      compress:
        pure_funcs: [
          'require_'
        ]
        global_defs:
          __DEBUG__: undefined
9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8