【发布时间】:2020-08-14 00:28:43
【问题描述】:
NPM 是否支持通过 Git URL 将依赖项安装到 repo 中的子文件夹?我查看了文档,似乎没有办法,但我无法明确告知。
我知道它可以,并且我知道如何设置 Git 存储库本身作为依赖项,如下所示:
- (其他文件)
- package.json
但我想做的基本上是使用 monorepo 模式(如 Babel),所以我会有一个类似于这样的文件夹结构:
- 包/
- 包A/
- package.json
- 包B/
- package.json
- 包C/
- package.json
- 包A/
然后可以从同一个 repo 中安装它们,只需引用 packageA、packageB 和 packageC。
我知道另一种方法是让它们都成为一个模块的一部分,然后像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 foryarn中提到了 gitpkg 包也适用于 npm - 我自己没有使用过,也许值得一试。
标签: node.js git npm node-modules