npm 为不同架构安装node.js包

wrrgggsh  于 2023-08-06  发布在  Node.js
关注(0)|答案(3)|浏览(166)

我需要安装用于不同目标体系结构(Linux x64)的npm包,而不是运行npm的机器(Windows x86)。有没有办法告诉npm install下载其他操作系统/体系结构的软件包?

c90pui9n

c90pui9n1#

大多数本机节点模块使用node-pre-gyp,它使用安装脚本为OS/arch/v8 ABI组合搜索预构建的二进制文件,如果没有可用的二进制文件,则回退到本机构建。
假设你的原生模块使用node-pre-gyp,你可以这样做:

npm i --target_arch=x64 --target_platform=linux

字符串
你会在输出中看到类似这样的东西:

> bcrypt@1.0.3 install /home/user/myProject/node_modules/bcrypt
> node-pre-gyp install --fallback-to-build

[bcrypt] Success: "/home/user/myProject/node_modules/bcrypt/lib/binding/bcrypt_lib.node" is installed via remote


如果找不到预构建的二进制文件,node-pre-gyp将回退到尝试从源代码构建模块。
如果预构建的模块不可下载,也有一种方法可以从自己的镜像中构建和托管它们,但这是一个不同的问题:)

vql8enpb

vql8enpb2#

大多数二进制npm包从源代码编译.node二进制文件。你不能用npm强制交叉编译,但是你可以创建一个postinstall script来重新编译特定的依赖,这个依赖使用--arch标志重新运行node-gyp
"postinstall" : "node-gyp -C node_modules/your-dependency clean configure --arch=x86_64 rebuild"
你需要一个合适的编译器工具链。我不太确定windows的是什么,但可能你最终会使用mingwcygwin

j2cgzkjk

j2cgzkjk3#

如果 Package 是电子的,您可以通过

npm install --arch=x64 electron

字符串
或者是

export npm_config_arch=x64
npm install --arch=x64 electron


https://www.electronjs.org/docs/latest/tutorial/installation上所述。这些是下载实际二进制文件的electron-download包的选项。所以它们只对电子起作用。

相关问题