2017-06-14 11 views
-1

背景: 私は3つの異なるURLを1つの環境(dev、test、prod)ごとに1つ持っています。クライアントのすべてのURL(ソースコード)を公開したくありません。条件付きのjavascriptソースコード

どのようにコンテキスト内の環境に対応するクライアントコードで公開することができますか?

注:私が理解するように、環境変数を使用してビルドプロセスで何かする必要があります(私はnode.jsを使用しています)。しかし、私は何をしようとしているので、使用しているフレームワークに関係なく、任意のアプリケーションでインポートすることができるスタンドアロンのパッケージですので、私はwebpackに関連するものに触れたくありません。 Webpackプラグイン/設定はオプションではありませんが、必要に応じて任意のnpmパッケージを使用できます。

+0

が、これはWebアプリケーションです、あなたは速達を使用していますか? – omerowitz

+0

はいWebアプリケーションであり、私はexpressを使用していますが、私はhttpサーバであるので、私がやりたいことにexpressは必要ないと思います。 –

+0

express.jsにはNODE_ENVがあります。これはアプリケーションの範囲内の環境変数です。デフォルトのインストールでは、DEBUG用に設定されており、テスト、プロダクションなどに変更することができます。続きを読むhttps://stackoverflow.com/questions/10714315/node-js-express-and-using-development-versus-production -in-app-configureおよびhttps://expressjs.com/en/api.htmlを参照してください。 – omerowitz

答えて

1

ビルドプロセス中に、環境変数を確認して、設定ファイルをコピーすることができます。たとえば、URIを/config/<env>.jsに保存してから、ビルド時に/settings.jsにコピーして名前を変更することができます。あなたのURLはそれからエクスポートすることができます。

0

次のnpmパッケージは自分の要件に完全に合っていますhttps://www.npmjs.com/package/config、ノード環境変数NODE_ENVに基づいて条件ファイルを読み込むことができます。したがって、NODE_ENV =開発時に、ファイル/config/development.jsがビルドの作成に使用されます。あなたも、あなたが相続人の例を、環境変数$ NODE_CONFIG_DIRを変更することで、configフォルダのパスをカスタマイズすることができ、設定ファイルに別の拡張子を使用することができます。

const config = require('config'); 
process.env.$NODE_CONFIG_DIR = './' // relative path ./config 

const url = config.get('url'); 
//if NODE_ENV is development will load the file config/development.js 

console.log(url); 
関連する問題