lerna 配置笔记
无    2021-04-20 10:34:39    1759    0    0
xianglijiaxing


 

Workspaces中没有自己的yarn.lock文件,在根文件夹的yarn.lock包含所有Workspaces的依赖项。

 

从Lerna 2.0.0开始,当你通过-use-workspaces标志运行Lerna的命令时,它将会使用Yarn来引导项目,并且还会使用package.json/workspaces字段来查找依赖,而不是使用lerna.json/packages。

 

###子模块引用不同版本依赖的问题###

lerna bootstrap

lerna 提供了可以将子项目的依赖包提升到最顶层的方式 ,我们可以执行 lerna clean先删除每个子项目的 node_modules , 然后执行命令  lerna bootstrop --hoist

lerna bootstrop --hoist 会将 packages 目录下的公共模块包抽离到最顶层,但是这种方式会有一个问题,不同版本号只会保留使用最多的版本,这种配置不太好,当项目中有些功能需要依赖老版本时,就会出现问题。

yarn 

有没有更优雅的方式?再介绍一个命令 yarn workspaces ,可以解决前面说的当不同的项目依赖不同的版本号问题, yarn workspaces会检查每个子项目里面依赖及其版本,如果版本不一致都会保留到自己的 node_modules 中,只有依赖版本号一致的时候才会提升到顶层。注意:这种需要在 lerna.json 中增加配置。

  "npmClient": "yarn",  // 指定 npmClent 为 yarn  
  "useWorkspaces": true // 将 useWorkspaces 设置为 true

并且在顶层的 package.json 中增加配置

// 顶层的 package.json
{    
    "workspaces":[        "packages/*"    ]
}

增加了这个配置后 不再需要 lerna bootstrap 来安装依赖了,可以直接使用 yarn install 进行依赖的安装。注意:yarn install 无论在顶层运行还是在任意一个子项目运行效果都是可以。


###lerna add 同名scope 问题:###

子模块于第三方依赖名称相同的情况,修改自己的scope即可;


###私服配置###

yarn 项目根目录下配置参考:https://blog.csdn.net/qq_28077405/article/details/106516576 

yarn 使用全局或者执行目录下同级的.yarnrc配置,子模块的.yarnrc配置默认不会被读取, 可以使用,命令参数指定配置文件:

--use-yarnrc <path>                 specifies a yarnrc file that Yarn should use (.yarnrc only, not .npmrc) (default: ) 



###lerna publish 问题### 

 

### lerna exec --scope 子模块目录名 -- yarn serve ###

报错: No PostCSS Config found in: D:\project\xljx\demo\lerna-demo-independent\node_modules\normalize.css

将对应子模块下的postcss 配置文件拷贝置lerna项目根目录下,运行正常,说明为相对路径问题!!!

 

 


日志规范

commitizen 和 cz-lerna-changelog 

commitlint && husky

standardjs && lint-staged



Reference:

https://blog.csdn.net/weixin_35944230/article/details/112713841

https://mp.weixin.qq.com/s/JdbJ7g0_m1jz5hW7NZt6ag

一个子模块即为一个workspaces;

yarn workspaces : https://www.dazhuanlan.com/2019/12/25/5e027015a4775/

 

 

 

 

 

上一篇: App 分享至微信

下一篇: 余弦定理

1759 人读过
立即登录, 发表评论.
没有帐号? 立即注册
0 条评论
文档导航