加载中...
lerna在单仓库管理多项目的使用小结
发表于:2022-12-01 | 分类: 前端

lerna 是一个 monorepo 工具,用来在一个仓库中管理多个项目。而我最近向造个轮子,这个轮子需要抽离出一些组件库,且自身也会用到。而 lerna 就非常适合这种场景。

下载

  1. 全局下载 yarn global add lernanpm install lerna -g

  2. 初始化项目 cd lerna-demo && cd lerna-demo然后lerna init

执行完 init 后会多出一个packages目录和lerna.json,并且会配置一个workspace

  1. 创建不同的项目
    然后我们可以在 packages 中创建不同的项目,具体代码可以查看lerna-demo

代码里有个需要注意的点就是打包配置中设置的打包方式要和你引入的方式是一致的,或者直接在打包配置中设置esmcjsumd三种方式,然后根据不同的规范去引入不同的代码。

这里我们有三个项目header, footer, website

webstite 就是我们的项目,其他两个是组件库。而我们需要在 website 中使用它们。那么就需要在 website 的 package.json 中导入,方法如下:

{
  // ...
  "dependencies": {
    // ...
    "header": "*",
    "footer": "*"
  }
}

这样就相当于告诉 lerna 去 link workspace 中的headerfooter,就像npm install了一样。

然后再yarn执行一下命令

打包项目

如果需要打包所有的项目则直接运行lerna run build

lerna 会按照依赖顺序,先打包headerfooter,最好再打包website

也可以使用--scope配置 指定需要打包的项目lerna run build --scope header --scope footer,这样,website 项目就不会被打包。

运行单元测试也同上。

项目运行

打包好了两个依赖项目后,就可以运行website了,

lerna run dev --scope=website

也可以不加--scope,因为其他两个项目中并没有dev这个运行命令。

最后就可以直接访问了

上一篇:
如何解决 hexo g 报错REMOTE HOST IDENTIFICATION HAS CHANGED!
下一篇:
关于React测试的思考
本文目录
本文目录