使用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 pkgname
或pnpm 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会把工程下的所有包的依赖都安装好!