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和email
git 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 () {
// TODO
console.log(getMsg())
}
修改module-one的package.json
"scripts": {
"test": "jest"
},
运行以下命令
lerna exec npm run test
7、发布npm包
## 如果npm包项目需要构建的话,记得在发布版本之前,先构建一下
## lerna exec npm run build
lerna version ##选择版本号
lerna publish ##发布npm包