generated at
uglifyify


uglify-jsを使ってjsを圧縮してくれるBrowserifyのtransform
最近はuglify-esの方を使うようだ


ハマりどころ

--keep_fnames オプション
これがないと Function.name を消してしまう
$ browserify --verbose -t babelify -g [ uglifyify --keep_fnames ] src.js -o dest.js
これでuglify-esに渡る
例えばこういうカスタムエラーを宣言した時
error.js
class CustomError extends Error { constructor (message) { super(message) this.message = message this.name = 'CustomError' } }
CustomError.name が省略されてしまう
handle-error.js
try { throw new CustomError('やばい') } catch (err) { switch (err.name) { case CustomError.name: { // ここで捕まえれなくなる } } }
console.log(CustomError.name) すると "r" とかが返ってくる

まあ instanceof を使えばいいんだけど
serverのエラーをserialize-errorでシリアライズしてclientでdeserialize-errorしたobjectすると、 instanceof は使えない

ここまで書いて、deserialize-errorにそういうオプションを付けたらいいのかもしれないという事に気づいたshokai
難しかった
deserialize-errorはsocket.io-requestの下にあるので