【发布时间】:2017-08-01 00:55:39
【问题描述】:
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. 在这个本地文件夹中创建文件夹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 构建本地包,无需从 Internet 下载节点头文件和库。
这是一个正确的方法吗?
我在文档中找不到我应该下载 node.lib 并将其放入 Release 目录。
在分析了node-gyp的痕迹和node-gyp的代码后,我决定这样做。
是否可以使用一些 npm_config_xxx 属性设置 node.lib 的位置?
【问题讨论】:
-
这篇文章救了我。谢谢。
-
当你决定更新你的节点版本时不要忘记这一点。花了半个小时把我的头撞在桌子上,因为
>> npm rebuild node-sass没用:D