前端脚手架开发(四),Lerna

977 阅读3分钟

这是我参与更文挑战的第 18 天,活动详情查看: 更文挑战

前端脚手架开发(四),Lerna

lerna是一个优化基于git+npm的多package项目管理工具

1. Lerna所解决的问题

  • 复杂项目的重复操作,例如:多package的本地link多package的单元测试多package的代码发布,关于这个点,如果看过并实践过[前端脚手架开发,实践出真知]这篇文章的内容的话,可能理解会更加深入

  • 复杂项目的版本一致性问题

    • 发布时的版本一致性
    • 发布后相互依赖版本升级

2. lerna 开发脚手架流程

看这这张图,实践一下吧!创建一个lerna-test-cli

3-1.png

2.1 动手实践

  1. 先创建一个项目文件,例如lerna-test-cli,先用npm init 去初始化你的项目
  2. cnpm i lerna -D安装lerna的相关依赖
  3. npx lerna -v查看一下版本号,看看是否安装成功,然后使用npx lerna init去初始化你的项目,然后会出现一个lerna.json的文件

{
  "packages": [
    "packages/*"
  ],
  "version": "1.0.0"
}

这里值得注意的就一个地方,就是里面的packages,意思就是以后我们在项目当中其他子的package都要放入这里面去管理

  1. 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.jsonname属性如下:


{
	"name":"@username/project-name"
}

username 就是命名空间,是登录账户名。