オプション
パースオプション
- 
bare_returns(デフォルトfalse) -- トップレベルのreturn文をサポート
- 
html5_comments(デフォルトtrue)
- 
shebang(デフォルトtrue) --#!commandを最初の行としてサポート
- 
spidermonkey(デフォルトfalse) -- Spidermonkey (Mozilla) ASTを受け入れる
圧縮オプション
- 
defaults(デフォルト:true) -- デフォルトで有効になっているほとんどのcompress変換を無効にするには、falseを渡します。少数のcompressオプションを有効にし、残りを無効にする場合に便利です。
- 
arrows(デフォルト:true) -- クラスとオブジェクトリテラルのメソッドは、結果のコードが短くなる場合、アロー関数に変換されます。例:m(){return x}はm:()=>xになります。thisまたはargumentsを使用しない通常のES5関数にこれを実行するには、unsafe_arrowsを参照してください。
- 
arguments(デフォルト:false) -- 可能な限り、arguments[index]を関数パラメータ名に置き換えます。
- 
booleans(デフォルト:true) -- ブールコンテキストのさまざまな最適化、例:!!a ? b : c → a ? b : c
- 
booleans_as_integers(デフォルト:false) -- ブール値を0と1に変換し、ブール値との比較に===と!==の代わりに==と!=を使用します。
- 
collapse_vars(デフォルト:true) -- 副作用を許容し、1回だけ使用される非定数変数を縮小します。
- 
comparisons(デフォルト:true) -- バイナリノードに特定の最適化を適用します。例:!(a <= b) → a > b(unsafe_compsの場合のみ)、バイナリノードの否定を試みます。例:a = !b && !c && !d && !e → a=!(b||c||d||e)など。注:comparisonsはlhs_constantsが有効になっている場合に最適に機能します。
- 
computed_props(デフォルト:true) -- 定数で計算されたプロパティを通常のプロパティに変換します。例:{["computed"]: 1}は{computed: 1}に変換されます。
- 
conditionals(デフォルト:true) --if文と条件式に最適化を適用します。
- 
dead_code(デフォルト:true) -- 到達不可能なコードを削除します。
- 
directives(デフォルト:true) -- 冗長または非標準のディレクティブを削除します。
- 
drop_console(デフォルト:false) --console.*関数の呼び出しを破棄するには、trueを渡します。 consoleの一部のみを破棄する場合は、['log', 'info']のような配列を渡すことができます。これにより、console.log、console.infoのみが破棄されます。
- 
drop_debugger(デフォルト:true) --debugger;文を削除します。
- 
ecma(デフォルト:5) -- ES5コードをより小さいES6+と同等の形式に変換するcompressオプションを有効にするには、2015以上を渡します。
- 
evaluate(デフォルト:true) -- 定数式を評価しようとします。
- 
expression(デフォルト:false) -- ブックマークレットなどで、returnのない終端ステートメントから完了値を保持するには、trueを渡します。
- 
global_defs(デフォルト:{}) -- 条件付きコンパイルを参照してください。
- 
hoist_funs(デフォルト:false) -- 関数宣言を巻き上げます。
- 
hoist_props(デフォルト:true) -- 定数オブジェクトと配列リテラルのプロパティを、一連の制約に従って通常の変数に巻き上げます。例:var o={p:1, q:2}; f(o.p, o.q);はf(1, 2);に変換されます。注:hoist_propsは、mangleが有効になっている場合、compressオプションpassesが2以上に設定されている場合、およびcompressオプションtoplevelが有効になっている場合に最適に機能します。
- 
hoist_vars(デフォルト:false) --var宣言を巻き上げます (これは、一般に出力サイズが大きくなるため、デフォルトではfalseになっています)。
- 
if_return(デフォルト:true) -- if/return および if/continue の最適化
- 
inline(デフォルト:true) -- 単純な/return文を持つ関数の呼び出しをインライン化します。- false--- 0と同じです。
- 0-- インライン化は無効です。
- 1-- 単純な関数をインライン化します。
- 2-- 引数付きの関数をインライン化します。
- 3-- 引数と変数付きの関数をインライン化します。
- true--- 3と同じです。
 
- 
join_vars(デフォルト:true) -- 連続するvar、let、const文を結合します。
- 
keep_classnames(デフォルト:false) -- 圧縮ツールがクラス名を破棄しないようにするには、trueを渡します。その正規表現に一致するクラス名のみを保持するには、正規表現を渡します。keep_classnamesmangleオプションも参照してください。
- 
keep_fargs(デフォルト:true) -- 圧縮ツールが未使用の関数引数を破棄しないようにします。Function.lengthに依存するコードには、これが必要です。
- 
keep_fnames(デフォルト:false) -- 圧縮ツールが関数名を破棄しないようにするには、trueを渡します。その正規表現に一致する関数名のみを保持するには、正規表現を渡します。Function.prototype.nameに依存するコードに役立ちます。keep_fnamesmangleオプションも参照してください。
- 
keep_infinity(デフォルト:false) -- Chromeでパフォーマンスの問題が発生する可能性のあるInfinityが1/0に圧縮されないようにするには、trueを渡します。
- 
lhs_constants(デフォルト:true) -- 定数値をバイナリノードの左側に移動します。例:foo == 42 → 42 == foo
- 
loops(デフォルト:true) -- 条件を静的に決定できる場合の、do、while、forループの最適化。
- 
module(デフォルトfalse) -- ES6モジュールを圧縮する場合は、trueを渡します。厳密モードとtoplevelオプションも暗黙的に指定されます。
- 
negate_iife(デフォルト:true) -- コードジェネレータが挿入する括弧を回避するために、戻り値が破棄される「即時呼び出し関数式」を否定します。
- 
passes(デフォルト:1) -- 圧縮を実行する最大回数。場合によっては、複数回パスすると、さらに圧縮されたコードが生成されます。パスが多いほど時間がかかることに注意してください。
- 
properties(デフォルト:true) -- ドット表記法を使用してプロパティアクセスを書き直します。例:foo["bar"] → foo.bar
- 
pure_funcs(デフォルト:null) -- 名前の配列を渡すことができ、Terserはそれらの関数が副作用を生成しないと想定します。危険:スコープ内で名前が再定義されているかどうかはチェックされません。たとえば、var q = Math.floor(a/b)の場合です。変数qが他の場所で使用されていない場合、Terserはそれを削除しますが、Math.floor(a/b)はそのまま保持し、それが何をするかはわかりません。pure_funcs: [ 'Math.floor' ]を渡して、この関数が副作用を生成しないことを知らせることができます。その場合、ステートメント全体が破棄されます。現在の実装では、いくらかオーバーヘッドが追加されます(圧縮が遅くなります)。
- 
pure_getters(デフォルト:"strict") -- これにtrueを渡すと、Terserはオブジェクトプロパティアクセス(例:foo.barまたはfoo["bar"])に副作用がないと想定します。fooがスローしないことが確実な場合、つまりnullまたはundefinedでない場合にのみ、foo.barを副作用がないと見なすには、"strict"を指定します。
- 
pure_new(デフォルト:false) --new X()に副作用がないと想定するには、trueに設定します。
- 
reduce_vars(デフォルト:true) -- 定数値として割り当てられ、使用される変数の最適化を改善します。
- 
reduce_funcs(デフォルト:true) -- 可能であれば、1回だけ使用される関数をインライン化します。reduce_varsが有効になっている必要があります。このオプションを無効にすると、出力コードのパフォーマンスが向上する場合があります。
- 
sequences(デフォルト:true) -- 連結した単純な文をカンマ演算子を使って結合します。生成される連続したカンマシーケンスの最大数を指定するために正の整数に設定できます。このオプションがtrueに設定されている場合、デフォルトのsequencesの制限は200です。無効にするには、オプションをfalseまたは0に設定します。最小のsequencesの長さは2です。sequencesの値が1は、trueと同等であり、200を意味するものとして扱われます。まれに、デフォルトの sequences 制限値では圧縮時間が非常に長くなる場合があります。そのような場合は、20以下の値を推奨します。
- 
side_effects(デフォルト:true) -- 副作用がなく、結果が使用されない式を削除します。
- 
switches(デフォルト:true) -- 重複を排除し、到達できないswitch分岐を削除します。
- 
toplevel(デフォルト:false) -- トップレベルスコープで参照されていない関数 ("funcs") および/または変数 ("vars") を削除します (デフォルトはfalse、参照されていない関数と変数の両方を削除するにはtrue)。
- 
top_retain(デフォルト:null) -- 特定のトップレベルの関数と変数がunusedで削除されないようにします (配列、カンマ区切り、正規表現、または関数を使用できます。toplevelを暗黙的に指定します)。
- 
typeofs(デフォルト:true) --typeof foo == "undefined"をfoo === void 0に変換します。注: IE10 以前のバージョンでは、既知の問題があるため、この値をfalseに設定することをお勧めします。
- 
unsafe(デフォルト:false) -- 「安全でない」変換を適用します (詳細)。
- 
unsafe_arrows(デフォルト:false) -- 関数本体がthisを参照していない場合、ES5 スタイルの無名関数式をアロー関数に変換します。注: コードがアロー関数にはないprototypeを持つ関数に依存している場合、この変換を実行することは必ずしも安全ではありません。この変換には、ecma圧縮オプションを2015以上に設定する必要があります。
- 
unsafe_comps(デフォルト:false) -- 圧縮を改善するために、<と<=を>と>=に反転します。これは、getやvalueOfなどのメソッドの使用により、2 つのオペランドの少なくとも 1 つが計算値を持つオブジェクトである場合、安全ではない可能性があります。これは、比較のオペランドが切り替えられた後に実行順序が変更される可能性があります。圧縮は、comparisonsとunsafe_compsの両方が true に設定されている場合にのみ機能します。
- 
unsafe_Function(デフォルト:false) --argsとcodeの両方が文字列リテラルの場合、Function(args, code)を圧縮してマングルします。
- 
unsafe_math(デフォルト:false) --2 * x * 3のような数値式を6 * xに最適化します。これは、不正確な浮動小数点数の結果を与える可能性があります。
- 
unsafe_symbols(デフォルト:false) -- ネイティブ Symbol 宣言からキーを削除します。たとえば、Symbol("kDog")はSymbol()になります。
- 
unsafe_methods(デフォルト: false) --{ m: function(){} }を{ m(){} }に変換します。この変換を有効にするには、ecmaを6以上に設定する必要があります。unsafe_methodsが正規表現の場合、正規表現に一致するキーを持つキー/値ペアは簡潔なメソッドに変換されます。注: 有効にした場合、コードが以前の関数をnewしようとすると、「<メソッド名>はコンストラクターではありません」という TypeError が発生するリスクがあります。
- 
unsafe_proto(デフォルト:false) --Array.prototype.slice.call(a)のような式を[].slice.call(a)に最適化します。
- 
unsafe_regexp(デフォルト:false) -- 定数の場合と同じ方法で、変数をRegExp値で置換できるようにします。
- 
unsafe_undefined(デフォルト:false) -- スコープ内にundefinedという名前の変数がある場合、void 0を代入します (変数名はマングルされ、通常は 1 文字に短縮されます)。
- 
unused(デフォルト:true) -- 参照されていない関数と変数を削除します (単純な直接変数代入は、"keep_assign"に設定されていない限り、参照としてカウントされません)。
マングルオプション
- 
eval(デフォルトfalse) --evalまたはwithが使用されているスコープで表示される名前をマングルするには、trueを渡します。
- 
keep_classnames(デフォルトfalse) -- クラス名をマングルしないようにするには、trueを渡します。正規表現を渡すと、その正規表現に一致するクラス名のみが保持されます。keep_classnamescompress オプション も参照してください。
- 
keep_fnames(デフォルトfalse) -- 関数名をマングルしないようにするには、trueを渡します。正規表現を渡すと、その正規表現に一致する関数名のみが保持されます。Function.prototype.nameに依存するコードに役立ちます。keep_fnamescompress オプション も参照してください。
- 
module(デフォルトfalse) -- トップレベルスコープがグローバルスコープではない ES6 モジュールにはtrueを渡します。toplevelを意味し、入力コードは strict モード JS であると想定します。
- 
nth_identifier(デフォルト: 文字頻度分析に基づいて重み付けを行う内部マングラー) -- 順序を n 番目に好ましい (通常は最短の) 識別子に変換するget(n)関数を持つオブジェクトを渡します。必要に応じて、reset()、sort()、およびconsider(chars, delta)を提供して、ソースコードの文字頻度分析を使用することもできます。
- 
reserved(デフォルト[]) -- マングルから除外する必要がある識別子の配列を渡します。例:["foo", "bar"]。
- 
toplevel(デフォルトfalse) -- トップレベルスコープで宣言された名前をマングルするには、trueを渡します。
- 
safari10(デフォルトfalse) -- Safari 10 ループイテレータの バグ「let 変数を 2 回宣言できません」を回避するには、trueを渡します。safari10format オプション も参照してください。
例
// test.js
var globalVar;
function funcName(firstLongName, anotherLongName) {
    var myVariable = firstLongName +  anotherLongName;
}
var code = fs.readFileSync("test.js", "utf8");
await minify(code).code;
// 'function funcName(a,n){}var globalVar;'
await minify(code, { mangle: { reserved: ['firstLongName'] } }).code;
// 'function funcName(firstLongName,a){}var globalVar;'
await minify(code, { mangle: { toplevel: true } }).code;
// 'function n(n,a){}var a;'
プロパティのマングルオプション
- 
builtins(デフォルト:false) — ビルトイン DOM プロパティのマングルを許可するには、trueを使用します。この設定をオーバーライドすることはお勧めしません。
- 
debug(デフォルト:false) — 元の名前を残したまま名前をマングルします。空の文字列""を渡して有効にするか、空でない文字列を渡してデバッグサフィックスを設定します。
- 
keep_quoted(デフォルト:false) — プロパティを引用符で囲む方法 ({"prop": ...}とobj["prop"]) によって、何がマングルされるかを制御します。- "strict"(推奨) --- obj.propはマングルされます。
- false--- obj["prop"]はマングルされます。
- true-- コードの他の場所に- obj["prop"]がない限り、- obj.propはマングルされます。
 
- 
nth_identifer(デフォルト: 文字頻度分析に基づいて重み付けを行う内部マングラー) -- 順序を n 番目に好ましい (通常は最短の) 識別子に変換するget(n)関数を持つオブジェクトを渡します。必要に応じて、reset()、sort()、およびconsider(chars, delta)を提供して、ソースコードの文字頻度分析を使用することもできます。
- 
regex(デフォルト:null) — 正規表現リテラルまたはパターン文字列 を渡して、正規表現に一致するプロパティのみをマングルします。
- 
reserved(デフォルト:[]) —reserved配列にリストされているプロパティ名をマングルしないでください。
- 
undeclared(デフォルト:false) - これらの名前が既知のトップレベル変数のプロパティとしてアクセスされたが、それらの宣言が入力コードに見つからない場合に、それらの名前をマングルします。プロジェクトの一部のみを縮小する場合に役立ちます。詳細については、#397 を参照してください。
フォーマットオプション
これらのオプションは、Terser の出力コードのフォーマットを制御します。以前は「出力オプション」として知られていました。
- 
ascii_only(デフォルトfalse) -- 文字列と正規表現の Unicode 文字をエスケープします (非 ASCII 文字を含むディレクティブが無効になります)。
- 
beautify(デフォルトfalse) -- (非推奨) 出力を美しくするかどうか。レガシーの-bCLI フラグを使用する場合、これはデフォルトで true に設定されます。
- 
braces(デフォルトfalse) -- 本体
- 
comments(デフォルト"some") -- デフォルトでは、"@license"、"@copyright"、"@preserve" を含むか、!で始まる JSDoc スタイルのコメントを保持します。すべてのコメントを保持するにはtrueまたは"all"を渡します。出力のコメントを省略するにはfalseを渡します。正規表現文字列 (例:/^!/) または関数を渡すこともできます。
- 
ecma(デフォルト5) -- 出力に必要な EcmaScript 標準バージョンを設定します。ecmaを2015以上に設定すると、簡略オブジェクトプロパティ (つまり、{a: a}の代わりに{a}) が出力されます。ecmaオプションは、ビューティファイヤの直接制御下でのみ出力を変更します。入力の互換性のない機能は、そのまま出力されます。たとえば、ecma設定を5にしても、最新のコードは ES5 に変換され**ません**。
- 
indent_level(デフォルト4)
- 
indent_start(デフォルト0) -- すべての行の先頭にその数のスペースを付けます。
- 
inline_script(デフォルトtrue) -- 文字列内の HTML コメントと</script>の出現箇所のスラッシュをエスケープします。
- 
keep_numbers(デフォルトfalse) -- 数値リテラルを元のコードのままにします (1000000を1e6に変換するなどの最適化を無効にします)。
- 
keep_quoted_props(デフォルトfalse) -- 有効にすると、オブジェクトリテラルのプロパティ名から引用符が削除されなくなります。
- 
max_line_len(デフォルトfalse) -- 最大行の長さ (縮小されたコードの場合)
- 
preamble(デフォルトnull) -- 渡された場合、文字列である必要があり、文字通り出力の先頭に付加されます。ソースマップはこのテキストに合わせて調整されます。たとえば、ライセンス情報を含むコメントを挿入するために使用できます。
- 
quote_keys(デフォルトfalse) -- リテラルオブジェクトのすべてのキーを引用符で囲むには、trueを渡します。
- 
quote_style(デフォルト0) -- 文字列の優先引用符スタイル (引用符で囲まれたプロパティ名とディレクティブにも影響します)- 0-- 二重引用符を優先し、文字列自体に二重引用符が多い場合は一重引用符に切り替えます。- 0は gzip サイズに最適です。
- 1-- 常に一重引用符を使用します。
- 2-- 常に二重引用符を使用します。
- 3-- 常に元の引用符を使用します。
 
- 
preserve_annotations-- (デフォルトfalse) -- 出力に Terser アノテーション を保持します。
- 
safari10(デフォルトfalse) -- Safari 10/11 await バグ を回避するには、このオプションをtrueに設定します。safari10mangle オプション も参照してください。
- 
semicolons(デフォルトtrue) -- 文をセミコロンで区切ります。falseを渡すと、可能な限りセミコロンの代わりに改行が使用され、縮小されたコードが読みやすくなります (gzip 前のサイズは小さくなる可能性があります。gzip 後のサイズはわずかに大きくなります)。
- 
shebang(デフォルトtrue) -- プリアンブル (bash スクリプト) の shebang#!を保持します。
- 
spidermonkey(デフォルトfalse) -- Spidermonkey (Mozilla) AST を生成します。
- 
webkit(デフォルトfalse) -- WebKit バグの回避策を有効にします。PhantomJS ユーザーはこのオプションをtrueに設定する必要があります。
- 
wrap_iife(デフォルトfalse) -- 即時実行関数式をラップするにはtrueを渡します。詳細は #640 を参照してください。
- 
wrap_func_args(デフォルトtrue) -- 引数として渡される関数式を括弧で囲まない場合はfalseを渡します。詳細は OptimizeJS を参照してください。