2017-06-14 58 views
-1

背景: 我有3個不同的網址,每環境(開發,測試,正式版)一個,我不希望公開所有URL在客戶端(源代碼)。有條件的JavaScript源代碼

如何才能在客戶端代碼中公開與上下文環境相對應的代碼?

注:據我所知,我需要在構建過程中使用環境變量(我使用node.js)做些事情。但是,我不想觸及與webpack有關的任何東西,因爲我試圖做的是獨立的包,可以在任何應用程序中導入,而不管他們正在使用的框架。 Webpack插件/配置不是一個選項,但如果需要,我可以使用任何npm包。

+0

這是一個Web應用程序,您使用的快遞? – omerowitz

+0

是的這是一個Web應用程序,我使用快遞,但我認爲快遞並不需要我想要做的,因爲它是一個http服務器。 –

+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。您的網址可以從中導出。

0

以下NPM包適合我的要求完全https://www.npmjs.com/package/config,您可以加載基於節點的環境變量NODE_ENV條件的文件,所以當NODE_ENV =發展,文件/config/development.js用於創建構建。你可以使用不同的擴展的配置文件,也可以通過改變繼承人環境變量$ NODE_CONFIG_DIR爲例自定義配置文件夾路徑:

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);