搭建vue3组件库(一):Monorepo架构搭建

1. 以 pnpm 构建 monorepo

monorepo 是一个项目仓库,里面可以存放多个项目,每个项目可以独立管理,并且可以共享依赖。
pnpm 全称 performant npm,意思为高性能的 npm。pnpm 由 npm/yarn 衍生而来,解决了 npm/yarn 内部潜在的 bug,极大的优化了性能,扩展了使用场景。

1.1 全局安装 pnpm

  npm install -g pnpm

然后在项目下使用 pnpm init 进行 package.json 的初始化,得到 package.json 初始内容,然后把 package.json 中的 name 属性删掉,并且添加一个 “private”: true 属性,因为它是不需要发布的。

为了减少因node的版本的差异而产生开发环境错误,在package.json中增加engines字段来限制版本

为项目指定使用指定版本的node.js,在package.json中增加peerDependencies字段来限制版本

  {
   
    "private": true,
    "scripts": {
   },
    "peerDependencies": {
   
      "vue": "^3.2.0"
    },
    "engines": {
   
      "node": ">=16"
    },
  }

1.2 配置 pnpm 的 monorepo 工作区

在这个仓库下,我们需要管理多个项目,就可以采用 pnpm 的 monorepo。在仓库的根目录下创建一个 pnpm-workspace.yaml 文件,可以在 pnpm-workspace.yaml 配置文件中指定这个仓库中有多少个项目。

packages:
  - packages/*
  - docs
  - play
  - internal/*

play 目录是示例项目,在开发的时候可以知道效果是否达到预期;

docs 目录是文档项目,展示组件的使用方法;

internal 目录是内部项目,存放一些私有组件,比如:打包方法、等;

packages 目录是所有组件的项目目录了,在 packages 目录中又可以放很多包的项目目录,比如,组件包目录:components、主题包目录:theme-chalk、工具包目录:utils 等。

然后每一个包目录里面也需要一个 package.json 文件进行声明这是一个 NPM 包目录。所以需要进入每个包目录进行初始一个 package.json 文件。

components 包为例,进入到 components 目录底下初始化一个 package.json 文件,更改包名:@vision-ui-vue/components。文件内容如下:

{
   
  "name": "@vision-ui-vue/components",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
   
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

其他两个的包名则分别为:@vision-ui-vue/theme-chalk@vision-ui-vue/utils,创建过程同上。

至此一个初步搭建的项目目录结构如下:

├── docs
├── packages
│   ├── components
│   │   └── package

相关推荐

  1. vue3组件():Monorepo架构

    2024-04-27 06:38:02       31 阅读
  2. vue3组件():Monorepo项目

    2024-04-27 06:38:02       37 阅读
  3. vue3组件(二): 代码规范自动化

    2024-04-27 06:38:02       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-27 06:38:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-27 06:38:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-27 06:38:02       82 阅读
  4. Python语言-面向对象

    2024-04-27 06:38:02       91 阅读

热门阅读

  1. day03--react中setState的使用

    2024-04-27 06:38:02       35 阅读
  2. linux安装opencv

    2024-04-27 06:38:02       30 阅读
  3. Kafka

    Kafka

    2024-04-27 06:38:02      31 阅读
  4. js的基础知识

    2024-04-27 06:38:02       31 阅读
  5. 【动态规划】Leetcode 416. 分割等和子集【中等】

    2024-04-27 06:38:02       35 阅读
  6. Jsoup爬虫

    2024-04-27 06:38:02       34 阅读