【问题标题】:NPM Dependency - Folder within a Git Repo?NPM 依赖关系 - Git Repo 中的文件夹?
【发布时间】:2020-08-14 00:28:43
【问题描述】:

NPM 是否支持通过 Git URL 将依赖项安装到 repo 中的子文件夹?我查看了文档,似乎没有办法,但我无法明确告知。

我知道它可以,并且我知道如何设置 Git 存储库本身作为依赖项,如下所示:

  • (其他文件)
  • package.json

但我想做的基本上是使用 monorepo 模式(如 Babel),所以我会有一个类似于这样的文件夹结构:

  • 包/
    • 包A/
      • package.json
    • 包B/
      • package.json
    • 包C/
      • package.json

然后可以从同一个 repo 中安装它们,只需引用 packageApackageBpackageC

我知道另一种方法是让它们都成为一个模块的一部分,然后像package/packageA 一样导入它们,但其中一些在概念上并不是超级相关的,因此不太理想。他们在同一个仓库中的唯一原因是我不希望 NPM 模块仓库聚集在我们的仓库中。

我知道这通常是通过私有 NPM 存储库完成的,但我们目前无权访问,因此希望有替代方案。

有什么想法吗?

【问题讨论】:

  • 你不能有多个同名文件。您将只能使用一个 packages/package.json
  • 抱歉,这是格式错误。 package.json 嵌套在 packageA、B、C 下。我会修复它。
  • npm 将在node_modules 中安装依赖项。您可以在node_modules 中定义子文件夹,但不能在不同的文件夹中安装依赖项。也许你想改用git submodules
  • 不完全。我基本上希望每个 Git 存储库有多个 Node 模块(没有私有存储库)。使用 Git 子模块将是每个 Node 模块的多个 Git 存储库。
  • AFAIK 仍然是 “否”。几年前在issue #2974 中请求了此功能。您可以定位的 npm docs 状态; #<commit-ish>(即特定的 git 提交)或 <semver>(即特定的 git 标签) - 不幸的是,未提及 git repo 中的子文件夹。但是,在 issue #4725 for yarn 中提到了 gitpkg 包也适用于 npm - 我自己没有使用过,也许值得一试。

标签: node.js git npm node-modules


【解决方案1】:

看起来https://gitpkg.now.sh/ 可能是你想要的

查看它生成的链接,它似乎以某种方式充当您的包的代理,因此我不会在关键任务生产代码中使用它,但如果您尝试测试它应该没问题有什么东西在回购之间起作用

【讨论】:

  • 感谢分享,我得去看看。
猜你喜欢
  • 2016-07-09
  • 2016-07-13
  • 2014-11-12
  • 2018-07-23
  • 2014-12-29
  • 1970-01-01
  • 2013-02-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多