lerna介绍
具体介绍和更多的命令具体请阅读官方文档:lerna
常用命令如下:
## 初始化lerna项目npx lerna init## 创建模块lerna create plugin-one -y ## 默认会在pacakges文件夹下创建子项目## 给所有子项目添加模块lerna add @lzy-plugin/ddd-cqrs## 给指定项目添加模块lerna add @lzy-plugin/mongo-context --scope @lzy-component/*lerna add @lzy-plugin/mongo-context --scope @lzy-project/test## 所有子项目执行命令lerna exec npm run test## 指定子项目执行命令lerna exec "npm uninstall jest -D" --scope @lzy-component/*lerna exec npm install jest --scope @lzy-project/test## 删除所有node_modules,同理,也可以通过--scope指定范围lerna clean## 安装模块,同理,也可以通过--scope指定范围lerna bootstrap## lerna version 指定发布版本## 发布npm包lerna publish
项目演示
因为github因为被墙、DNS被运营商污染,导致github经常无法访问,所以推荐使用其他平台的git远程仓库:
1、gitee
2、阿里云的云效仓库
再推荐一下npm仓库,如果要发布成组织npm包,需要收费。如果你的npm包是在企业内部使用的,可以在网上搜索如何在自己本机上搭建npm仓库服务,也可以直接选择阿里云提供的npm仓库(免费的)
1、创建git仓库
代码仓库选择使用阿里云提供的packages代码仓库,该代码仓库是免费的,且面向团队内部开发的项目
1)创建代码分组
2)创建代码仓库
输入完代码库名称后直接点击确定,默认配置即可。
3)查看连接信息
2、创建npm仓库
这里选择使用阿里云提供packages制品仓库
1)创建新的企业
2)获取npm仓库的连接信息

这里就能看到我们npm仓库的链接地址,以及阿里云帮我们随机生成的用户名和密码,接下来会用到
3、创建项目
//创建项目目录mkdir lerna-yarn-demo && cd lerna-yarn-demo//初始化为lerna项目npx lerna init## 接下来把代码上传代码仓库## 如果是第一次使用,需要全局设置git的username和emailgit config --global user.name "[your username]"git config --global user.email "[your email]"git add . && git commit -m 'first commit'git remote add origin [registry url]git push origin main ## 这里将master改为main## 如果每次操作git都要求提示输入账号密码,键入以下命令之后输入账号密码,就不会再提示了git config --global credential.helper store## 账号密码如何获取请看下面图文
4、修改配置
先看一下项目目录
│ lerna.json ## lerna配置文件│ package.json ## npm包配置文件└─packages ## 默认的子项目存放文件夹
接下来我们修改一下lerna.json和package.json
{"packages": [ //新增三个文件夹作为工作区"components/*","plugins/*","projects/*"],"bootstrap": {"hoist": true,"noCi": true,"npmClientArgs": ["--no-package-lock"]},"command": {"publish": {"ignoreChanges": [ //以下文件更新不会发布新版本的npm包"ignored-file","*.md"],"message": "chore(release): publish","registry": "[npm-registry]" //npm包远程仓库}},"npmClient": "yarn", //指定使用的npm包管理工具"version": "1.0.0" //当前版本号}
{"name": "lerna-yarn-demo","devDependencies": {"lerna": "^4.0.0"},"private": true,//设置为私有.不会被发布到npm仓库}
5、添加npm包项目
## 通过lerna创建一个空的npm包项目lerna create module-one -y ## 默认会在第一个工作区内创建npm包 -y:默认设置lerna create project-test examples -y ## project-test后面添加的examples为指定工作区文件夹## 通过npm init创建一个空的npm包项目cd packages && mkdir module-two && cd module-two && npm init -y## 下载模板git clone 模板链接 ## 记得把模板项目中.git删掉,免得跟根目录的.git发生冲突
6、添加模块依赖
## 添加依赖包lerna add module-two //除了module-two子项目以外的所有项目都会安装这个包lerna exec "npm install -D jest" //所有子项目添加jest模块
7、调试npm包
根据上面命令,我们已经在所有工作区中添加了jest模块,并且module-one依赖了module-two模块,现在我们来模拟一下如何对某个模块进行测试
// packages/module-two/lib/module-two.js'use strict';module.exports = {getMsg: () => {return 'hello two'}};// packages/module-one/lib/module-one.js'use strict';const { getMsg } = require('module-two')module.exports = moduleOne;function moduleOne () {// TODOconsole.log(getMsg())}
修改module-one的package.json
"scripts": {"test": "jest"},
运行以下命令
lerna exec npm run test
7、发布npm包
## 如果npm包项目需要构建的话,记得在发布版本之前,先构建一下## lerna exec npm run buildlerna version ##选择版本号lerna publish ##发布npm包


