本文讨论的是 NW.js 13.x 在 Windows 操作系统的编译过程。使用这一版,主要因为其支持 xp 和 npapi。
NW.js 13.x 的文档在 v0.13.0-beta7,在这里下载
NW.js 本身是一个浏览器的应用(Packaged App),它的实现思路是在每一个 Chromium 稳定发布版的基础上,打上补丁,以支持 Node.js 等功能。下面是 NW.js 打补丁的几个仓库:
| path | repo |
|---|---|
| src/content/nw | https://github.com/nwjs/nw.js |
| src/third_party/node-nw | https://github.com/nwjs/node |
| src/v8 | https://github.com/nwjs/v8 |
准备工作
- 安装
depot_tools - 安装
DirectX SDK
下载代码
1. 创建配置文件
创建一个目录,然后执行下面语句,生成配置文件:
1 | gclient config --name=src https://github.com/nwjs/chromium.src.git@origin/nw13 |
执行完毕后,会在目录里生成 .gclient 文件,编辑该文件,在 custom_deps 部分添加 不下载 的库,这是一些测试代码,体积还是挺大的。
1 | "custom_deps" : { |
2. 下载代码
在命令行窗口中执行
1 | gclient sync --with_branch_heads |
with_branch_heads 表示下载全部分支记录,默认只下载最新的分支记录,由于我们想切换到特定版本 nw13, 所以需要下载分支记录。
3. 复制依赖库
本版本需要手动复制 DirectX SDK,执行以下命令:
1 | mkdir -p $HOME/nwjs/src/third_party/directxsdk/files |
编译
其实,在执行 gclient sync 的最后,会自动执行 runhooks,生成编译配置文件,保存在 out 目录。
为了配置参数方便,可以将生成项目的命令写成批处理,像下面这样:
生成 release 配置
1 | @echo off |
生成 debug 配置
1 | @echo off |
GYP_DEFINES 参数
| 参数 | 说明 |
|---|---|
| clang | |
| nwjs_sdk | |
| enable_nacl | |
| disable_nacl | |
| target_arch | x64 |
| disable_nacl | |
| component | shared_library,static_library |
编译 release 版本
1 | @echo off |
编译 debug 版本
1 | @echo off |
常见问题
1 KickNextTick 未找到
1 | src\third_party\node\src\node.cc(4637): error2039: 'KickNextTick': is not |
解决办法
- 查看当前的 node 分支情况:
git log - 分支上有关于该 bug 的 commit,更新到该 commit:git reset –hard