我在使用Parcel.js进行构建时尝试公开变量,类似于Webpack DefinePlugin,但我还没有找到如何做到这一点。
在开发中,我希望我的API主机与我的生产主机不同,所以:
//development:
API_URL="http://localhost:8900/"
//production:
API_URL="/"
目前Parcel支持module.hot
开关,我可以滥用它,因为热模块重新加载仅在开发中启用,但是有一个更好的方法是很好的。
我也可以检查window.location.hostname
是localhost
,但这是一种解决方法。
答案 0 :(得分:15)
对于仍在寻求答案的人:
您可以使用Parcel.js的.env文件支持(通过dotenv包),added in 1.5.0 (2018-01-23)。
无需额外配置。只需将.env文件分隔为适当的NODE_ENV
(生产,开发等),您就可以通过process.env.VARIABLE_NAME
访问变量。在您的情况下,您可以这样做:
.env.development
API_URL=http://localhost:8900/
.env.production
API_URL=/
然后根据需要在代码中调用process.env.API_URL
(不需要进一步导入)来使用它。