nodemon
- 监听指定文件,每次编辑完,可以自动重启
- 可以指定延迟自动重启的时间
- 非热加载
- 安装到全局:
npm install -g nodemon
-
package.json
添加一下配置:"scripts": { "start": "nodemon --exec electron .", ///使用nodemon 启动项目 "dev": "nodemon"///把nodemon添加到依赖 },
- 创建
nodemon.json
文件,并添加一下配置:{ "watch": ["*"], ///监视所有文件 "exec": "electron .", "ext": "js,json,html,css", ///包含js,json,html,css文件 "ignore": ["node_modules/","dist/"], ///忽略指定文件夹 "delay": "0",///延迟多少毫秒重启 "restartable": "r" ///快捷短命令。这里的意思是,在终端输入"r",再回车就自动重启。 }
electron-reload
- 自动重启+热更新:
-
渲染进程
的文件变动,仅刷新页面。 -
主进程
的文件变动时,自动重启整个应用。 - 不能指定延迟自动重启的时间
- ⚠️:只在
开发环境
中引用 ,发布环境
要取消 - ⚠️⚠️⚠️:用
vscode
的运行按钮
启动的程序窗口 ,和命令行nom start
启动的窗口,是两个独立的进程。
如果是vscode
的运行按钮
跑的项目,通过electron-reload
的hardResetMethod: 'exit'
重启,会丢失main.js
里所有的状态 。- 所以最好用命令行
npm start
跑项目 - 如果一定要用
vscode
的按钮
跑,要在launch.json
里加上一句:"console": "integratedTerminal"
- 所以最好用命令行
-
- 安装到全局:
npm install -g electron-reload
- 设置当前为
development
环境:
默认情况下,process.env.NODE_ENV 并不会自动设置为 'development'。你需要明确设置它。
"scripts": { "start": "NODE_ENV=development electron ." }
- 在主进程
main.js
引用electron-reload
:
(安装在全局和安装在项目中引用有区别)
// 判断是否在development环境下 if (process.env.NODE_ENV === 'development') { // 如果electron是全局安装,指定electron可执行文件 const electronPath = require('child_process') .execSync('npm root -g') .toString().trim() + '/electron/cli.js'; // 引用全局安装的 electron-reload require('/usr/local/lib/node_modules/electron-reload')(path.join(__dirname), { electron: electronPath, // 指定 electron 可执行文件 hardResetMethod: 'exit', // 使用 'exit' 方式强制重启 ignored: /node_modules|[\/\\]\.///忽略文件 }); }
混合使用
也可以nodemon
和electron-reload
混合使用,electron-reload
只负责当渲染进程
改变时,进行热更新
,nonemon
负责剩下其他文件
变动时,进行自动重启
,不过配置起来稍嫌麻烦,一般也没必要了。