Lerna 使用教程 -- 开发脚手架的流程和核心命令详解

网友投稿 381 2022-09-22

Lerna 使用教程 -- 开发脚手架的流程和核心命令详解

Lerna 简介

官网:​​Lerna 是一个优化基于 git+npm 的多 package 项目的管理工具

主要用于大幅减少开发脚手架过程中的重复操作,并提升操作的标准化

babel、vue-cli、create-react-app等著名脚手架,都是使用Lerna开发的

Lerna 开发脚手架的流程

准备工作:注册npm账号,创建组织

打开官网,注册一个npm账号​​​Create 进行创建

组织创建成功,效果如下:

在码云上创建仓库

得到远程仓库地址

全局安装 Lerna

npm install -g lerna

2. 创建项目

以项目名 ​​mycli-test​​ 为例

git init mycli-test

进入项目目录

cd mycli-test

3. 用 Lerna 初始化项目

lerna init

用 vscode 打开项目,创建 ​​.gitignore​​ 文件,内容为:

node_moduleslerna-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

lerna create core

会提示输入包的名称,格式为

@组织名/包名

组织名为准备工作中,在npmjs.com中创建的组织,之后一直按回车键,最后输入y即可。

再创建一个工具包 utils

lerna create utils

5. 用 Lerna 管理包的依赖

给所有的包安装依赖npmlog 为npmjs.com 中已存在的依赖名称。

lerna add npmlog

给指定的包安装依赖

lerna add 依赖名称 包的路径

lerna add npmlog packages/core

卸载指定包的依赖core 为包名,inquirer 为依赖名

lerna exec --scope=core npm uninstall inquirer

清空所有包已安装的依赖

lerna clean

注意事项:此操作删除了各包里的node_modules文件夹,但并没有删除各包里的 package.json 里的 dependencies ,所以还需一一手动删除!

重新安装删除的依赖会根据各包中的package.json 里的 dependencies配置,安装对应的依赖

lerna bootstrap

创建项目内部包之间的软链接需先在目标包的package.json 里的 dependencies添加配置,再执行

lerna link

例如:在 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文件夹

执行npm脚本 lerna run

如执行测试

lerna run test

相当于在每个包中执行一次

npm run test

目前直接执行会报错,因为各包里的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 发布脚手架

查看与上次发布的版本之间的变更

lerna changed

查看与上次本地提交之间的变更

执行以下命令完成第一次本地提交

git add .git commit -m "创建项目"

修改文件 packages\utils\lib\utils.js

执行命令

lerna diff

将代码提交到远程仓库

给本地代码添加一个远程仓库

git remote add origin push --set-upstream origin master

此处使用 --set-upstream 参数,指定默认推送到远程的master分支,之后的提交直接使用 git push 即可。

命令行登录npm

npm login

按提示依次输入npm的账号、密码、邮箱、一次性验证密码(输入邮箱回车后邮箱里会收到一次性密码验证邮件)

发布前的必要修改

在每个包的 package.json 中添加

"publishConfig": { "access": "public" },

项目目录下新建文件 LICENSE.md,内容为空即可。提交代码推送到远程仓库

git add .git commit -m "发布到npm前的修改"git push

发布到npm

lerna publish

按引导,选择 Patch,输入 y 回车即可

发布成功后,在npmjs.com中查看效果

还可以在任意文件夹中尝试下载安装这两个包哦!

npm i @mycli-test/core

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:element UI【解决方案】消息弹框被对话框遮挡($message消息框被dialog或$alert遮罩)
下一篇:文案来啦:适合冬天发的温柔文案!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~