搭建项目

  • 创建项目目录并用编辑器打开

    1. mkdir forest-cli && code forest-cli
  • 初始化npm

    1. npm init -y
    1. // package.json
    2. {
    3. "name": "forest-cli",
    4. "version": "1.0.0",
    5. "description": "",
    6. "main": "index.js",
    7. "scripts": {
    8. "test": "echo \"Error: no test specified\" && exit 1"
    9. },
    10. "keywords": [],
    11. "author": "",
    12. "license": "ISC",
    13. "devDependencies": {
    14. "lerna": "^3.22.1"
    15. }
    16. }
  • 安装lerna

    1. npm install lerna

    回车之后就会在项目中安装lerna库,查看版本npx lerna -v, 这样就可以打印出lerna的版本号了

  • 新建.gitignore ```git

    .gitignore

node_modules

.idea .vscode

packages/**/node_modules

  1. - 使用lerna创建库
  2. ```git
  3. npx lerna create core

Tips: 如果创建不成功的话多半是git没有配置用户名和邮箱

image.png
以上流程表示成功的创建了一个core的库;

lerna相关命令的学习 Git地址

  • init

    1. lerna init
  • add

    将本地或远程包作为依赖添加到当前Lerna repo中的包。注意,与yarn add或npm install相比,一次只能添加一个包。

  1. lerna add <package>[@version] [--dev] [--exact] [--peer]

示例:

  1. npx lerna add lodash // 这儿是将依赖安装到packages下所有的package.json中
  2. npx lerna add lodash packages/core // z指定安装,将lodash安装到packages/core中
  • clean
    1. npx lerna clean

    从所有包中删除node_modules目录。 输入npx lerna clean回车后,就会提示: 然后输入y Tips: 虽然将所有的node_modules删除了,但是并没有删除package.json中的配置记录

image.png

  • bootstrap

    安装 packages中的所有依赖

  1. npx lerna bootstrap

示例
image.png

  • link

    链接packages下所有相互依赖的包

  1. lerna link
  1. npx lerna link

Tips 如果没有相互依赖的包,执行命令没有反应

  • exec 链接

    在包中去执行命令

  1. lerna exec -- <command> [...args]
  2. lerna exec --scope my-component -- ls -la

示例:

  1. npx lerna exec -- rm -rf node_modules/ // 删除所有的node_modules
  2. npx lerna exec --scope forest-cli -- rm -rf node_modules // 进入forest-cli删除其node_modules

Tips: 是删除packages中所有的node_modules, 而不是根目录下的nodee_modulesnodee_modules

image.png
image.png

  • run 链接

    在每个包含该脚本的包中运行一个npm脚本

  1. lerna run <script> -- [..args]

示例:

  1. npx lerna run test // 执行packages下所有的test命令
  2. npx lerna run --scope forest-cli test // 进入某个包中去执行命令

image.png
image.png

  • version 链接

    自上次发布以来,包的版本发生了变化,也就是执行此命令自动更新版本号

  1. lerna version

Tips: 此命令一定是在git commit后才能有效,也就是上次有过提交,版本号才能迭代,反之会报错; 执行后可进行选择迭代的版本

image.png

  • changed

    查看自上次提交以来的历史提交记录

  1. lerna changed

示例:
image.png

  • diff

    做commit之间的对比

  1. lerna diff

Tips: 一定是在commit之后,代码有所变化才能有反应

  • publish

    发布lerna项目

  1. lerna publish

Tips: 执行后默认会执行lerna version进行版本迭代

lerna发布上线流程

Tips 在执行lerna publish时,应注意是否登录了npm

在登录过程中如果出现了下列报错情况,多半是设置的npm淘宝源的问题
image.png
解决办法是:换回原来的npmjs源

  1. npm config set registry https://registry.npmjs.org/

然后可以正常发布脚手架项目了

  1. npx lerna publish

image.png