美文网首页
npm link 和 peerDependencies 的问题

npm link 和 peerDependencies 的问题

作者: jacobbubu | 来源:发表于2016-08-10 13:26 被阅读1891次

    我的项目需要调试某个框架的 plug-in,举例来说, graph-compose-connectiongraph-compose 框架的一个 plug-in,因此我在我的项目中(例如: my-project)对 graph-compose-connection 使用了 npm link,这样我就可以通过随时修改 graph-compose-connection 的代码来调试。

    graph-compose-connection 项目中 peerDependencies 了其宿主 graph-compose,这是很常见的做法,可以让 plug-in 和宿主的依赖不那么严苛。但是这样问题就来了,当执行 my-project 下的代码时,总是会报出找不到 graph-compose 的异常,尽管在 my-project 中已经依赖并安装了 graph-compose

    这个问题的原因在于,Node.JS 模块系统在搜寻依赖模块时,是从当前模块的 node_modules 开始搜索,没找到就去查找父目录的 node_modules,一路向上。但是对于 npm linkgraph-compose-connection,因为是符号链接过去的,其父目录并非是 my-project,于是就找不到了。

    这个问题很早就出现过,然后修复了。但是在 Node.JS v6 又出现了(由于 require 算法的改变),后来经过讨论,通过增加一个命令行参数来解决这个问题: --preserve-symlinks。因此你需要这样执行:

    node  --preserve-symlinks index.js
    # or coffee
    coffee --nodejs --preserve-symlinks index.coffee
    

    详情参见: https://github.com/nodejs/node/pull/6537

    相关文章

      网友评论

          本文标题:npm link 和 peerDependencies 的问题

          本文链接:https://www.haomeiwen.com/subject/tkcjsttx.html