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负责剩下其他文件变动时,进行自动重启,不过配置起来稍嫌麻烦,一般也没必要了。