组件库开发

组件库开发

环境搭建

menorepo

  • pnpm
  • pnpm-workspace
  • lerna 7.4.2 (已全局安装lerna)

1、初始化

1.1 新建项目目录root

1.2 在目录root 使用pnpm初始化packages.json文件,新建 pnpm-workspace.yaml文件, packages/文件夹

pnpm-workspace.yaml有这个文件表示开启工作区。

文件内容如下:

yaml 复制代码
// root/pnpm-workspace.yaml

packages:
 - "packages/*"
json 复制代码
// root/lerna.json

{
    "version": "0.0.0",
    "npmClient": "pnpm"
}

1.3 root/packages/文件夹 中新增子项目,使用lerna create <button>创建button子项目。

​ 或直接新建对应文件夹以及其中的文件...

使用lerna create <button>创建的button子项目内容如下

复制代码
root/
  |
  |packages/
	|
  	|button/
  		|__test__/  测试文件存放
		|src/  项目代码
			|index.vue
		|index.js 入口文件
 		|packages.json
		|READEME.md

root/ packages/ button/ src/ index.vue 文件写入内容

vue 复制代码
<template>
  <h1>this button component 123</h1>
</template>

<script>
export default {
  name: 'ls-button',
  setup() {
  }
}
</script>

root/ packages/ button/ index.js 文件写入内容

js 复制代码
import Button from './src/index.vue'

Button.install = function (app) {
    app.component(Button.name, Button)
}

export default Button

导出该项目中的各组件。

root/ packages/ button/ packages.json 文件写入内容

json 复制代码
{
  "name": "@liindata/ls-button",  // 注意这里的名字,下边要用的
  "version": "0.0.0",
  "description": "> TODO: description",
  "author": "zhangxm <zxumei.com>",
  "homepage": "",
  "license": "ISC",
  "main": "index.js",
  "directories": {
    "lib": "src",
    "test": "__tests__"
  },
  "files": [
    "src"
  ],
  "scripts": {
    "test": "node ./__tests__/button.test.js"
  }
}

1.4 新建 root/play/文件夹。这里用来启动服务,来测试组件或在这里编写组件库的示例文档等等等等

这里使用 vite 来配置开发环境

复制代码
root/play/
	|src/
		|App.vue
		|main.js
	|index.html
	|vite.config.js 

root/ play/ src/ App.vue 文件写入内容

vue 复制代码
<template>
    <h1>monorepo demo 1</h1>
    <lsbutton></lsbutton>
</template>
<script setup>

import Lsbutton from '@liindata/ls-button' // 这里引入我的

</script>

root/ play/ main.js 文件写入内容

js 复制代码
import {createApp} from 'vue'
import App from './App.vue'

const app = createApp(App)

app.mount('#app')

root/ play/ vite.config.js 文件写入内容

js 复制代码
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
    plugins: [vue()]
})

这时候准备工作已经ok!

2、依赖安装

经过第一步,肯定有很多疑问,比如使用了 vue、vite 但没有引入。

这里建议思考一下都要安装那些依赖,以及如何启动vite

2.1 安装依赖

复制代码
安装 vite 
pnpm add vite -w
pnpm add @vitejs/plugin-vue -w -D
安装 vue
pnpm add vue -w

进入root/packages/button/中 执行命令, 把button 包软链到根目录。以便其它包使用...

复制代码
pnpm link --dit ../../

执行后,在根目录 root/package.json 中

会自动添加 "@liindata/ls-button": "link:D:/work/liindata-ui-pnpm/packages/button"

完整内容如下。

复制代码
{
	"name": "@liindata/root",
	"scripts": {
		"play": "vite serve ./play" 这里配置root/play 为根目录启动vite
	},
	"dependencies": {
		"@liindata/ls-button": "link:D:/work/liindata-ui-pnpm/packages/button",
		"lerna": "7.4.1",
		"vue": "^3.3.7"
	},
	"devDependencies": {
		"@vitejs/plugin-vue": "^4.4.0",
		"vite": "^4.5.0"
	}
}

pendencies": {

"@liindata/ls-button": "link:D:/work/liindata-ui-pnpm/packages/button",

"lerna": "7.4.1",

"vue": "^3.3.7"

},

"devDependencies": {

"@vitejs/plugin-vue": "^4.4.0",

"vite": "^4.5.0"

}

}

复制代码
执行 pnpm play 即可启动vite
相关推荐
Bee.Bee.3 分钟前
vue3提供的hook和通常的函数有什么区别
前端·javascript·vue.js
元拓数智4 分钟前
企业级人员评价系统Web端重构实战:前端架构效能升级
前端·重构·架构
sunshine_程序媛4 分钟前
在Vue2项目中引入ElementUI详细步骤
前端·ui·elementui·前端框架·vue
离岸听风6 分钟前
Docker 构建文件代码说明文档
前端
VisuperviReborn11 分钟前
前端开发者的知识深度革命,从打牢基础开始
前端·javascript·架构
Nano12 分钟前
Vue响应式系统的进化:从Vue2到Vue3.X的深度解析
前端·vue.js
工业3D_大熊13 分钟前
3D Web轻量化引擎HOOPS Communicator赋能一线场景,支持本地化与动态展示?
前端·3d
某人的小眼睛18 分钟前
vue3 element-plus 大文件切片上传
前端·vue.js
东坡白菜20 分钟前
最快实现的前端灰度方案
前端
curdcv_po23 分钟前
🔴 你老说拿下 react,真的 拿下 了吗
前端