这是我参与更文挑战的第 18 天,活动详情查看: 更文挑战
前端脚手架开发(四),Lerna
lerna是一个优化基于git+npm的多package项目管理工具
1. Lerna所解决的问题
-
复杂项目的重复操作,例如:
多package的本地link
、多package的单元测试
,多package的代码发布
,关于这个点,如果看过并实践过[前端脚手架开发,实践出真知]这篇文章的内容的话,可能理解会更加深入 -
复杂项目的版本一致性问题
- 发布时的版本一致性
- 发布后相互依赖版本升级
2. lerna 开发脚手架流程
看这这张图,实践一下吧!创建一个lerna-test-cli
2.1 动手实践
- 先创建一个项目文件,例如lerna-test-cli,先用
npm init
去初始化你的项目 cnpm i lerna -D
安装lerna的相关依赖npx lerna -v
查看一下版本号,看看是否安装成功,然后使用npx lerna init
去初始化你的项目,然后会出现一个lerna.json
的文件
{
"packages": [
"packages/*"
],
"version": "1.0.0"
}
这里值得注意的就一个地方,就是里面的packages
,意思就是以后我们在项目当中其他子的package
都要放入这里面去管理
npx lerna create 你的包
,创建一个package包
这里有一个点要特别注意: 就是我们的包都是要发布在npm上去的,所以在创建之前先看看这个包名被注册了没有,最好是在其创建一个组织然后放包,避免和其他用户注册的产生冲突
3. Lerna核心操作
其他常用操作可以npx lerna -h
去查看帮助手册,以下讲重点
3.1 lerna add
- 对所有的
package
安装相关的依赖,npx lerna add <package>[@version] [--dev] [--exact] [--peer]
- 对某个特定的包安装相关依赖,
npx lerna add <package> <特定包的路径名>
,
3.2 lerna link
项目包建立软链,类似npm link,但是很重要的一点是,他是给包有相互引用包进行软链接
3.3 lerna exec
运行任意命令在每个包
3.4 lerna run
运行某个包的某个指令
4. lerna 发布流程
4.1 运行lerna version
这个命令 识别出修改的包 --> 创建新的版本号 --> 修改package.json --> 提交修改 打上版本的tag --> 推送到git上。版本号 遵循 semver
,关于这个请戳这个链接
4.2 lerna changed
列出下次发版lerna publish 要更新的包。
...
xxx-one
xxx-two
lerna success found 2 packages ready to publish
# 俩个改过的包,下次发布publish将发布这俩个
4.3 lerna publish
特点:会打tag,上传git,上传npm。
如果你的包名是带scope的例如:"name": "@xxxx/xxx",那需要在packages.json添加
"publishConfig": {
"access": "public"
}
知识点补充,什么是scope包?
scope
意为范围或作用域,也值命名空间。所以带scope
的包表示包带命名空间。假设待发布包package.json
中name
属性如下:
{
"name":"@username/project-name"
}
username
就是命名空间,是登录账户名。