## [**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"
}
}
```
- npm
- 基础
- Api
- 安装
- node_modules本地安装与全局安装
- Inspector
- 模块
- hello world
- 使用nodejs开发桌面客户端应用
- Electron
- api
- 使用 Node.js 的 API
- 事件
- 安装
- 调试
- 读取本地文件
- 调用Html5的拖放api
- 官方示例下载
- WebView内嵌窗口
- window.open弹出子窗口及其操作
- BrowserWindow渲染主窗口
- 主进程与渲染进程的通信
- 菜单
- 网络
- 与react结合
- 打包
- 前言
- 对比
- electron-forge
- 打包工具一:electron-packager
- 打包工具二:electron-builder
- Boilerplates样板工程
- 通用配置文档
- NW.js
- 阿斯达岁的
- npm install、npm install --save与npm install --save-dev区别