Lerna 教程

一、什么是 lerna?

多包管理工具,方便我们在一个项目中管理多个 npm 包。它能够在发包时统一每个包的版本号,解决多包项目中每次发包都要手动修改各个包的版本号并单独发布的烦恼。

二、环境搭建

打开终端安装 lerna 环境

npm i lerna -g

三、使用

初始化项目

找一个空文件夹执行 lerna init 初始化项目。

初始化后的目录结构如下所示

├── lerna.json // lerna 的相关配置

├── package.json

└── packages // 约定了该文件夹下存放多个 npm 包。

创建项目包

通过命令行创建项目

lerna create moduleA

lerna create moduleB

本地包相互引用

lerna link

j假设moduleA依赖moduleB,现在我们在 moduleA 包下增加个依赖。

packages/moduleA/package.json

{

  ...

  "dependencies":  {

  "moduleB":  "^1.0.0"

  },

  ...

}

在终端执行
lerna link

会在包中帮你安装moduleB依赖。

添加公共依赖

假设 moduleA 和 moduleB 都依赖 lodash

lerna add lodash

添加单独依赖

l 假设moduleA 自己依赖 jquery,moduleB 自己依赖 zepto

lerna add jquery --scope=@fengyinchao/modulea

lerna add zepto --scope=@fengyinchao/moduleb

卸载包

l 给 moduleA 移除一个依赖 husky

lerna exec --scope=@fengyinchao/modulea npm uninstall husky

重新安装依赖

lerna bootstrap

这样会帮我们安装package.json里的dependencies依赖项

抽离公共模块

上面 moduleA 和 moduleB 都依赖了 lodash,且在各自 package 下的node_modules 里都有副本,这其实很浪费空间,可以使用 --hoist

lerna bootstrap --hoist

这会将 packages 里重复的依赖提取到最外层的 node_modules 里,同时最外层的 package.json 也不会更新 dependency 信息,所以不建议将公用依赖写到最外层的package.json里,而是重复写到每个子package.json 里,然后用 --hoist 提取出来

更新公共依赖

假设要升级 moduleA 和 moduleB 都依赖的 lodash 版本,不必依次到各子package下升级,可以借助 lerna-update-wizard 这个包来做

// 根目录执行

npm install --save-dev lerna-update-wizard

四、发布

登录 npm

npm login

lerna changed 查看代码变化

lerna version 修改版本

lerna publish 发布

五、使用

安装:

npm i @syyyds-cli/vue2wx --save

使用脚手架:

"scripts": {

    "dev": "lsy-cli-repo-lerna",
},

遇到的坑:

1、https://blog.csdn.net/hahahhahahahha123456/article/details/82054908

当执行npm publish,发生了如下错误:

lerna ERR! E401 [UNAUTHORIZED] Login first

起先以为是账户的问题,我就执行了npm addusernpm login 都不行。

您首先执行下 npm adduser ,输入您相应的 Username 、 Password 、 Email: (this IS public) ,关键的一步来了!

Logged in as 您的Username on [https:*//registry.npmjs.org/.*](https://registry.npmjs.org/)

如果 on 后面不是 https://registry.npmjs.org/ ,而是其他的镜像,比如我们大家常见的淘宝镜像:
http://registry.npm.taobao.org/

那么您首先替换成原来的,替换成原来执行如下命令:

npm config set registry [https://registry.npmjs.org/](https://registry.npmjs.org/)

最后,替换完毕再执行npm addusernpm publish ,这样应该就ok了!

github

https://github.com/sy-l123/lerna-repo.git

你可能感兴趣的:(Lerna 教程)