【问题标题】:git sync repository with npm package?带有 npm 包的 git 同步存储库?
【发布时间】:2021-03-04 04:36:16
【问题描述】:

所以我正在尝试 Fork threejs 库并针对我的特定用途进行了一些编辑,问题是我只需要 npm 中的文件而不是整个 git 存储库!

有没有办法只从那个 git 派生 NPM 包中存在的文件?我尝试安装 npm 文件并将它们推送到新的存储库,但后来我无法从上游(主 git 存储库)提取更新。

depth=1 克隆整个包仍然是一场噩梦,因为它几乎是 1GB~ 并且随着时间的推移而增长。

所以我正在考虑安装 npm 文件并将它们推送到新存储库,但我想在发布新版本的 npm 时保持新存储库更新(肯定不会忽略我的更改)

【问题讨论】:

  • 我不太确定你的问题是否正确。但是,如果我这样做了,您可能应该将其改写为 如何仅克隆/提取远程 git 存储库的子文件夹,因为您试图仅从该存储库中提取 build directory,对吗?
  • @acran 不仅是构建目录,还有 npm 中的所有内容。并保持从上游拉动的能力
  • 现在这听起来更像是您实际上并不想从 git 克隆,而是只想从 npm 下载捆绑包并跟踪 git 中的版本之间的更改。这更准确吗?否则我还是不太明白你的问题。
  • @acran 是的,这更准确,但问题是如何跟踪这些版本之间的变化?

标签: git npm


【解决方案1】:

据我了解您现在的目标,您希望拥有一个 git 存储库,其中包含threejs 的版本npm上发布?

由于我不知道gitnpm 的接口,这就涉及到问题如何使用git 跟踪npm 包版本?

为此,您需要创建自己的 git 存储库,并将各个发布版本添加为提交。您可以通过下载和提取版本的 tarball 并将它们签入 git 来完成此操作,例如

# use dedicated branch for npm versions
git checkout npm
# remove all files
rm -rf *

# download and extract npm version $version
npm view three@$version dist.tarball | xargs curl -L | tar -zx package/ --strip-components=1

# add all files to git and commit
git add -f .
git commit -m "npm version $version"
  • npm view three@$version dist.tarball: 提供包存档的直接 url
  • xargs curl -L: 下载管道传递的url下的档案
  • tar -zx package/ --strip-components=1:从存档中提取packagedirector并剥离第一个路径组件(package/),即将目录package的内容提取到当前目录中
  • git add -f:添加当前目录中的所有文件 - 即使是忽略的文件 (-f),因为存档可能包含忽略构建文件的 .gitignore 文件。

通过这种方式,您可以遍历 npm 包的所有(相关)版本,为您提供它们在 git 中的差异。您可以使用npm view three@$version versions 获取所有可用版本的列表。

如果您想维护自己对文件的编辑,可以在单独的分支上执行此操作

git checkout private

# do edits
# commit

# merge with latest changes from npm
git merge npm

【讨论】:

  • 所以为了明确这一点,当在 npm 中发布新版本时,我需要用新版本创建一个新分支,然后将它与我的“私人”分支合并到我的编辑中?这不会删除我的编辑,因为新的 npm 版本分支更改被认为比我的分支编辑更新?
  • 你应该有一个分支——比如npm——你将所有版本从npm提交到。这个分支只需要创建一次。当您使用自己的编辑从此分支分叉时,您可以稍后再次签出 npm 以下载并提交新的上游版本。然后,当您将 git merge 它添加到您的私有分支时,它将应用自您合并的版本以来的所有更改并将您的编辑保留/合并到其中 - 假设这可以自动完成而不会发生合并冲突。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-16
  • 1970-01-01
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
  • 2011-09-16
相关资源
最近更新 更多