美文网首页
Lerna 教程

Lerna 教程

作者: nucky_lee | 来源:发表于2022-05-16 16:38 被阅读0次

    一、什么是 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 教程

          本文链接:https://www.haomeiwen.com/subject/ridwurtx.html