Merge pull request #8319 from oukan/feature/translate-zh-CN
application-distribution to zh-CN
This commit is contained in:
commit
a376d09be5
2 changed files with 124 additions and 31 deletions
|
@ -1,6 +1,8 @@
|
|||
# 应用部署
|
||||
|
||||
为了使用 Electron 部署你的应用程序,你存放应用程序的文件夹需要叫做 `app` 并且需要放在 Electron 的
|
||||
为了使用 Electron 部署你的应用程序,你需要下载 Electron 的[prebuilt
|
||||
binaries](https://github.com/electron/electron/releases)。
|
||||
接下来,你存放应用程序的文件夹需要叫做 `app` 并且需要放在 Electron 的
|
||||
资源文件夹下(在 macOS 中是指 `Electron.app/Contents/Resources/`,在 Linux 和 Windows 中是指 `resources/`)
|
||||
就像这样:
|
||||
|
||||
|
@ -27,7 +29,7 @@ electron/resources/app
|
|||
|
||||
## 将你的应用程序打包成一个文件
|
||||
|
||||
除了通过拷贝所有的资源文件来分发你的应用程序之外,你可以通过打包你的应用程序为一个 [asar](https://github.com/atom/asar) 库文件以避免暴露你的源代码。
|
||||
除了通过拷贝所有的资源文件来分发你的应用程序之外,你可以通过打包你的应用程序为一个 [asar](https://github.com/electron/asar) 库文件以避免暴露你的源代码。
|
||||
|
||||
为了使用一个 `asar` 库文件代替 `app` 文件夹,你需要修改这个库文件的名字为 `app.asar` ,
|
||||
然后将其放到 Electron 的资源文件夹下,然后 Electron 就会试图读取这个库文件并从中启动。
|
||||
|
@ -97,6 +99,13 @@ MyApp.app/Contents
|
|||
|
||||
你可以将 `electron` 改成任意你喜欢的名字。
|
||||
|
||||
## 打包工具
|
||||
|
||||
除了手动打包应用程序,你还可以选择使用第三方打包工具来做这项工作:
|
||||
|
||||
* [electron-builder](https://github.com/electron-userland/electron-builder)
|
||||
* [electron-packager](https://github.com/electron-userland/electron-packager)
|
||||
|
||||
## 通过重编译源代码来更换名称
|
||||
|
||||
通过修改产品名称并重编译源代码来更换 Electron 的名称也是可行的。
|
||||
|
@ -108,3 +117,50 @@ MyApp.app/Contents
|
|||
这些内容 [grunt-build-atom-shell](https://github.com/paulcbetts/grunt-build-atom-shell).
|
||||
|
||||
这个任务会自动的处理编辑 `.gyp` 文件,从源代码进行编译,然后重编译你的应用程序的本地 Node 模块以匹配这个新的可执行文件的名称。
|
||||
|
||||
### 创建一个自定义 Electron 分支
|
||||
|
||||
如果只是为了构建你的 app,你不需要创建一个自定义的 Electron 分支,
|
||||
即使是“生产级”的应用程序。
|
||||
可以使用工具,如 `electron-packager` 或 `electron-builder` 来
|
||||
“重塑” 你的 Electron app。
|
||||
|
||||
当你想直接进入 Electron 来修改 C++ 代码,你需要 fork Electron
|
||||
,不能使用 upstreamed 或者 rejected 官方版本。
|
||||
作为 Electron 的维护者,我们非常希望
|
||||
你的方案能够工作,并尽最大的努力让你的修改
|
||||
进入 Electron 的官方版本,创建自定义分支对你来说更简单,最后,
|
||||
我们感谢你的帮助。
|
||||
|
||||
#### 通过 surf-build 创建一个自定义版本
|
||||
|
||||
1. 通过 npm 下载 [Surf](https://github.com/surf-build/surf):
|
||||
`npm install -g surf-build@latest`
|
||||
|
||||
2. 创建一个新的 S3 bucket 并按照以下结构创建文件夹:
|
||||
|
||||
```
|
||||
- atom-shell/
|
||||
- symbols/
|
||||
- dist/
|
||||
```
|
||||
|
||||
3. 设置以下环境变量:
|
||||
|
||||
* `ELECTRON_GITHUB_TOKEN` - 一个在 GitHub 创建版本的 token
|
||||
* `ELECTRON_S3_ACCESS_KEY`, `ELECTRON_S3_BUCKET`, `ELECTRON_S3_SECRET_KEY` -
|
||||
你将上传 Node.js 的 headers 以及符号的位置
|
||||
* `ELECTRON_RELEASE` - 设置为 `true`,上传部分将运行,不设置
|
||||
和 `surf-build` 只是做 CI-type 的检查,适合每一个运行
|
||||
拉取请求。
|
||||
* `CI` - 设置为 `true` ,否则无效
|
||||
* `GITHUB_TOKEN` - 设置为与 `ELECTRON_GITHUB_TOKEN` 相同
|
||||
* `SURF_TEMP` - 在 Windows 下设置为 `C:\Temp` 来防止路径太长的问题
|
||||
* `TARGET_ARCH` - 设置为 `ia32` 或 `x64`
|
||||
|
||||
4. 在 `script/upload.py`,你_必须_为你的分支(`MYORG/electron`)设置 `ELECTRON_REPO`,
|
||||
尤其如果你本身是一个 Electron 贡献者。
|
||||
|
||||
5. `surf-build -r https://github.com/MYORG/electron -s YOUR_COMMIT -n 'surf-PLATFORM-ARCH'`
|
||||
|
||||
6. 需要很长的时间来等待构建完成
|
||||
|
|
|
@ -2,21 +2,39 @@
|
|||
|
||||
Electron 同样也支持原生模块,但由于和官方的 Node 相比使用了不同的 V8 引擎,如果你想编译原生模块,则需要手动设置 Electron 的 headers 的位置。
|
||||
|
||||
## 原生Node模块的兼容性
|
||||
|
||||
当 Node 开始换新的V8引擎版本时,原生模块可能“坏”掉。为确保一切工作正常,你需要检查你想要使用的原生模块是否被 Electron 内置的 Node 支持。你可以在[这里](https://github.com/electron/electron/releases)查看 Electron 内置的 Node 版本,或者使用 `process.version` (参考:[快速入门](https://github.com/electron/electron/blob/master/docs/tutorial/quick-start.md))查看。
|
||||
|
||||
考虑到 [NAN](https://github.com/nodejs/nan/) 可以使你的开发更容易对多版本 Node 的支持,建议使用它来开发你自己的模块。你也可以使用 [NAN](https://github.com/nodejs/nan/) 来移植旧的模块到新的 Nod e版本,以使它们可以在新的 Electron 下良好工作。
|
||||
|
||||
## 如何安装原生模块
|
||||
|
||||
如下三种方法教你安装原生模块:
|
||||
|
||||
### 最简单方式
|
||||
### 通过 npm 安装
|
||||
|
||||
最简单的方式就是通过 [`electron-rebuild`](https://github.com/paulcbetts/electron-rebuild) 包重新编译原生模块,它帮你自动完成了下载 headers、编译原生模块等步骤:
|
||||
只要设置一些系统环境变量,你就可以通过 `npm` 直接安装原生模块。
|
||||
|
||||
```sh
|
||||
为 Electron 安装所有依赖项的一个例子:
|
||||
|
||||
```bash
|
||||
# Electron 的版本。
|
||||
export npm_config_target=1.2.3
|
||||
# Electron 的系统架构, 值为 ia32 或者 x64。
|
||||
export npm_config_arch=x64
|
||||
export npm_config_target_arch=x64
|
||||
# 下载 Electron 的 headers。
|
||||
export npm_config_disturl=https://atom.io/download/electron
|
||||
# 告诉 node-pre-gyp 是为 Electron 构建。
|
||||
export npm_config_runtime=electron
|
||||
# 告诉 node-pre-gyp 从源代码构建模块。
|
||||
export npm_config_build_from_source=true
|
||||
# 下载所有依赖,并缓存到 ~/.electron-gyp。
|
||||
HOME=~/.electron-gyp npm install
|
||||
```
|
||||
### 下载并重新编译模块
|
||||
|
||||
你可以选择安装其他 Node 项目的模块,通过 [`electron-rebuild`][electron-rebuild] 包
|
||||
重新编译原生模块,它可以识别当前 Electron 版本,帮你自动完成了下载 headers、编译原生模块等步骤。
|
||||
|
||||
一个下载 `electron-rebuild` 并重新编译的例子:
|
||||
|
||||
```bash
|
||||
npm install --save-dev electron-rebuild
|
||||
|
||||
# 每次运行"npm install"时,也运行这条命令
|
||||
|
@ -26,31 +44,50 @@ npm install --save-dev electron-rebuild
|
|||
.\node_modules\.bin\electron-rebuild.cmd
|
||||
```
|
||||
|
||||
### 通过 npm 安装
|
||||
### 手动编译
|
||||
|
||||
你当然也可以通过 `npm` 安装原生模块。大部分步骤和安装普通模块时一样,除了以下一些系统环境变量你需要自己操作:
|
||||
如果你是一个原生模块的开发人员,想在 Electron 中进行测试,
|
||||
你可能要手动编译 Electron 模块。你可以
|
||||
使用 `node-gyp` 直接编译:
|
||||
|
||||
```bash
|
||||
export npm_config_disturl=https://atom.io/download/electron
|
||||
export npm_config_target=0.33.1
|
||||
export npm_config_arch=x64
|
||||
export npm_config_runtime=electron
|
||||
HOME=~/.electron-gyp npm install module-name
|
||||
cd /path-to-module/
|
||||
HOME=~/.electron-gyp node-gyp rebuild --target=1.2.3 --arch=x64 --dist-url=https://atom.io/download/electron
|
||||
```
|
||||
|
||||
### 通过 node-gyp 安装
|
||||
|
||||
你需要告诉 `node-gyp` 去哪下载 Electron 的 headers,以及下载什么版本:
|
||||
|
||||
```bash
|
||||
$ cd /path-to-module/
|
||||
$ HOME=~/.electron-gyp node-gyp rebuild --target=0.29.1 --arch=x64 --dist-url=https://atom.io/download/electron
|
||||
```
|
||||
|
||||
`HOME=~/.electron-gyp` 设置去哪找开发时的 headers。
|
||||
`--target=0.29.1` 设置了 Electron 的版本。
|
||||
`--dist-url=...` 设置了 Electron 的 headers 的下载地址。
|
||||
`--arch=x64` 设置了该模块为适配64位操作系统而编译。
|
||||
|
||||
`--target=0.29.1` 设置了 Electron 的版本
|
||||
## 故障排除
|
||||
|
||||
`--dist-url=...` 设置了 Electron 的 headers 的下载地址
|
||||
如果你安装了一个原生模块并发现它不能工作,你需要检查
|
||||
以下事项:
|
||||
|
||||
`--arch=x64` 设置了该模块为适配64位操作系统而编译
|
||||
* 模块的对应的操作系统和 Electron 对应的操作系统是否匹配(ia32 或 x64)。
|
||||
* 如果升级了 Electron,你通常需要重新编译这些模块。
|
||||
* 当有疑问时,请先执行 `electron-rebuild`。
|
||||
|
||||
## `prebuild` 依赖模块
|
||||
|
||||
[`prebuild`](https://github.com/mafintosh/prebuild) 为多个版本的 Node 和 Electron 提供了一种简单发布预编译二进制原生模块的方法。
|
||||
|
||||
如果为 Electron 提供二进制原生模块,请确保删除
|
||||
`--build-from-source` 和 `npm_config_build_from_source` 环境变量
|
||||
来充分利用预编译的二进制文件。
|
||||
|
||||
## `node-pre-gyp` 依赖模块
|
||||
|
||||
[`node-pre-gyp` 工具][node-pre-gyp] 提供一种部署原生 Node 预编译二进制模块的方法,
|
||||
许多流行的模块都是使用它。
|
||||
|
||||
通常这些模块在 Electron 中工作良好,但有时当 Electron 使用
|
||||
比 Node 新的 V8 版本时,会有 ABI 改变,可能
|
||||
发生错误。因此,一般来说,建议始终从源代码编译原生模块。
|
||||
|
||||
如果你通过 `npm` 的方式安装模块,默认情况下这就完成了,
|
||||
如果没有,你需要传入 `--build-from-source` 给 `npm`, 或者设置
|
||||
`npm_config_build_from_source` 环境变量。
|
||||
|
||||
[electron-rebuild]: https://github.com/paulcbetts/electron-rebuild
|
||||
[node-pre-gyp]: https://github.com/mapbox/node-pre-gyp
|
||||
|
|
Loading…
Reference in a new issue