在安装和构建 native 模块(例如iconv,ref,ffi等)时,node-gyp从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.在此本地文件夹中创建文件夹Release。
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可以构建 native 软件包,而无需从Internet下载节点头和库。
这是正确的方法吗?

我在文档中找不到应该下载node.lib并将其放在Release目录中的信息。
在分析了node-gyp的痕迹和node-gyp的代码之后,我决定这样做。
是否可以使用某些npm_config_xxx属性设置node.lib的位置?

最佳答案

下面为我​​工作:

# 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

10-01 10:58