我需要安装用于不同目标体系结构(Linux x64)的npm包,而不是运行npm的机器(Windows x86)。有没有办法告诉npm install下载其他操作系统/体系结构的软件包?
npm install
c90pui9n1#
大多数本机节点模块使用node-pre-gyp,它使用安装脚本为OS/arch/v8 ABI组合搜索预构建的二进制文件,如果没有可用的二进制文件,则回退到本机构建。假设你的原生模块使用node-pre-gyp,你可以这样做:
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将回退到尝试从源代码构建模块。如果预构建的模块不可下载,也有一种方法可以从自己的镜像中构建和托管它们,但这是一个不同的问题:)
vql8enpb2#
大多数二进制npm包从源代码编译.node二进制文件。你不能用npm强制交叉编译,但是你可以创建一个postinstall script来重新编译特定的依赖,这个依赖使用--arch标志重新运行node-gyp:"postinstall" : "node-gyp -C node_modules/your-dependency clean configure --arch=x86_64 rebuild"个你需要一个合适的编译器工具链。我不太确定windows的是什么,但可能你最终会使用mingw或cygwin。
.node
--arch
node-gyp
"postinstall" : "node-gyp -C node_modules/your-dependency clean configure --arch=x86_64 rebuild"
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包的选项。所以它们只对电子起作用。
3条答案
按热度按时间c90pui9n1#
大多数本机节点模块使用
node-pre-gyp
,它使用安装脚本为OS/arch/v8 ABI组合搜索预构建的二进制文件,如果没有可用的二进制文件,则回退到本机构建。假设你的原生模块使用
node-pre-gyp
,你可以这样做:字符串
你会在输出中看到类似这样的东西:
型
如果找不到预构建的二进制文件,
node-pre-gyp
将回退到尝试从源代码构建模块。如果预构建的模块不可下载,也有一种方法可以从自己的镜像中构建和托管它们,但这是一个不同的问题:)
vql8enpb2#
大多数二进制npm包从源代码编译
.node
二进制文件。你不能用npm强制交叉编译,但是你可以创建一个postinstall script来重新编译特定的依赖,这个依赖使用--arch
标志重新运行node-gyp
:"postinstall" : "node-gyp -C node_modules/your-dependency clean configure --arch=x86_64 rebuild"
个你需要一个合适的编译器工具链。我不太确定windows的是什么,但可能你最终会使用mingw或cygwin。
j2cgzkjk3#
如果 Package 是电子的,您可以通过
字符串
或者是
型
如https://www.electronjs.org/docs/latest/tutorial/installation上所述。这些是下载实际二进制文件的electron-download包的选项。所以它们只对电子起作用。