当子模块无法构建时,为什么NPM会成功?

时间:2015-11-23 04:00:47

标签: javascript node.js npm kerberos node-gyp

通常在使用npm时,我遇到了似乎没有任何意义的错误 - Visual Studio项目无法构建,构建工具(例如:python.exe / CL.exe)无法在命令行等。

我见过的一些软件包示例未能多次构建:

  • 的Kerberos
  • 节点-GYP
  • bcrypt

这些在npm install期间向控制台发送带有堆栈跟踪等的大错误消息,显然已完全失败;然而,NPM和Larry一样快乐,而我的Javascript应用程序中有9次,并且它的所有依赖项工作正常。

  1. npm install是否使用本地计算机上可用的任何编译器递归重建每个依赖项?

  2. 如果是这样,考虑到即使是简单的软件包也可以拥有大量的依赖项,如果没有安装完整的编程语言和编译器,我怎能做任何事情?

  3. 为什么这些依赖关系失败并不一定意味着我的最终项目将无法使用?

  4. 如果无法构建的依赖项是" ok",为什么还要依赖依赖?

  5. 由于在搜索" npm build failed"等条款时发现的大量资源,我无法找到任何明确的答案。

1 个答案:

答案 0 :(得分:3)

如果这些依赖项实际标记为可选,则

npm将成功。 ws模块就是这样一个例子,它们对两个可编译的插件具有可选的依赖关系。如果他们无法构建,那么ws只使用纯粹的js后备实现。

插件有时作为可选依赖项添加的原因是它们(通常不是)比纯js替代品执行得更快,即使是像UTF-8验证那样“简单”的东西,也可能是XOR的内容。缓冲区。