伙伴云客服论坛»论坛 S区 S行业资讯 查看内容

0 评论

0 收藏

分享

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


Lerna 简介

官网:https://lerna.js.org/
Lerna 是一个优化基于 git+npm 的多 package 项目的管理工具
主要用于大幅减少开发脚手架过程中的反复操作,并提升操作的规范化
babel、vue-cli、create-react-app等著名脚手架,都是使用Lerna开发的

Lerna 开发脚手架的流程

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


准备工作:

注册npm账号,创建组织

翻开官网,注册一个npm账号
https://www.npmjs.com/
登录后,创建一个组织(主要用于防止发布后项目名与其他人反复)

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

输入自定义的组织名后,点 Create 停止创建

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

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

组织创建胜利,效果如下:

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


在码云上创建仓库

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

得到远程仓库地址
  1. https://gitee.com/sunshine39/mycli-test.git
复制代码
1. 全局装置 Lerna

  1. npm install -g lerna
复制代码
2. 创建项目

以项目名 mycli-test 为例
  1. git init mycli-test
复制代码
进入项目目录
  1. cd mycli-test
复制代码
3. 用 Lerna 初始化项目

  1. lerna init
复制代码
用 vscode 翻开项目,创建 .gitignore 文件,内容为:
  1. node_modules
  2. lerna-debug.log
复制代码
用于防止将 node_modules 和 lerna-debug.log 上传到 git
设置git全局账号和邮箱(若设置过,则忽略此步)
  1. git config --global user.name "你的git账号"
复制代码
  1. git config --global user.email "你的git账号绑定的电子邮箱"
复制代码
通过以下命令,可以查看是否设置胜利
  1. git config --global --get user.name
复制代码
  1. git config --global --get user.email
复制代码
4. 用 Lerna 创建包

如创建核心包 cro
  1. lerna create core
复制代码
会提示输入包的名称,格式为
  1. @组织名/包名
复制代码
组织名为准备工作中,在npmjs.com中创建的组织,之后不时按回车键,最后输入y即可。

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


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


再创建一个工具包 utils
  1. lerna create utils
复制代码
Lerna 使用教程 -- 开发脚手架的流程和核心命令详解-9.png


5. 用 Lerna 管理包的依赖


    给所有的包装置依赖
    npmlog 为npmjs.com 中已存在的依赖名称。
  1. lerna add npmlog
复制代码
    给指定的包装置依赖
  1. lerna add 依赖名称 包的途径
复制代码
  1. lerna add npmlog packages/core
复制代码
    卸载指定包的依赖
    core 为包名,inquirer 为依赖名
  1. lerna exec --scope=core  npm uninstall inquirer
复制代码
    清空所有包已装置的依赖
  1. lerna clean
复制代码
Lerna 使用教程 -- 开发脚手架的流程和核心命令详解-10.png

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

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


    重新装置删除的依赖
    会根据各包中的package.json 里的 dependencies配置,装置对应的依赖
  1. lerna bootstrap
复制代码
    创建项目内部包之间的软链接
    需先在目的包的package.json 里的 dependencies添加配置,再执行
  1. lerna link
复制代码
例如:在 core 包中,添加 utils 包的软链接,方法如下
在 core 包的package.json 里添加 dependencies 配置
  1. "dependencies":{"@mycli-test/utils":"^0.0.0"}
复制代码
Lerna 使用教程 -- 开发脚手架的流程和核心命令详解-12.png

再执行

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

胜利在core包中添加utils包的软链接

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


    执行终端脚本 lerna exec
    如删除所有包中的 node_modules文件夹
在linnux系统中用
  1. lerna exec -- rm -rf node_modules
复制代码
在windows系统中用
  1. lerna exec -- rd/s node_modules
复制代码
即 lerna exec – 的用法是对 packages中的每个包都执行相应的终端命令。
若想只对指定包执行相关命令,则需使用
  1. lerna exec --scope 包名 -- 终端命令
复制代码
  1. lerna exec --scope @mycli-test/core -- rd/s node_modules
复制代码
则只会删除core包中的 node_modules文件夹
    执行npm脚本 lerna run
如执行测试
  1. lerna run test
复制代码
相当于在每个包中执行一次
  1. npm run test
复制代码
目前直接执行会报错,因为各包里的package.json里的test对应的命令包含 && exit 1
可以分别修改为
  1. "scripts":{"test":"echo "run test from core" "},
复制代码
  1. "scripts":{"test":"echo "run test from utils" "},
复制代码
Lerna 使用教程 -- 开发脚手架的流程和核心命令详解-15.png

若想只对指定包执行npm命令,则需使用
  1. lerna run --scope 包名 -- npm命令
复制代码
  1. lerna run --scope @mycli-test/core -- test
复制代码
Lerna 使用教程 -- 开发脚手架的流程和核心命令详解-16.png


6. 用 Lerna 发布脚手架


    查看与上次发布的版本之间的变卦
  1. lerna changed
复制代码
Lerna 使用教程 -- 开发脚手架的流程和核心命令详解-17.png


    查看与上次本地提交之间的变卦
执行以下命令完成第一次本地提交
  1. git add .
  2. git commit -m "创建项目"
复制代码
修改文件 packages\utils\lib\utils.js

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

执行命令
  1. lerna diff
复制代码
Lerna 使用教程 -- 开发脚手架的流程和核心命令详解-19.png


将代码提交到远程仓库


    给本地代码添加一个远程仓库
  1. git remote add origin https://gitee.com/sunshine39/mycli-test.git
复制代码
    将本地代码推送到远程仓库
  1. git push --set-upstream origin master
复制代码
此处使用 --set-upstream 参数,指定默认推送到远程的master分支,之后的提交直接使用 git push 即可。

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


命令行登录npm

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

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


发布前的必要修改

    每个包 的 package.json 中添加
  1. "publishConfig":{"access":"public"},
复制代码
    项目目录下新建文件 LICENSE.md,内容为空即可。提交代码推送到远程仓库
  1. git add .
  2. git commit -m "发布到npm前的修改"
  3. git push
复制代码
Lerna 使用教程 -- 开发脚手架的流程和核心命令详解-22.png


发布到npm

  1. lerna publish
复制代码
按引导,选择 Patch,输入 y 回车即可

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

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

发布胜利后,在npmjs.com中查看效果

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

还可以在任意文件夹中尝试下载装置这两个包哦!
  1. npm i @mycli-test/core
复制代码
Lerna 使用教程 -- 开发脚手架的流程和核心命令详解-26.png

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

回复

举报 使用道具

全部回复
暂无回帖,快来参与回复吧
本版积分规则 高级模式
B Color Image Link Quote Code Smilies

心似狂潮
注册会员
主题 13
回复 13
粉丝 0
|网站地图
快速回复 返回顶部 返回列表