打包与发布

快速开始

可以使用以下工具自动完成打包nw.js应用进行发布 .

或者可以使用以下步骤手动构建应用 .

准备应用

打包前 , 需要准备所有必要的文件 , 以下是需要检查的信息 , 不可缺少 .

  • [ ] 代码和资源文件
  • [ ] NPM模块 , 可以执行 npm install
  • [ ] [应用中使用的本地模块](Advanced/Use-Native-Node-Modules.md)
  • [ ] [NaCl](Advanced/Use-NaCl-in-nw.js.md)
  • [ ] [已编译代码](Advanced/Protect-JavaScript-Source-Code.md)以及删除原始文件
  • [ ] [配置文件](../api/Manifest-Format.md#icon)中使用的图标

【注意】 警告

nodejs模块在一个平台正常可用不代表所有平台运行都没问题 . 例如 `node-email-templates`能够在Windows和Mac系统通过 `npm install`命令进行安装 . 此外 , 需要python环境 , Windows系统默认不安装 . 

根据经验 , 为了确保不出问题 , 在想要运行应用的每个平台上安装相关的Nodejs模块 , 并进行打包 .

【注意】 注 "文件名和路径"

在大多数Linux系统以及部分Mac OS X系统中 , 文件系统是大小写敏感的 . 既 `test.js`和 `Test.js`是不同的文件 . 确保路径以及文件名使用正确 . 

【注意】 注 "Windows系统中的长路径"

Windows系统中应用中使用的路径最大长度不能超过260个字符 . 如果过长 , 打包过程将会报错 . 该问题通常发生在使用低于3.0版本的NPM安装依赖包的过程 . 为了避免这个问题的发生 , 建议在根目录中构建引用 , 比如 `C:\build\` . 

准备nw.js

应用可以选择不同的nw.js构建方式 , nw.js提供多种 构建方式以便满足不同的需求以及应用大小 . 选择适当的构建方式或者 源码构建

应用重新分配nw.js包含的所有文件 , 除了SDK构建方式包含的 nwjc, payload以及 chromedriver .

打包引用

两种打包方式: 普通文件和ZIP文件

方式 1. 普通文件 (推荐)

Windows和Linux系统 , 可以将应用的文件放到nw.js目录下 , 确保 nw(或者 nw.exe)与 package.json在同级目录下 . 或者将应用文件放入名为 package.nw目录中 , 该目录与 nw(或者 nw.exe)在同级目录下 . 需要 【注意】 , package.json需要在 package.nw目录中 .

Mac系统 , 将应用相关文件放入名为 app.nw中 , 同时将该文件添加到 nwjs.app/Contents/Resources/中 . 同样 , package.json需要在 app.nw中 .

推荐使用普通文件打包方式 .

方式 2. ZIP文件

你可以将应用相关文件打包到名为 package.nw的ZIP文件中 . Windows和Linux系统 , 将 package文件放入与 nw(或者 nw.exe)同级目录中 . Mac系统中 , 将 package.nw文件放入 nwjs.app/Contents/Resources/目录下 .

【注意】 警告 "包过大或包中文件数过多引起的开始加载慢"

运行开始 , nw.js需要加压包内文件到临时目录 , 之后进行加载 . 包过大或包中文件过多会引起开始运行变慢 . 

Windows和Linux系统 , 可以将ZIP文件和 nw(或者 nw.exe)进行合并为一个文件

Windows系统运行命令如下:

copy /b nw.exe+package.nw app.exe

Linux系统运行命令如下:

cat nw app.nw > app && chmod +x app 

系统特性

Windows

nw.exe图标替换工具 , 如 Resource Hacker nw-builder node-winresourcer.

你可以创建一个安装程序完成应用文件的安装 , 如 Windows Installer NSIS Inno Setup.

Linux

应用需要创建 .desktop文件.

创建自解压安装脚本 , 可以使用 shar makeself .

可以通过系统包管理工具发布应用 , 如 apt, yum, pacman等 , 请参考官方文档进行打包 .

Mac OS X

Mac OS X系统中 , 需要修改以下文件:

应用需要进行签名 . 参考 应用签名及安装

参考

查看 wiki获取更多应用打包工具 .