@lerna/import
将一个包导入到带有提交历史记录的
monorepo
中
安装 lerna 以访问lerna
CLI。
使用
lerna import <path-to-external-repository>
1
将位于<path-to-external-repository>
处的带有提交历史记录的包导入到packages/<directory-name>
中。原始提交作者、日期和消息保存了下来。提交应用于当前分支。
这对于将预先存在的独立的包收集到 Lerna 仓库非常有用。每次提交都修改为相对于包目录进行更改。例如,添加package.json
的提交将改为添加packages/<directory-name>/package.json
。
注意
如果要在新的 lerna 存储库上导入外部存储库,那么一定要记住至少进行一次提交。
# Lerna 起始
git init lerna-repo && cd lerna-repo
npx lerna init
npm install
# 提交一次
git add .
git commit -m "Initial lerna commit" # 如果没有提交会报错
# 引入其他库
npx lerna import <path-to-external-repository>
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
配置项
--flatten
当导入带有冲突合并提交的存储库时,import
命令在尝试应用所有提交时将失败。用户可以使用这个标志来请求“抹平(flat)”历史的导入,也就是说,在每次合并提交时,合并就会被引入。
lerna import ~/Product --flatten
1
--dest
在导入存储库时,可以根据lerna.json
中列出的目录指定目标目录。
lerna import ~/Product --dest=utilities
1
--preserve-commit
每次git
提交都有一位作者和一位提交者(每人都有一个单独的日期)。通常他们是同一个人(和日期),但是因为lerna import
从外部存储库重新创建每个提交,提交者就变成了当前的git
用户(和日期)。这在技术上是正确的,但可能并不可取,例如,在 Github 上,如果作者和提交者是不同的人,它就会同时显示他们,这可能会导致导入提交时的历史/职责出现混乱。
启用该配置项可以保留原始提交者(和提交日期),以避免此类问题。
lerna import ~/Product --preserve-commit
1