NPM 依赖关系 - Git Repo 中的文件夹?

Posted

技术标签:

【中文标题】NPM 依赖关系 - Git Repo 中的文件夹?【英文标题】:NPM Dependency - Folder within a 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 - 我自己没有使用过,也许值得一试。 【参考方案1】:

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

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

【讨论】:

感谢分享,我得去看看。

以上是关于NPM 依赖关系 - Git Repo 中的文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

AWS CodeBuild 和 CodeCommit 存储库作为 npm 依赖项

npm 错误!代码 ERESOLVE 无法解析依赖树

NPM 安装导致 401 Unauthorized for private repo

在 github repo 上使用 NPM 安装 React 依赖项

是否可以从 p2 repo 解决 maven 插件中的依赖关系

git+ssh 在像 git+ssh://git@github.com/xxx.git 这样的 npm repo 路径中是啥意思