组件库开发

组件库开发

环境搭建

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
相关推荐
0思必得06 小时前
[Web自动化] Selenium处理动态网页
前端·爬虫·python·selenium·自动化
东东5166 小时前
智能社区管理系统的设计与实现ssm+vue
前端·javascript·vue.js·毕业设计·毕设
catino6 小时前
图片、文件的预览
前端·javascript
layman05288 小时前
webpack5 css-loader:从基础到原理
前端·css·webpack
半桔8 小时前
【前端小站】CSS 样式美学:从基础语法到界面精筑的实战宝典
前端·css·html
AI老李8 小时前
PostCSS完全指南:功能/配置/插件/SourceMap/AST/插件开发/自定义语法
前端·javascript·postcss
_OP_CHEN8 小时前
【前端开发之CSS】(一)初识 CSS:网页化妆术的终极指南,新手也能轻松拿捏页面美化!
前端·css·html·网页开发·样式表·界面美化
啊哈一半醒9 小时前
CSS 主流布局
前端·css·css布局·标准流 浮动 定位·flex grid 响应式布局
PHP武器库9 小时前
ULUI:不止于按钮和菜单,一个专注于“业务组件”的纯 CSS 框架
前端·css
电商API_180079052479 小时前
第三方淘宝商品详情 API 全维度调用指南:从技术对接到生产落地
java·大数据·前端·数据库·人工智能·网络爬虫