如何防止node-gyp从internet下载node-headers.tar.gz和node.lib?

时间:2017-03-10 15:50:44

标签: node.js npm node-gyp

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的位置?

2 个答案:

答案 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