node.js - 运行 npm install 时将变量传递给 node-gyp

标签 node.js npm node-gyp

我正在使用 node-gyp创建一个 Node.js addon我的 binding.gyp 包含如下一些变量:

...
"link_settings": {
   "libraries": [
      "-lboost_program_options",
      "-lboost_log",
    ],
    "ldflags": [
       "-L<@(boost_root)/stage/lib",
       "-Wl,-rpath,<@(boost_root)/stage/lib",
     ]
  },
...

(来自 here 的完整 gyp 文件)。我使用 node-gyp configure --boost_root=/PATH/TO/BOOST build 来构建 C++ 源代码。当我运行 npm install 时出现问题,因为它只是调用 node-gyp rebuild 而没有任何参数。

有没有办法做到以下任何一项?

  • 在运行 npm install 时不运行 node-gyp 重建
  • 运行npm install时将参数传递给node-gyp

最佳答案

在与@robertklep 进行长时间讨论后,我发现将路径作为 command line flag 传递也解决了问题:

npm install --boost_path=/PATH/TO/BOOST

然而正如他所提到的,如果另一个包需要我的包并试图将参数传递给它,不知道会发生什么。

更新:

事实证明,如果另一个包使用原始包,也可以应用此解决方案:

npm link /PATH/TO/ORIGINAL_PACKET --boost_path=/PATH/TO/BOOST

或者如果您直接从包管理器安装,现在想通过依赖包安装它:

npm install --boost_path=/PATH/TO/BOOST

关于node.js - 运行 npm install 时将变量传递给 node-gyp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30866663/

相关文章:

node.js - 为 Node gyp 添加包含目录

node.js - Node 串口不适用于 Electron

javascript - 如何使用 nodejs 部署 Angular 应用程序

npm - 包裹失败,css-loader.js : Invalid Version: undefined error

angular - 通过 Homebrew 安装 Angular CLI(或任何节点包)与 NPM 全局安装之间的区别

node.js - 如何取消链接 npm 命令行工具?

node-gyp 安装遇到问题

node.js - Facebook 开发者问题 - 'URL couldn' 待验证。响应与预期挑战不符'

node.js - 无法在node.js上设置代理

javascript - beforeUpdate 似乎没有被调用