【发布时间】:2017-12-24 20:04:58
【问题描述】:
问题
有没有办法为我在我的应用程序中定位的多个平台安装node-sqlite3,而无需为每个目标平台组合运行独立构建?
上下文
在我的 Node.js 应用程序中,我有一个 npm 依赖项 node-sqlite3(GitHub、npm),它包含针对不同平台的不同二进制文件(绑定)。
我的应用面向不同的平台,包括 Windows、Linux 和 macOS(ia32 和 >x64) 和现代 Node 版本:v6、v7 和 v8。该应用没有任何特定于平台的行为。
如果我使用npm install 安装项目的依赖项,node-sqlite3 仅下载当前平台的二进制文件(比如win32、x64、Node v7.10)。
我还有一个 Travis CI 构建配置,用于持续部署和持续集成。我选择Ubuntu Trusty 作为执行构建的主机。
作为构建过程的一部分,应用程序的依赖项由npm install 安装。在部署过程中,构建的应用程序及其依赖项正在打包(存档)并上传到文件托管以供进一步分发。
问题
node-sqlite3 并未针对我需要的所有目标平台安装,而只是针对当前正在使用的平台(用于开发或执行构建)。
可能的解决方案
我可以执行构建和部署:
- 与 Travis - 适用于 Linux 和 macOS
- 使用 AppVeyor - 适用于 Windows
但这看起来开销很大。正如我已经说过的,该应用程序没有任何特定于平台的行为。我相信node-sqlite3 的供应商在我所针对的所有主要平台上都对其进行了测试。
【问题讨论】:
标签: node.js npm cross-platform travis-ci node-sqlite3