読者です 読者をやめる 読者になる 読者になる

Node + Express + EJS で実行環境に応じて出力を変えるには

nodejs

クライアントの JavaScript をRAWコードと圧縮版の指定を切り替えたいのが目的です。
単純に min.js だったら .js に置換するように、Nginx などの Rewrite を使うこともできると思ったんですが、複数のファイルを一つに圧縮しているため、それだけでは満たせませんでした。

ということで、EJS に NODE_ENV に相当するフラグを渡すようにして、切り替えるようにしました。

Express - app.js

app.configure('development', function(){
  app.set('view options', { PRODUCT: false });
});

app.configure('production', function(){
  app.set('view options', { PRODUCT: true });
});

上記のように PRODUCT を「view options」にそれぞれセットします。

<% if (PRODUCT) { -%>
<script src="/js/detail.min.js"></script>
<% } else { -%>
<script src="/js/common.js"></script>
<script src="/js/detail.js"></script>
<% } -%>

common.js と detail.js を合わせて圧縮してのが detail.min.js です。