Node + Express + EJS で実行環境に応じて出力を変えるには
クライアントの 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 です。