首页 > 解决方案 > 带有 npm 包的 git 同步存储库?

问题描述

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

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

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

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

标签: gitnpm

解决方案


据我了解您现在的目标,您希望拥有发布于git的版本的存储库threejs吗?npm

由于我不知道这个git接口npm的问题是如何跟踪npm包版本git

为此,您需要创建自己的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=1package从档案中提取director并剥离第一个路径组件(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

推荐阅读