在安装和构建 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