Lerna 使用教程 -- 开发脚手架的流程和核心命令详解
 
 
心似狂潮
楼主
发布于 2023-6-28 10:23:12
阅读 3692
查看全部
 
 
 
 
 
Lerna 简介 
 
 官网:https://lerna.js.org/ 
 Lerna 是一个优化基于 git+npm 的多 package 项目的管理工具 
主要用于大幅减少开发脚手架过程中的反复操作,并提升操作的规范化 
babel、vue-cli、create-react-app等著名脚手架,都是使用Lerna开发的 
 
Lerna 开发脚手架的流程 
 
  
 
准备工作: 
 
 注册npm账号,创建组织 
 
 翻开官网,注册一个npm账号 
https://www.npmjs.com/ 
登录后,创建一个组织(主要用于防止发布后项目名与其他人反复) 
 
 
 输入自定义的组织名后,点 Create 停止创建 
 
 
 
 组织创建胜利,效果如下: 
 
 
 
在码云上创建仓库 
 
  
 得到远程仓库地址- https://gitee.com/sunshine39/mycli-test.git
 
  复制代码1. 全局装置 Lerna 
 
 2. 创建项目 
 
 以项目名 mycli-test 为例进入项目目录3. 用 Lerna 初始化项目 
 
 用 vscode 翻开项目,创建 .gitignore 文件,内容为:- node_modules
 - lerna-debug.log
 
  复制代码 用于防止将 node_modules 和 lerna-debug.log 上传到 git 
设置git全局账号和邮箱(若设置过,则忽略此步)- git config --global user.name "你的git账号"
 
  复制代码- git config --global user.email "你的git账号绑定的电子邮箱"
 
  复制代码 通过以下命令,可以查看是否设置胜利- git config --global --get user.name
 
  复制代码- git config --global --get user.email
 
  复制代码4. 用 Lerna 创建包 
 
 如创建核心包 cro会提示输入包的名称,格式为组织名为准备工作中,在npmjs.com中创建的组织,之后不时按回车键,最后输入y即可。 
 
 
 
 
 
再创建一个工具包 utils 
 
5. 用 Lerna 管理包的依赖 
 
  
给所有的包装置依赖 
 npmlog 为npmjs.com 中已存在的依赖名称。 
 如- lerna add npmlog packages/core
 
  复制代码卸载指定包的依赖 
 core 为包名,inquirer 为依赖名 
 - lerna exec --scope=core  npm uninstall inquirer
 
  复制代码 
 注意事项:此操作删除了各包里的node_modules文件夹,但并没有删除各包里的 package.json 里的 dependencies ,所以还需逐个手动删除! 
 
 
 
重新装置删除的依赖 
 会根据各包中的package.json 里的 dependencies配置,装置对应的依赖 
 创建项目内部包之间的软链接 
 需先在目的包的package.json 里的 dependencies添加配置,再执行 
 例如:在 core 包中,添加 utils 包的软链接,方法如下 
 在 core 包的package.json 里添加 dependencies 配置- "dependencies":{"@mycli-test/utils":"^0.0.0"}
 
  复制代码 
 再执行 
 
 
 胜利在core包中添加utils包的软链接 
 
 
 
执行终端脚本 lerna exec 
 如删除所有包中的 node_modules文件夹 
 在linnux系统中用- lerna exec -- rm -rf node_modules
 
  复制代码 在windows系统中用- lerna exec -- rd/s node_modules
 
  复制代码 即 lerna exec – 的用法是对 packages中的每个包都执行相应的终端命令。 
若想只对指定包执行相关命令,则需使用-  lerna exec --scope 包名 -- 终端命令
 
  复制代码 如-  lerna exec --scope @mycli-test/core -- rd/s node_modules
 
  复制代码 则只会删除core包中的 node_modules文件夹 
如执行测试相当于在每个包中执行一次目前直接执行会报错,因为各包里的package.json里的test对应的命令包含 && exit 1 
 可以分别修改为- "scripts":{"test":"echo "run test from core" "},
 
  复制代码- "scripts":{"test":"echo "run test from utils" "},
 
  复制代码 
 若想只对指定包执行npm命令,则需使用-  lerna run --scope 包名 -- npm命令
 
  复制代码 如-  lerna run --scope @mycli-test/core -- test
 
  复制代码 
 
6. 用 Lerna 发布脚手架 
 
  
 
 
执行以下命令完成第一次本地提交- git add .
 - git commit -m "创建项目"
 
  复制代码 修改文件 packages\utils\lib\utils.js 
 
 
 执行命令 
 
将代码提交到远程仓库 
 
  
- git remote add origin https://gitee.com/sunshine39/mycli-test.git
 
  复制代码- git push --set-upstream origin master
 
  复制代码 此处使用 --set-upstream 参数,指定默认推送到远程的master分支,之后的提交直接使用 git push 即可。 
 
 
 
命令行登录npm 
 
 按提示依次输入npm的账号、密码、邮箱、一次性验证密码(输入邮箱回车后邮箱里会收到一次性密码验证邮件) 
 
 
 
发布前的必要修改 
 
 - "publishConfig":{"access":"public"},
 
  复制代码项目目录下新建文件 LICENSE.md,内容为空即可。提交代码推送到远程仓库 
 - git add .
 - git commit -m "发布到npm前的修改"
 - git push
 
  复制代码 
 
发布到npm 
 
 按引导,选择 Patch,输入 y 回车即可 
 
 
 
 发布胜利后,在npmjs.com中查看效果 
 
 
 还可以在任意文件夹中尝试下载装置这两个包哦! 
 |   
 
 
 
 | 
| 
 | 
| 
 | 
| 
 |