Lerna 脚手架搭建:从开发到发布

 

官网文档: https://lerna.js.org/

创建packages

  • 初始化npm
    npm init
    npm init -y
  • 安装lerna
    npm i lerna@6.6.2 -D 不安装最新的v7,是v7删掉了lerna bootstrap 和 lerna add命令
    npm i lerna@6.6.2 -g
  • 初始化lerna
    lerna init
    lerna init --independent 独立模式,每个包的版本号都是独立的,不会统一管理

      报错: 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 Cannot initialize lerna because your package manager has not been configured to use `workspaces`, and you have not explicitly specified any packages to operate on      中文: 无法初始化lerna,因为尚未配置包管理器

      解决: 可能是网络不行, 多试试。

  • 创建package
    lerna create <package-name> [loc] 会自动创建packages文件夹。本地路径,如果不填写,默认安装到所有的包 <package-name> @rapid-vue-cli/core @rapid-vue-cli 组织名 core 包名
    lerna create @rapid-vue-cli/core
    lerna create @rapid-vue-cli/core packages --yes 不会询问是否创建

      报错: Command failed with exit code 1: git config --get user.name。

      解决: 配置 Git 用户名和邮箱。

    git config --global user.name ""
    git config --global user.email ""
    然后查看是否设置成功
    git config --global --get user.name
    git config --global --get user.email
  • 安装依赖
    lerna add  local(本地路径,如果不填写,默认安装到所有的包)
    lerna add  --scope   安装指定包的依赖
    lerna add  --scope  --dev  安装指定包的开发依赖
    lerna add  --scope  --peer  安装指定包的同级依赖
    lerna add  --scope  --exact  安装指定包的精确版本依赖
    lerna add  --scope  --exact --dev  安装指定包的精确版本开发依赖
    lerna add  --scope  --exact --peer  安装指定包的精确版本同级依赖
    lerna add  --scope  --exact --peer --dev  安装指定包的精确版本同级依赖和开发依赖
    lerna add  --scope  --exact --peer --dev --registry=https://registry.npm.taobao.org  安装指定包的精确版本同级依赖和开发依赖,并且指定淘宝镜像
    lerna add  --scope  --exact --peer --dev --registry=https://registry.npm.taobao.org --loglevel=verbose  安装指定包的精确版本同级依赖和开发依赖,并且指定淘宝镜像,并且打印安装日志
    lerna add  --scope  --exact --peer --dev --registry=https://registry.npm.taobao.org --loglevel=verbose --no-bootstrap  安装指定包的精确版本同级依赖和开发依赖,并且指定淘宝镜像,并且打印安装日志,并且不执行lerna bootstrap
    lerna add  --scope  --exact --peer --dev --registry=https://registry.npm.taobao.org --loglevel=verbose --no-bootstrap --nohoist  安装指定包的精确版本同级依赖和开发依赖,并且指定淘宝镜像,并且打印安装日志,并且不执行lerna bootstrap,并且不执行lerna hoist

      提示: No packages found where npmlog can be added. (目录下的package.json 或 packages目录下的package.json存在包名, 删除重新执行lerna add)

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

     

脚手架开发和测试

  • 清空所有包已安装的依赖
    lerna clean
  • 卸载依赖 执行目录在 packages 文件夹范围内包里的文件,不能删除包。删除packages下所有的node_modules。
    lerna exec -- rm -rf node_modules/ 删除packages下所有的node_modules
  • 卸载指定包的依赖
    lerna exec --scope @rapid-vue-cli/core -- rm -rf node_modules/ 删除@rapid-vue-cli/core(文件的包名, 项目里package.json里的name) 下的node_modules
  • 重新安装删除的依赖  会根据各包中的package.json 里的 dependencies配置 安装对应的依赖
    lerna bootstrap
  • 执行npm脚本
    lerna run test  每一个包都会执行test脚本
    lerna run test --scope @rapid-vue-cli/core 执行指定包的test脚本

     

脚手架发布和上线

  • 查看版本
    lerna version
    lerna version --conventional-commits 会根据git commit的规范自动更新版本号
    lerna version --conventional-commits --amend 会根据git commit的规范自动更新版本号,并且会把更新的版本号添加到上一次的commit中
  • 查看改动 距上次发布的改动
    lerna changed
  • 查看commit之间的差异不同
    lerna diff
  • 发布
    lerna publish  会发布所有的包
    lerna publish --conventional-commits 会根据git commit的规范自动更新版本号,并且会发布所有的包
    lerna publish --conventional-commits --amend 会根据git commit的规范自动更新版本号,并且会把更新的版本号添加到上一次的commit中,并且会发布所有的包
  •   如报错: err E401 [UNAUTHORIZED] Login first. ERR! E402 You must sign up for private packages

      解决方案: npm login 登录npm账号后 再次发布

      如 npm login报错: ! code E403 npm ERR! 403 403 Forbidden - PUT https://registry.npmmirror.com/-/user/org.couchdb.user:rapid-ff - [FORBIDDEN] Public registration is not allowed npm ERR! 403 In most cases, you or one of your dependencies are requesting npm ERR! 403 a package version that is forbidden by your security policy, or npm ERR! 403 on a server you do not have access to.

      解决方案: 这是因为更换了淘宝的cnpm --registry=https://registry.npm.taobao.org 登录淘宝镜像npm账号后 再次发布 或者 切换源 npm config set registry https://registry.npmjs.org/ 登录npm账号后 再次发布

posted on 2023-08-18 00:48  完美前端  阅读(1032)  评论(0编辑  收藏  举报

导航