node.js - 如何自动链接本地 npm 包?

标签 node.js npm

我正在构建两个相互依赖的私有(private) npm 包。

说我有:

project
  /my-commons
     package.json :
     {
       name : "my-commons",
       version : "0.0.1"
       ...
     }

  /my-server
     package.json :
     {
       dependencies : {
          "my-commons" : "0.0.1"
       }
     }

我可以使用“npm link”来安装“commons”包。所以任何人愿意 开始在服务器上工作必须做的事情:

  • 结帐项目
  • cd 我的服务器
  • npm 链接 ../my-commons
  • npm 安装

并且在/my-server/node_modules 中添加了指向 ../my-commons 的符号链接(symbolic link),一切正常。

但是有没有办法告诉 npm 'my-commons' 包将总是在那个文件夹中,这样你就可以这样做:

  • 结帐项目
  • cd 我的服务器
  • npm 安装

还是我在这里遗漏了一些明显的东西?

谢谢

最佳答案

也许。

但首先:如果 my-server 需要 my-commons 那么最好将它保存在 my-server/node_modules 中 即使那是多余的。在大多数情况下,最好将模块的依赖项与应用程序的其余部分隔离开。

在那种情况下,npm link 可以在开发过程中使用,当你在 my-commons 上工作并且想要使用 my-服务器,无需npm publish my-commons

在生产中你不会想使用npm link,因为依赖模块将失去对它们最终使用的链接模块版本的控制。如果 my-server 依赖于 my-commons 0.1.0,但是你 npm linked 你的 1.0.1-pre-release 版本my-commons 模块可能会崩溃。

但是,自版本 1.2.10(随 Node 0.8.19 一起提供)以来,NPM 支持对等依赖。 对等依赖项允许您指定 my-server 要求 my-commons 安装在“除”my-server 之外。这不会使您能够在 my-serverrequire("my-commons") 但如果 my-server my-commons 的插件。 更多信息:http://blog.nodejs.org/2013/02/07/peer-dependencies/

最后,既然你说你正在开发私有(private)包:如果安装包给你带来了麻烦,因为你不能将你的包发布到公共(public) NPM 注册中心,有查看指定依赖项的替代方法(git-、http-URL、TGZ 文件):https://docs.npmjs.com/files/package.json#dependencies

关于node.js - 如何自动链接本地 npm 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20499937/

相关文章:

node.js - 无法使用 "npm install"在 Node.js 中安装任何包

mysql - NPM MySql 连接需要在文件中分开

node.js - 无法更新 npm(缺少访问权限)

javascript - 如何获取Node.JS字段值(提交的表单数据)

node.js - 来自 NodeJS 的空 POST 请求?

node.js - 如何使用 node_modules 中本地安装的包中的可执行文件?

npm - 如何在 circleci 2.0 中分步启用 nvm?

mongodb - 如何运行 mongo-express(无需身份验证)?

mongodb string 比 float 占用的空间小

javascript - PhantomJS 更新资源文件路径