前端工程化3:使用lerna管理多包

1、 使用lerna管理多包

bash 复制代码
npm i lerna -g

2、使用lerna初始化项目

bash 复制代码
lerna init

初始化结构是这样的:

3、配置项目package.json文件

json 复制代码
"scripts": {
    "preinstall": "npx only-allow pnpm",
    "prepare": "husky install",
    "init": "pnpm install",
    "clean": "lerna run clean $$ rm -rf node_modules",
    "test": "lerna run test",
    "docs:dev": "vuepress dev docs",
    "docs:build": "vuepress build docs",
    "deploy":"bash deploy.sh",
    "publish": "lerna publish",
    "lint": "markdownlint README.md",
    "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s",
  },
  "publishConfig": {
    "access": "public",
    "registry": "https://registry.npmjs.org/"
  }
  1. preinstall:: "npx only-allow pnpm" 项目中只能用pnpm包管理工具
  2. "prepare": "husky install"使用husky关联git hooks模版,为了加入commitlint
  3. "deploy":"bash deploy.sh"发包管理,打好的包拷贝到远程的repository,使得其他的开发者或者工程可以共享
  4. "publish": "lerna publish"这里的publish会把packages中的多宝都publish
  5. "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s"这里的changelog需要先全局安装,后面会讲

4、创建pnpm-workspace.yaml文件

"pnpm-workspace.yaml" 是 pnpm 管理的多包(monorepo)项目中用于定义工作区设置的文件。如果您在初始化项目时遇到创建这个文件的提示,通常是因为你正在使用支持 pnpm 工作区功能的工具或框架

使用命令行创建:

bash 复制代码
echo -e "packages: - 'packages/*'" > pnpm-workspace.yaml

5、使用lerna创建分包

bash 复制代码
lerna create demo1

现在就能在packages中看到新建的分包,结构这样:

6、配置分包主入口文件

package.json文件中修改:

javascript 复制代码
  "main": "index.js",

同时创建一个index.js文件,把默认的lib文件夹删除即可

7、发布npm包

javascript 复制代码
pnpm run publish

8、git action云构建

在git内配置action

持续更新中。。。。。。

相关推荐
IT_陈寒3 小时前
Vue这个坑我跳了两次,原来问题出在这
前端·人工智能·后端
kyriewen3 小时前
我用 50 行代码重写了 React Router 核心,终于搞懂了前端路由原理
前端·javascript·react.js
WebInfra4 小时前
Rspack 2.1 发布:React Compiler 提速 10 倍!
前端
李明卫杭州4 小时前
CSS 媒体查询详解:一文掌握响应式设计的核心技术
前端
lichenyang4535 小时前
从 H5 按钮到 OpenHarmony 能力调用:我如何理解 ASCF 的运行链路
前端
下家5 小时前
我放弃了 Vue/React,选择自研框架
前端·前端框架
Asize6 小时前
HTML5 Canvas 基础:从按帧动画到 ECharts 数据可视化
前端·javascript·canvas
默_笙6 小时前
🎄 后端给我一堆扁平数据,我 10 行代码把它变成了树
前端·javascript
Mahut6 小时前
我用 Electron + FFmpeg 做了一个本地视频处理工作站 ClipForge
前端·ffmpeg·electron
前端Hardy6 小时前
又一个 AI 神器火了!
前端·javascript·后端