Fin*_*inn 13 node.js electron electron-builder
windows系统中的node.js可以在服务器启动前设置环境,如下:
set NODE_ENV=production
Run Code Online (Sandbox Code Playgroud)
该NODE_ENV
参数可以使用 innode.js
或electron
by process.env.NODE_ENV
。
但是当我通过 构建电子时electron-builder
,就像这样:
electron-builder build --windows
Run Code Online (Sandbox Code Playgroud)
如何设置环境变量?
更新:
可能无法将固定的环境变量传递给可执行文件electron-builder
。
可能只能手动加载一个环境文件,打包时修改,或者把参数预置到dev
状态。当没有状态时,它是production
。
如果您想在运行时设置环境变量,您可以手动设置它们或使用其他工具,如dotenv
https://www.npmjs.com/package/dotenv
但最简单的方法是在运行二进制文件时在运行时设置它们。您可以使用批处理脚本(如果是 Windows),例如:
setlocal
set NODE_ENV=production
.\your-binaries.exe
endlocal
Run Code Online (Sandbox Code Playgroud)
注意: setlocal 可防止变量进一步泄漏。
单线版本可能是 set NODE_ENV=production && .\binaries.exe
在 linux 下的工作方式相同:设置变量然后运行。
我发布此内容是希望它对处于我这种情况的其他人有所帮助。我有三个环境(开发、登台和生产),我希望我的 Electron主进程知道它正在哪个环境上运行。
现在,对于开发来说,使用 CLI 向 Electron 内联公开环境变量非常容易:
export NODE_ENV=development && electron desktop/main.js
Run Code Online (Sandbox Code Playgroud)
然后,Electron 的主进程可以像这样访问这个环境变量:
const isDev = process.env.NODE_ENV === 'development';
Run Code Online (Sandbox Code Playgroud)
然而,区分临时环境和生产环境有点棘手。我的登台和生产环境都是使用 打包和部署的electron-builder
,package.json
脚本如下:
"desktop-build": "webpack --config config/webpack/webpack.prod.js && electron-builder --config config/electron.config.js",
"desktop-build-staging": "webpack --config config/webpack/webpack.staging.js && electron-builder --config config/electron.config.js",
Run Code Online (Sandbox Code Playgroud)
注意:上面的 webpack 配置将配置公开给渲染器进程(网站),但不是主进程。
因此,我将环境暴露给 Electron主进程以进行登台和生产的解决方案如下:
通过命令行调用设置NODE_ENV=staging
或:NODE_ENV=production
electron-builder
"desktop-build": "webpack --config config/webpack/webpack.prod.js && electron-builder --config config/electron.config.js",
"desktop-build-staging": "webpack --config config/webpack/webpack.staging.js && electron-builder --config config/electron.config.js",
Run Code Online (Sandbox Code Playgroud)
在我的electron.config.js
文件(配置electron-builder
)中使用extraMetadata
参数(docs)将变量注入我的package.json
:
# Production
export NODE_ENV=production && webpack --config config/webpack/webpack.prod.js && electron-builder --config config/electron.config.js
# Staging
export NODE_ENV=staging && webpack --config config/webpack/webpack.staging.js && electron-builder --config config/electron.config.js
Run Code Online (Sandbox Code Playgroud)
然后你可以从你的 Electron 主进程访问它:
extraMetadata: {
isProduction: Boolean(process.env.NODE_ENV === 'production'),
},
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10969 次 |
最近记录: |