基于lerna pnpm 搭建一套自己commitlint的前端规范

148 阅读2分钟

使用pnpm原因:扁平化的安装方式减少了node_moudles 体积

npm intstall pnpm

pnpm install lerna -g

npm init/pnpm init 初始化项目 生成package.json

lerna init 初始化lerna.json

为防止我们根目录被当做包发布,我们需要在package.json中添加如下设置

{
    "private": true
}

pnpm本身支持monorepo,不用额外安装包,真是太棒了! 但是每个monorepo的根目录下必须包含pnpm-workspace.yaml文件。 目录下新建pnpm-workspace.yaml文件,内容如下:

packages:  
# all packages in direct subdirs of packages/  
- 'packages/*'

lerna init 初始化init   

pnpm 安装相应的依赖包 :

-w 表示在workspace的根目录下安装而不是当前的目录

pnpm add typescript typedoc tslib ts-node -DW   添加多个依赖项

与安装命令pnpm add pkgname相反的的删除依赖包pnpm rm/remove pkgnamepnpm un/uninstall pkgname

配置scripts 指令

  "scripts": {    "test": "lerna run test",    "init":"pnpm intsall",    "publish": "lerna publish",    "clean":"lerna clean",    "docs:dev": "vuepress dev docs",    "docs:build": "vuepress build docs",    "prepare": "husky install",    "deploy":"bash deploy.sh",    "lint":"markdownlint README.md",    "changelog":"conventional-changelog -p angular -i CHANGELOG.md -s"  },

发布地址配置

"publishConfig": {
  "registry": "https://registry.npmjs.org/"
}

关于创建一份自己commilint 规范的总结

npm install husky 安装husky
husky install 初始化husky
npm install --save-dev @commitlint/config-conventional @commitlint/cli  //安装公认的commit规范的包
add hook 在.husky 中
npx husky add .husky/commit-msg  'npx --no -- commitlint --edit ${1}'
或者使用下面的命令
npm pkg set scripts.commitlint="commitlint --edit"
npx husky add .husky/commit-msg 'npm run commitlint ${1}'
配置符合自己的commilint规范 基于commitlint 包
commitlint.config.js 
基于这个规范
https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/index.js

这样一个cmmitlint hook 就配置完成 当我们git commit 的时候就会被有效的约束

husky install 使 git hooks 钩子可视化 --- `npm install --save-dev @commitlint/config-conventional @commitlint/cli` commit-msg 中添加脚本命名 --- git commit 提交前执行(npx commit --edit $1)--- 执行commitlint 规范(@commitlint/cli)---commitlint 规范配置在commitlint.config.js 继承自packages多包中

子package.json 中 添加依赖

 "devDependencies": {    "conventional-changelog-conventionalcommits": "^6.1.0",
}

使用的时候

pnpm install commitlintliang 
npm install husky 安装husky
husky install 初始化husky
npm install --save-dev @commitlint/config-conventional @commitlint/cli  //安装公认的commit规范的包
add hook 在.husky 中
npx husky add .husky/commit-msg  'npx --no -- commitlint --edit ${1}'
或者使用下面的命令
npm pkg set scripts.commitlint="commitlint --edit"
npx husky add .husky/commit-msg 'npm run commitlint ${1}'
配置符合自己的commilint规范 基于commitlint 包
commitlint.config.js 
  extends 继承commitlintliang 

"preinstall": "npx only-allow pnpm",  指定pnpm 作为唯一的包管理工具

指定包区域

"workspaces": [    "packages/*"  ],

发布后的包使用方式 

npm install @commitlint/cli
pnpm install commitlintliang 

创建husky 添加cmmit-msg 文件 ,调用commitlint进行检测基于commitlintliang规范

#!/usr/bin/env sh. "$(dirname -- "$0")/_/husky.sh"npx commitlint --edit $1

commitlint.config.js

module.exports={    extends:['commitlintliang ']}

为子包添加依赖

lerna add 包名 [--scope=特定的某个包] [--dev]  
lerna bootstrap [--scope=特定的某个包]  
功能和npm install差不多,如果不加scope,lerna会把工程下的所有包的依赖都安装好!