2019年1月8日火曜日

JavaScriptで#ifdef を使う

JavaScriptで#ifdefを使いたい要望はないのだろうか。 私は簡易的なコピーガードをよく入れているので、今回は #ifdef を使ってそれを管理してみようと思った。

StackOverflowでgppなるものが紹介されていたのでそれを使ってみる事にした。 aptで入れられるのもポイントが高い。 上記ページは使い方の説明がちょっと間違っていて、以下のように書くとproductionモードのみで機能する関数を定義できる。
#define release
#ifdef release
  copyGuard();
#else
  console.log(foo);
#endif

以下のコマンドを実行すると、#ifdef 周りを処理してくれたJavaScriptコードを生成してくれる。 あとはこのファイルを普段通り使えば良い。
gpp test.js -Drelease > test.release.js

地味にもう1つハマりポイントがあって、同一ファイルへの書き出しはできない。 以下のように別ファイルに書き出してから戻す必要がある。
gpp test.js -Drelease > test.js.gpp
mv test.js.gpp test.js

使い方がわかれば非常に良い感じに使えるツール。 JavaScript以外の #ifdef に対応していない言語にも使えるので、応用範囲も広い。

0 件のコメント: