强制npm install为其他平台安装可选的依赖项

时间:2017-02-22 16:16:17

标签: node.js npm cross-platform npm-install azure-pipelines-build-task

我正在为Visual Studio Team Services构建构建任务。在这个任务中,我使用7zip-bin打包为linux,mac和windows的7zip二进制文件。

这很好,只要我能够将package.json部署到构建服务器,它就可以工作,但是没有......构建任务在构建时包含所有依赖项。

有没有办法可以强迫npm以某种方式下载所有操作系统可选包?或者我是否必须在构建期间自己下载文件并将其解压缩?

现在我正在使用

npm install 7zip-bin --save

结果是:

C:\temp>npm install
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: 7zip-bin-linux@^1.0.3 (node_modules\7zip-bin\node_modules\7zip-bin-linux):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for 7zip-bin-linux@1.0.3: wanted {"os":"linux","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: 7zip-bin-mac@^1.0.1 (node_modules\7zip-bin\node_modules\7zip-bin-mac):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for 7zip-bin-mac@1.0.1: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
当我运行

时,

无法直接安装每个可选包

npm install 7zip-bin-linux --save

在Windows机器上,安装被跳过,我收到EBADPLATFORM错误。

我知道我的机器上不能运行这些,但我需要将它们打包成vsix文件(一个美化的zip),以便我可以在构建任务时使用它们正在这些其他平台上运行。

1 个答案:

答案 0 :(得分:2)

您应该依赖这3个可选包,因为您永远不知道libnvidia-opencl.so.367.57是否会更改它的可选依赖项,您直接使用

例如:

7zip-bin

使用任何一种方法,您都需要运行dependencies: { "7zip-bin-mac": "^1.0.1", "7zip-bin-win": "^2.0.2", "7zip-bin-linux": "^1.0.3" } 来强制安装。