【发布时间】:2019-12-10 12:12:30
【问题描述】:
背景
我有一个项目被分成几个较小的项目,其中一个主项目下载其他项目作为主项目的依赖项。
我正在使用 Gitlab 在私有存储库中托管我的项目,使用部署令牌允许 npm install 下载它们。
使用 package.json 中的以下格式将依赖项添加到主项目:
git+https://name:token@gitlab.com/group/project.git
问题
在 Windows 上,当我对我的主项目进行 git clone 并运行 npm install 时,它会使用 Git LFS 下载所有资产,但在 Ubuntu 上不会下载资产。如果我检查 Git LFS 跟踪的所有文件的内容,我得到的只是 Git LFS 占位符的信息。我在 Windows 和 Ubuntu 上使用相同的命令和软件版本,但结果不同。
我试过了:
- 在 Windows 和 Ubuntu 上更新到相同版本的 Node(10.16.0) 和 Npm(6.10.2)
- 更新到最新版本的 Node 和 Npm(由于某些依赖项不适用于 12.x,我不得不坚持使用 Node 的 10.x 版本)
- 添加指向存储库的 .lfsconfig 文件,如以下问题中所述:https://github.com/npm/npm/issues/11151
- 将 Git 更新到最新版本(Windows 上为 2.21,Ubuntu 上为 2.22)
当前的解决方法
目前我正在克隆主项目,然后手动将我的依赖项克隆到 node_modules 中,以便它们都是正确的 git 存储库,这样我就可以使用 git lfs pull 了。它可以工作,但它不是应该的工作方式,尤其是因为它在 Windows 上正常工作。
问题
为什么 npm install 对 Ubuntu 和 Windows 的依赖项处理 Git LFS 的方式不同?如何让 npm install 在依赖项上与 Git LFS 一起正常工作,是否有需要更改的设置,例如强制执行 Git LFS 下载?
【问题讨论】:
-
你试过
yarn而不是npm吗? -
我假设 git lfs 安装在 Ubuntu 上,我建议也使用公共 repo 进行测试。如果它与私人回购与公共回购有关,这至少会被淘汰
-
@TarunLalwani 刚刚尝试使用
yarn,结果相同。软件包已下载,但 LFS 资产未下载。我可能会在某个时候尝试私人与公共测试,但部分原因是无法将其设为公共回购,而且设置起来很烦人,而且我累了,我会推迟它。不过感谢您的建议! -
不讨论公共回购作为一个选项,而是更多的调试方向。知道这一点很重要,所以如果你能做到这一点,同时很棒
-
git lfs doc 提到:
'git lfs install' - You'll need to run this in your repository directory, once per repository.git-lfs 是否已安装(系统)并且 git-lfs 是否安装在 repo 中?
标签: node.js ubuntu npm npm-install git-lfs