2017-06-14 54 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);