简介
@erquhart/lerna-package 是一个基于 lerna 的 npm 包,用于管理 monorepo 的 packages。
安装
你可以使用 npm 或 yarn 进行安装:
- --- - --- ------- ----------------------- - ---- - ---- --- -----------------------
使用
初始化
在 monorepo 的根目录下运行以下命令来初始化 lerna:
- --- ----- ----
添加一个 package:
- --- ----- ------ --------------------
配置
在 monorepo 的根目录下创建 lerna.json
文件作为 lerna 的配置文件,其中应包含以下内容:
- ----------- - ------------ -- ---------- -------------- ------------ ------ ---------------- ---- -
其中 "packages/*"
是 package 存放的目录,"version": "independent"
表示每个 package 的版本可以单独管理,"npmClient": "npm"
表示使用 npm 作为 npmClient,"useWorkspaces": true
表示使用 yarn workspaces 或者 npm workspaces,方便 monorepo 管理。
package.json 配置
在 package.json 中添加以下内容:
- ------- ----------------------- ---------- -------- ---------- - -------- ---- --- ----------- ------------ ---- -- --------------------- -- ------------------- - -------- ---------- ------------ --------- - -
其中 "name": "@my-scope/my-package"
是 package 的名称,"version": "0.0.1"
是 package 的初始版本号,"scripts"
中的 build
和 build:lib
都是为了打包输出 js 文件的命令,这里以 tsc(TypeScript 编译器)举例,而 "peerDependencies"
是声明该 package 需要的 peerDependencies。
发布
在 monorepo 的根目录下运行以下命令来发布 packages:
- --- ----- -------
示例代码
一个简单的示例代码,假设 monorepo 的根目录为 /my-monorepo
,package 存放的目录为 /my-monorepo/packages/my-package
,src 目录下有个 index.tsx
:
------ ----- ---- -------- ------ ----- ----------- - -- -- - ------ - ---------- ----------- -- --
打包后输出 lib
目录下的 index.js
:
---- -------- ------------------------------ ------------- - ------ ---- --- --- ----- - ----------------- --- ----------- - -------- -- - ------ -------------------------- ----- ------- ---------- -- ------------------- - ------------ --- -----------------------------
这样就可以将 package 发布到 npm 了,其他包括该 package 的工程需要通过 npm install @my-scope/my-package
来进行安装和引入。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/5eedaf48b5cbfe1ea0610fce