lerna
项目管理方式默认的模式版本号使用lerna.json文件中的version属性。git
执行lerna publish时,若是代码有更新,会自动更新此版本号的值。即:全部的包公用一个版本号github
使用方式:
lerna init
typescript
容许维护人员独立的增长修改每一个包的版本,每次发布,全部更改的包都会提示输入指定版本号。使用方式:
lerna init --independent
或 修改lerna.json
中的version
值为independent
,可将固定模式改成独立模式运行。npm
lerna
提供一种集中管理package的目录模式,提供了一套自动化管理程序
git init lerna-demo & cd $_
json
npm i -g lerna
bootstrap
lerna init
工具
// 初始化后目录结构 |—— packages // 空目录 |—— lerna.json |—— package.json
lerna.json
{ "npmClient": "yarn", // 执行命令所用的客户端,默认为npm —— 配置后会强制使用最佳实践:能用yarn的用yarn——如lerna bootstap --hoist再也不可用 "command": { // 命令相关配置 "publish": { // 发布时配置 "allowBranch": "master", // 只在master分支执行publish "conventionalCommits": true, // 生成changelog文件 "exact": true, // 准确的依赖项 "ignoreChanges": ["ignored-file", "*.md"], // 发布时忽略的文件 "message": "chore(release): publish" // 发布时的自定义提示消息 }, "bootstrap": { // 安装依赖配置 "ignore": "component-*", // 忽略项 "npmClientArgs": ["--no-package-lock"], // 执行 lerna bootstrap命令时传的参数 "hoist": true }, "version": { "conventionalCommits": true //开启日志:自动生成changLog.md } }, "packages": [ // 指定存放包的位置 "packages/*" ], "version": "0.0.0" // 当前版本号 }
手动修改根目录下package.json
spa
{ "name": "root", "private": true, "workspaces": ["packages/*"], "devDependencies": { "lerna": "^3.22.1" } }
lerna create @demo/cli
.net
lerna create @demo/cli2
日志
yarn workspaces info
// 查看工做区
yarn workspace packageB add packageA
// 给某个package安装依赖yarn workspace package-b add package-a@0.0.0
或larna add package-a --scope=package-b
// 将packageA做为packageB的依赖进行安装// ^ == yarn workspace
安装本地包,第一次必须加上lerna.json
中的版本号(后续必定不要再加版本号),不然,会从 npm.org
远程检索安装
yarn add -W -D typescript
// 在root下安装公用依赖typescriptlerna
发布流程commitizen
是用来格式化git commit message
的工具,它提供了一种问询式的方式去获取所需的提交信息。
cz-lerna-changelog
是专门为Lerna
项目量身定制的提交规范,在问询的过程,会有相似影响哪些 package 的选择
yarn add -D commitizen
yarn add -D cz-lerna-changelog
yarn add -D standard lint-staged
lint-staged
中的staged
是Git
里的概念,表示暂存区,lint-staged
表示只检查并矫正暂存区中的文件。一来提升校验效率,二来能够为老的项目带去巨大的方便。
lerna version
// 上传项目
// 自动实现如下功能