前端工程化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

持续更新中。。。。。。

相关推荐
每天吃饭的羊5 分钟前
媒体查询
开发语言·前端·javascript
XiaoYu200229 分钟前
第8章 Three.js入门
前端·javascript·three.js
这个一个非常哈40 分钟前
element之,自定义form的label
前端·javascript·vue.js
阿东在coding1 小时前
Flutter 测试框架对比指南
前端
是李嘉图呀1 小时前
npm推送包失败需要Two-factor权限认证问题解决
前端
自己记录_理解更深刻1 小时前
本地完成「新建 GitHub 仓库 react-ts-demo → 关联本地 React+TS 项目 → 提交初始代码」的完整操作流程
前端
借个火er1 小时前
Chrome 插件开发实战:5 分钟上手 + 原理深度解析
前端
攀登的牵牛花1 小时前
前端向架构突围系列 - 架构方法(一):概述 4+1 视图模型
前端·设计模式·架构
Hashan1 小时前
Vue 3 中 v-for 动态组件 ref 收集失败问题排查与解决
前端·vue.js·前端框架
bobringtheboys1 小时前
[el-tag]使用多个el-tag,自动判断内容是否超出
前端·javascript·vue.js