ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## [**electron-forge**](https://github.com/electron-userland/electron-forge) Electron-forge 是 Electron 的一个脚手架,它可以自动生成项目文件 [electron-forge官方使用文档](https://www.electronforge.io/) electron-forge使用了以下包 * [electron-rebuild](https://github.com/electron/electron-rebuild):根据正确的Electron版本自动重新编译本机Node.js模块。 * [electron-packager](https://github.com/electron-userland/electron-packager):自定义并捆绑您的Electron应用程序,以使其可以分发。 >[danger]入门型 最简单的 **Note**: Electron Forge 要求Node版本v10+ 依赖git(必须安装git) [使用electron-forge和cnpm命令来写一个简单的electron桌面应用](https://www.wkwkk.com/article/6ed59095a250f56fdb9f68edbf01b3fd.html) ### **安装electron-forge** 建议是安装成全局,这样方便使用 ``` npm install -g electron-forge ``` ##### **建立项目、运行** 下面的命令在当前目录下建立一个my-project目录,里面就是我们的工程代码了,同时这里指定了使用vue模板,如果不指定的话,默认会使用ES6/7的模板 ``` //建立项目方法1 此方法建立项目太卡,慎重 //如果npm版本>5则推荐使用第二种方法的npx方法 npm i -g @electron-forge/cli electron-forge init my-project --template=vue //运行 //命令没有带路径,表示默认使用当前目录 //cd到项目目录就无需带路径了 cd my-new-app electron-forge start //建立项目方法2 npm版本>=5即可用,无需electron-forge也可用 (推荐) npx create-electron-app my-app 使用这个否则会报下面的错 npx @electron-forge/cli init my-new-app //运行 cd my-app npm start //建立项目方法3 yarn方式 yarn create electron-app my-app cd my-app npm start 或者 yarn start ``` ##### **打包** ``` electron-forge make ``` >[danger]会报错 Electron forge was terminated: You must depend on "electron-prebuilt-compile" in your devDependencies 解决:npx @electron-forge/cli init my-new-app 重新构建项目 这里有两种形式的打包,分别在不同场景下使用 `electron-forge package` 只是打包成一个目录到out目录下,注意这种打包一般用于调试,并不是用于分发 `electron-forge make` 这个才会打出真正的分发包,放在out\\make目录下 两个命令都可以使用--arch 和--platform参数来指定系统结构和平台,但是需要注意的是只能打包你当前机器的平台包,比如你用OSX是无法打出windows平台安装包的;这两个参数不填写的话,默认和当前系统一致 另外,make是用squirrel打出来的包,安装后是放在%localappdata%下的 ***直接打开package.json,命令配置如下*** ![](https://img.kancloud.cn/36/83/3683bb73ae030c986b1605d5e61f7b2c_555x115.png) 打包前需要配置打包参数 打包的主要配置参数在packagerConfig与makes下 forge可能的配置参数如下 ``` { packagerConfig: { ... }, electronRebuildConfig: { ... }, makers: [ ... ], publishers: [ ... ], plugins: [ ... ], hooks: { ... }, buildIdentifier: 'my-build' } ``` **参数详情** * packagerConfig:参考[electron-packager的api](https://github.com/electron-userland/electron-packager/blob/master/docs/api.md) 请注意,您不能覆盖dir, arch, platform,outor electronVersion选项,因为它们是由Electron Forge内部设置的 * electronRebuildConfig:参考[electron-rebuild的api](https://github.com/electron/electron-rebuild#how-can-i-integrate-this-into-grunt--gulp--whatever) * [makers](https://www.electronforge.io/config/makers) * [publishers](https://www.electronforge.io/config/publishers) * [plugins](https://www.electronforge.io/config/plugins) * [hooks](https://www.electronforge.io/configuration#hooks) * [buildIdentifier](https://www.electronforge.io/configuration#build-identifier) 可根据自己喜好,直接配置在package.json或者配置在单独文件再在package.json加载 package.json ``` { "name": "my-app", "version": "0.0.1", "config": { "forge": "./forge.config.js" } } ``` forge.config.js ``` module.exports = { packagerConfig: {}, makers: [ { name: '@electron-forge/maker-zip' } ] } ``` **直接配置实例配置文件的格式** ``` { "name": "my-new-app", "productName": "my-new-app", "version": "1.0.0", "description": "My Electron application description", "main": "src/index.js", "scripts": { "start": "electron-forge start", "package": "electron-forge package", "make": "electron-forge make", "publish": "electron-forge publish", "lint": "echo \"No linting configured\"" }, "keywords": [], "author": { "name": "dash", "email": "dash@163.com" }, "license": "MIT", "config": { "forge": { "packagerConfig": {}, "makers": [ { "name": "@electron-forge/maker-squirrel", "config": { "name": "my_new_app" } }, { "name": "@electron-forge/maker-zip", "platforms": [ "darwin" ] }, { "name": "@electron-forge/maker-deb", "config": {} }, { "name": "@electron-forge/maker-rpm", "config": {} } ] } }, "dependencies": { "electron-squirrel-startup": "^1.0.0" }, "devDependencies": { "@electron-forge/cli": "^6.0.0-beta.47", "@electron-forge/maker-deb": "^6.0.0-beta.47", "@electron-forge/maker-rpm": "^6.0.0-beta.47", "@electron-forge/maker-squirrel": "^6.0.0-beta.47", "@electron-forge/maker-zip": "^6.0.0-beta.47", "electron": "7.1.10" } } ```