くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

esbuildでビルド時に変数を解決する(define)

前にesbuildを試してみたけど、
ビルド時にprocess.envとかを解決したいなと思い、
いろいろ調べてみたときの備忘録(*´ω`*)

esbuildのdefineでできるっぽい(*´ω`*)

Defineの使い方

公式の例だとこんな感じ。変数の値を固定したうえで、minifyしてくれる。

$ echo 'hooks = DEBUG && require("hooks")' | esbuild --define:DEBUG=true
hooks = require("hooks");
$ echo 'hooks = DEBUG && require("hooks")' | esbuild --define:DEBUG=false
hooks = false;

JavaScript/TypeScriptだとこんな感じ。

// exbuildの設定
const ctx = await context({
  // ...略
 define: { DEBUG: 'true' },
});

process.envを解決する

process.env.NODE_ENVを解決する場合はこんな感じ。

// exbuildの設定
const ctx = await context({
  // ...略
  define: { 
    "process.env.NODE_ENV": '"production"',
    // or
    "process.env.NODE_ENV": `"${process.env.NODE_ENV}"` 
  },
});

defineはそのまま置き換えるだけなので、
文字列の場合は、"..."という感じで、
ダブルクオーテーションで囲む必要がある。


以上!! esbuild、便利だ。。(*´ω`*)