NPM常用库推荐 - lerna


介绍

lerna 一个用于管理具有多个包的JavaScript项目的工具。将大型代码库拆分为独立版本的包对于代码共享非常有用。然而,跨许多存储库进行更改是混乱的,而且很难跟踪,跨存储库的测试也变得非常复杂。为了解决这些(以及许多其他)问题,一些项目将把它们的代码库组织成多包存储库(也被称为monorepos)。像BabelReactAngularEmberMeteorJest等项目都在一个存储库中开发了它们的所有包。Lerna是一种工具,可以优化使用git和npm管理多包存储库的工作流程。Lerna还可以减少开发和构建环境中大量软件包副本的时间和空间需求,这通常是将项目划分为许多单独的NPM软件包的缺点。

如何使用

1. 初始化一个lerna项目

在你的项目中运行以下命令(当然你也可以全局安装npm i - g lerna, 然后在项目目录中使用lerna init,但是我并不推荐这样做)

npx lerna init

初始化完成后,你会发现你的项目中会出现一个lerna.json配置文件,以及一个packages文件夹,同时你的package.json文件中添加了一个"lerna": "^3.22.1"的开发依赖项。

2. 了解lerna的配置文件

lerna的配置文件为lerna.json,初始配置如下:

{
  "packages": [
    "packages/*"
  ],
  "version": "0.0.0"
}

其支持的配置项如下

  • version:项目版本号。
  • packages:子项目目录,可支持多个,也支持globs通匹符配置。
  • npmClient: 项目依赖安装客户端。若更改为yarn则使用yarn运行所有命令,默认为npm
  • command:命令钩子。
    • publish:发布时的钩子
      • ignoreChanges:在执行lerna changed/publish命令时排除不需要的文件变动,支持globs通匹符字符串数组,例如['*.md', '.gitignore']
      • message:为执行发布版本更新自定义提交消息格式,例如chore(release): publish,使用详情见--message <msg>
      • registry:要将包发布到的构件库地址,默认为npmjs.org,如果你需要发布到自己的私有构件库地址,则再次配置即可。需要注意的是发布前,必须保证你已通过构件库的授权。
    • bootstrap:引导时的钩子
      • ignore:一个支持globs通匹符的字符串数组,用于排除不需要进行bootstrap引导的项目
      • npmClientArgs:执行npmClient命令时附加的额外参数数组,例如['--no-package-lock']
      • scope:一个globs数组,它限制在运行lerna引导命令lerna bootstrap时引导哪些包

未完,待续 😂 。。。


文章作者: 流沙
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 流沙 !
  目录