在 Parceljs 中暴露环境?
Expose Environment in Parceljs?
我试图在使用 Parcel.js, similar to the Webpack DefinePlugin 构建时公开一个变量,但我还没有找到如何去做。
在开发中,我希望我的 API 主机与生产主机不同,因此:
//development:
API_URL="http://localhost:8900/"
//production:
API_URL="/"
目前 Parcel 支持 module.hot
开关,我可能会滥用它,因为热模块重新加载只在开发中启用,但最好有更好的方法。
我也可以检查 window.location.hostname
是否为 localhost
,但这是一种解决方法。
对于仍在寻求答案的任何人:
您可以使用 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
(无需进一步导入)来使用它。
我试图在使用 Parcel.js, similar to the Webpack DefinePlugin 构建时公开一个变量,但我还没有找到如何去做。
在开发中,我希望我的 API 主机与生产主机不同,因此:
//development:
API_URL="http://localhost:8900/"
//production:
API_URL="/"
目前 Parcel 支持 module.hot
开关,我可能会滥用它,因为热模块重新加载只在开发中启用,但最好有更好的方法。
我也可以检查 window.location.hostname
是否为 localhost
,但这是一种解决方法。
对于仍在寻求答案的任何人:
您可以使用 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
(无需进一步导入)来使用它。