Quiet
  • 主页
  • 归档
  • 分类
  • 标签
  • 链接
  • 关于我

bajiu

  • 主页
  • 归档
  • 分类
  • 标签
  • 链接
  • 关于我
Quiet主题
  • 前端工程化

lerna管理前端packages实践

bajiu
前端

2020-03-01 15:26:27

最近可能要进入公司的electron项目,想着在进入项目之前,先多熟悉熟悉相关的工具链

背景

Lerna 是一个用来优化托管在git、npm上的多package代码库的工作流的一个管理工具,可以让你在主项目下管理多个子项目,从而解决了多个包互相依赖,且发布时需要手动维护多个包的问题。

什么是lerna

lerna到底是什么呢?lerna官网上是这样描述的。

  1. 自动解决packages之间的依赖关系。
  2. 通过git 检测文件改动,自动发布。
  3. 根据git 提交记录,自动生成CHANGELOG

lerna项目看起来是什么样子的呢

my-lerna-repo/
  package.json
  packages/
    package-1/
      package.json
    package-2/
      package.json
lerna 能做什么

Lerna中主要要用到 lerna bootstrap、lerna publish这二个命令

  • lerna bootstrap: 安装依赖
  • lerna publish:发布和更新package
具体命令

lerna bootstrap

引导packages安装各自的依赖,它有–ignore和–scope二个可选参数

它主要做以下几件事:

  1. 为每个package npm install 安装dependencies.
  2. 为packages 中存在相互 dependencies的做Symlink
  3. npm prepublish all bootstrapped packages.

lerna publish

发布当前项目

他创建一个新的release,生成新的版本,执行git commit/tag并发布到npm

  1. 发布项目里的每个模块
  2. 执行lerna updated确定是否需要发布
  3. 假如需要发布 给lerna.json 版本号做自增
  4. 更新package.json里的版本号至最新
  5. 为新版本更新dependencies
  6. 为新版本创建一个git commit 和tag
  7. 发布更新项目到npm
  8. 一次发布所有packages,删除lerna-temp tags和增加tags到latest

    通过在package.json中标记 “private”: true,将使该包不发布

lerna publish –npm-tag=next

当加上这个选项,发布时除了发布到npm,同时也会同步到给定的dist-tag(默认为latest)

这个选项一般用来发布prerelease或beta版

通常,通过npm install my-package这个命令安装的就是latest tag,你可以通过npm install my-package@prerelease来安装prerelease版

lerna.json

{
  "lerna": "2.0.0-beta.18",
  "version": "1.1.3",
  "publishConfig": {
    "ignore": [
      "ignored-file",
      "*.md"
    ]
  },
  "bootstrapConfig": {
    "ignore": "component-*"
  },
  "packages": ["packages/*"]
}

更多参考详细文档

上一篇

electron-vue开发环境内存泄漏问题

下一篇

Markdown 基本语法

©2024 By bajiu.