node-gyp在安装和构建本地模块(如iconv,ref,ffi等)时从Internet下载以下文件:
https://nodejs.org/download/release/v6.10.0/node-v6.10.0-headers.tar.gz
https://nodejs.org/download/release/v6.10.0/win-x86/node.lib
https://nodejs.org/download/release/v6.10.0/win-x64/node.lib
https://nodejs.org/download/release/v6.10.0/SHASUMS256.txt
如何让node-gyp从本地文件夹而不是从Internet使用这些文件?
我找到了以下解决方案:
1.下载https://nodejs.org/download/release/v6.10.0/node-v6.10.0-headers.tar.gz
2.将其打包到某个本地文件夹
3.在此本地文件夹中创建文件夹发布
4.将文件https://nodejs.org/dist/v6.10.0/win-x64/node.lib下载到文件夹Release中
5.在.npmrc中设置属性nodedir,它将指向包含解压缩标题的文件夹:
nodedir = D:\ tools \ node_src \ node-v6.10.0-headers
现在npm安装包,node-gyp构建本机包,而无需从Internet下载节点头和库 这是一种正确的方法吗?
我在文档中找不到我应该下载node.lib并将其放到Release目录中 在分析了node-gyp的跟踪和node-gyp的代码后,我决定这样做 是否可以使用一些npm_config_xxx属性设置node.lib的位置?
答案 0 :(得分:1)
以下为我工作:
# download for private repo, probably you're behind firewall
curl -k -o node-v8.9.4-headers.tar.gz -L https://nexus.com/repository/binaries/node/v8.9.4/node-v8.9.4-headers.tar.gz
# capture the absolute path
TARBALL_PATH=$(pwd)
# configure tarball in npm config
npm config set tarball ${TARBALL_PATH}/node-v8.9.4-headers.tar.gz
# The below command should pass without gyp error
npm install
答案 1 :(得分:0)
正如它在此建议的那样,您可以对node-gyp使用--tarball选项 https://github.com/nodejs/node-gyp/issues/1133