学习用lerna管理你的项目
八月更文第七弹, 开始啦! 🍦
这是我参与8月更文挑战的第7天,说到Lerna很多没接触过的同学可能会想这是什么东西,其实抛开神秘的面纱,它就是一种包管理工具啦~
这里借用官方的描述进行说明,在我们的工作中将大型代码仓库分割成多个独立版本化的软件包package对于代码共享来说非常有用。但是,如果某些更改跨越了多个代码仓库的话将变得很麻烦并且难以跟踪,并且跨越多个代码仓库的测试将迅速变得非常复杂。
为了解决这些(以及许多其它)问题,某些项目会将 代码仓库分割成多个软件包package,并将每个软件包存放到独立的代码仓库中。但是,例如 Babel、 React、Angular、Ember、Meteor、Jest 等项目以及许多其他项目则是在 一个代码仓库中包含了多个软件包package并进行开发。
Lerna 是一种工具,针对 使用 git 和 npm 管理多软件包代码仓库的工作流程进行优化。
下面开始介绍Learn的使用:
起步
Lerna 的官方地址为www.lernajs.cn/
Lerna 的Git仓库地址为github.com/lerna/lerna
命令介绍
Lerna有很多种命令,这里对部分进行举例:
lerna init
初始化项目,创建一个新的lerna库或者是更新lerna版本
- 修改package.json中lerna版本
- 创建lerna.json
lerna bootstrap
自动构建项目,bootstrap作了如下工作
- 为每个包安装依赖
- 链接相互依赖的库到具体的目录
- 执行 npm run prepublish
- 执行 npm run prepare
可以通过 -- 后添加选项, 设置npm cient的参数
lerna bootstrap -- --production --no-optional
也可以在lerna.json中配置
{
...
"npmClient": "yarn",
"npmClientArgs": ["--production", "--no-optional"]
}
lerna ls
列举当前lerna包含的所有项目包
lerna clean
删除各个包下的node_modules
lerna add
给所有包安装依赖(类似npm install)
lerna publish
发布新的版本
开始
初始化
lerna的操作是包含git和npm的,因此项目需要从git上克隆下来,目录如下,仅有一个项目
vue-module-federation-plugin
对此项目执行learn init 操作得到如下结构
packages
-|vue-module-federation-plugin
lerna.json
package.json
提交
创建完成后测试lerna的提交,在publish前,优先对更改项进行commit
提交版本介绍:
- MAJOR
MAJOR表示当前APR的主版本号,它的变化通常意味着APR的巨大的变化,比如体系结构的重新设计,API的重新设计等等,而且这种变化通常会导致APR版本的向前不兼容。 - MINOR MINOR称之为APR的次版本号,它通常只反映了一些较大的更改,比如APR的API的增加等等,但是这些更改并不影响与旧版本源代码和二进制代码之间的兼容性。
- PATCH
PATCH通常称之为补丁版本,通常情况下如果只是对APR函数的修改而不影响API接口的话都会导致PATCH的变化。
项目包创建
在lerna的packages下我们来创建一个新的vue项目包css-store-house ,生成如图所示的目录,这时候我们的项目下就已经有了2个项目包
关联运行
通过lerna我们可以直接对packages的项目进行运行,设置packages如下:
{
"name": "root",
"private": true,
"scripts": {
"dev:css-store-house": "lerna run serve --parallel --scope=css-store-house",
"build:css-store-house": "lerna run build --parallel --scope=css-store-house"
},
"devDependencies": {
"lerna": "^4.0.0"
}
}
执行运行命令npm run dev:css-store-house即可正常运行packages下的css-store-house项目
示例项目地址
总结
lerna的简单学习介绍就到这里,其他功能可以在自己的项目中尝试哦~
本文到此结束,希望对你有帮助 😉