このブログははてなブログからの移行記事です。
前提
Babel6系でES2015のJSをBrowserifyを使用してコンパイルします。
願い
JSをコンパイルする際、Ajax通信で使用するURIを開発と本番で分けたい場面がありました。
なので以下の様なことがしたい。
let uriPrefix = '/api'; if (process.env.APP_ENV === 'production') { uriPrefix = '/api/production'; } export const apiUri = `${uriPrefix}/get/sushi`;
ただ、普通にやると process.env.APP_ENV
なんてブラウザに存在しないのでundefined
となってしまう。
やり方
Babelのプラグインであるbabel-plugin-transform-inline-environment-variables を使用します。
babel/packages/babel-plugin-transform-inline-environment-variables at master · babel/babel · GitHub
プラグインの導入方法はよしなに。
ひとまず必須なのはプラグインのインストール。以下のコマンドを叩く。
$ npm i babel-plugin-transform-inline-environment-variables --save-dev
以下はGulpを使用した場合の例です。
import gulp from 'gulp'; import browserify from 'browserify'; import source from 'vinyl-source-stream'; gulp.task('js', () => { browserify .transform(babelify, { entries: ['js/app.js'], presets: ['es2015'], plugins: ['transform-inline-environment-variables'] }) .bundle() .pipe(source('main.js')) .pipe(gul.dest('./public/js')); });
こうすることでprocess.env
が参照できるようになります。
ぐう便利!!!