当前位置: 首页 > news >正文

组件库开发

组件库开发

环境搭建

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有这个文件表示开启工作区。

文件内容如下:

// root/pnpm-workspace.yamlpackages:- "packages/*"
// 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 文件写入内容

<template><h1>this button component 123</h1>
</template><script>
export default {name: 'ls-button',setup() {}
}
</script>

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

import Button from './src/index.vue'Button.install = function (app) {app.component(Button.name, Button)
}export default Button

导出该项目中的各组件。

root/ packages/ button/ packages.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 文件写入内容

<template><h1>monorepo demo 1</h1><lsbutton></lsbutton>
</template>
<script setup>import Lsbutton from '@liindata/ls-button' // 这里引入我的</script>

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

import {createApp} from 'vue'
import App from './App.vue'const app = createApp(App)app.mount('#app')

root/ play/ vite.config.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

相关文章:

组件库开发

组件库开发 环境搭建 menorepo pnpmpnpm-workspacelerna 7.4.2 &#xff08;已全局安装lerna&#xff09; 1、初始化 1.1 新建项目目录root 1.2 在目录root中使用pnpm初始化packages.json文件&#xff0c;新建 pnpm-workspace.yaml文件&#xff0c; packages/文件夹 pnp…...

【python基础】魔法参数*args, **kwargs的使用

文章目录 前言一、*args 和 **kwargs 是什么&#xff1f;二、*args 的用法打包参数&#xff1a;将不定数量的参数传递给一个函数拆分参数&#xff1a;调用一个函数 三、**kwargs 的用法打包参数&#xff1a;将不定数量的参数传递给一个函数拆分参数&#xff1a;调用一个函数 四…...

Android Icon 添加水印 Python脚本

源代码 # -*- coding: utf-8 -*- from PIL import Image 图片合成def mergePictureLXJ():commonIcon Image.open("icon.png")markIcon Image.open("领现金.png")markLayer Image.new(RGBA, commonIcon.size, (0, 0, 0, 0))markLayer.paste(markIcon, (0…...

选择Centos系统需不需要带SElinux?

CentOS 7的SELinux代表"Security-Enhanced Linux"&#xff0c;它是一个Linux操作系统的安全增强功能。SELinux是一个强制访问控制&#xff08;Mandatory Access Control&#xff0c;MAC&#xff09;系统&#xff0c;它在操作系统级别提供了更加精细的访问控制和安全策…...

项目级asp.net框架的LIMS实验室管理系统源码

LIMS可用于管理完整的实验程序&#xff0c;从样品登记到检验、校核、审核到最终批准报告&#xff0c;建立在过程质量控制的基础上&#xff0c;对检测流程进行有效全面的管理&#xff0c;对影响质量的人、机、料、法、环因素加以控制&#xff0c;同时为质量改进提供数据依据。进…...

pthread 变量静态初始化 避免使用被销毁过的变量

pthread 变量静态初始化 互斥锁&#xff1a;pthread_mutex_t g_mutex PTHREAD_MUTEX_INITIALIZER;读写锁&#xff1a;pthread_rwlock_t g_rwlock PTHREAD_RWLOCK_INITIALIZER;条件变量&#xff1a;pthread_cond_t g_cond PTHREAD_COND_INITIALIZER; 适用场景 以互斥锁为例…...

深度学习之基于ResNet18的神经网络水果分类系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介二、功能三、神经网络水果分类系统四. 总结 一项目简介 基于ResNet18神经网络的水果分类系统是一个利用深度学习技术进行水果图像分类的系统。下面是该系统…...

并查集易错点

并查集就俩核心点,1是找父节点,2是合并 1: return fa[x] x ? x : fa[x] find(fa[x]); 2. fa[find(a)] find(b) 第二步还挺容易写错的,左边是find(a)的根,而不是fa[a]...

车载网关产品解析(附:车载网关详细应用案例及部署流程)

5G车载网关是一款功能强大的工业级无线通讯设备。它集成了4G/5G双模网络模块、M12接口设计、强大的路由和安全功能等特性,可以为车载和移动应用提供稳定可靠的无线数据连接。 链接直达&#xff1a;https://www.key-iot.com/iotlist/sv900.html ### 产品特性 5G车载网关最大的…...

高校教务系统登录页面JS分析——天津大学

高校教务系统密码加密逻辑及JS逆向 本文将介绍天津大学教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文&#xff0c;你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文仅供交流学习&#xff0c;勿用于非法用途。 一、密…...

68 内网安全-域横向PTHPTKPTT哈希票据传递

目录 演示案例:域横向移动PTH传递-Mimikatz域横向移动PTK传递-Mimikatz域横向移动PTT传递-MS14068&kekeo&local国产Ladon内网杀器测试验收-信息收集,连接等 涉及资源: PTH(pass the hash) #利用lm或ntlm的值进行的渗透测试 PTT(pass the ticket) #利用的票据凭证TGT进行…...

【1】2023版密评算分工具

0X01 前言 工具根据商用密码应用安全性评估量化评估规则&#xff08;2023年8月1日实施&#xff09;实现 0x02 工具功能介绍 给定D A K的打分结果&#xff0c;计算单个测评对象和测评单元得分。根据测评单元得分计算测评层面得分根据测评层面得分计算报告整体得分配置文件说明…...

人工智能常用网站

ModelScope - 模型列表页 https://huggingface.co/models...

OpenLayers实战,OpenLayers结合下拉菜单实现城市切换,动态切换城市边界到地图视图视角范围内

专栏目录: OpenLayers实战进阶专栏目录 前言 本章是OpenLayers综合实战案例,使用OpenLayers结合下拉菜单实现城市切换,动态切换城市边界到地图视图视角范围内。 本章需要使用到ElementUI的下拉框组件和OpenLayers的TopoJson格式解析地市边界数据并负责渲染,通过动态创建s…...

UE5 日记(人物连招:蒙太奇动画通知(含视频链接))

教程https://www.youtube.com/watch?vsWpENaVGj2M&listPLiSlOaRBfgkcPAhYpGps16PT_9f28amXi&index10&ppiAQB 相关蓝图 连招逻辑 动画通知类 逻辑分析 1.用户输入 已搭载战斗系统模块,可以收到输入指令 2.连击 第一次攻击&#xff1a; 第一次攻击&#xff0c;…...

葡萄酒是如何从葡萄园到你的酒杯的?

根据定义&#xff0c;我们称葡萄酒的美味花蜜是葡萄酒精发酵的产物。也有果酒&#xff0c;或乡村酒&#xff0c;是由发酵的水果制成的。然而&#xff0c;传统意义上的葡萄酒是由酿酒葡萄制成的。好吧&#xff0c;一切都是在几个步骤中完成的&#xff0c;来自云仓酒庄品牌雷盛红…...

Oracle Exadata X7-2掉电宕机导致集群无法启动处理过程

文章目录 前言一、当前的状态是什么&#xff1f;二、集群启动异常怀疑对象1.排查心跳网络异常ping自己私有IP延迟高ping其它主机私有IP不通 2.是否发生过重启 三、日志信息收集ocssd.trc集群crs日志cell的griddisk状态及报错 四、IB交换机的问题排查处理五、紧急恢复业务在IB完…...

锐捷RG-EW1200G登录绕过漏洞复现

文章目录 锐捷RG-EW1200G登录绕过漏洞复现0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.复现 0x06 修复建议 锐捷RG-EW1200G登录绕过漏洞复现 0x01 前言 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、…...

Python之循环语句

循环普遍存在于日常生活中&#xff0c;同样&#xff0c;在程序中&#xff0c;循环功能也是至关重要的基础功能。 循环在程序中同判断一样&#xff0c;也是广泛存在的&#xff0c;是非常多功能实现的基础 while循环的基础语法 生活中的循环 程序中的循环 只要条件满足 会无限循…...

python中使用websocket调用、获取、保存大模型API

笔者最近在测试星火大模型的时候&#xff0c;他们是使用websocket 来建立对话&#xff0c;而且星火大模型开放的测试代码&#xff0c;质量上不咋地&#xff08;20231030记录&#xff09;&#xff0c;还需要对websocket有一定的了解&#xff0c;才适合自己微调。 安装&#xff…...

TLT库:面向Arduino的Telit ME310G1蜂窝通信轻量级C++ SDK

1. 项目概述TLT&#xff08;Telit Library for Arduino&#xff09;是一个面向嵌入式蜂窝通信的轻量级C库&#xff0c;专为CodeZoo ME310G1 Telit模块在Arduino平台上的集成而设计。该库并非从零构建&#xff0c;而是基于Arduino官方MKRNB库&#xff08;arduino-libraries/MKRN…...

基于GEC6818的牛棚智能监控系统设计与实现

1. 项目背景与需求分析现代畜牧业正经历着从传统人工管理向智能化、自动化转型的关键阶段。作为一名长期从事嵌入式系统开发的工程师&#xff0c;我曾参与过多个农业物联网项目&#xff0c;深刻理解养殖环境监控对牲畜健康和生产效率的影响。牛棚作为奶牛日常生活的主要场所&am…...

Whishper自定义配置指南:如何根据需求调整参数实现最佳转录效果

Whishper自定义配置指南&#xff1a;如何根据需求调整参数实现最佳转录效果 【免费下载链接】whishper Transcribe any audio to text, translate and edit subtitles 100% locally with a web UI. Powered by whisper models! 项目地址: https://gitcode.com/gh_mirrors/wh/…...

保姆级教程:为你的YOLOv8检测结果叠加Grad-CAM热力图(附完整代码与避坑指南)

YOLOv8检测结果可视化实战&#xff1a;Grad-CAM热力图生成全流程解析 在目标检测领域&#xff0c;YOLOv8以其卓越的速度-精度平衡成为工业界和学术界的宠儿。但模型的可解释性一直是深度学习应用的痛点——我们往往只能看到检测框和置信度&#xff0c;却无法直观理解模型"…...

Claude Code 进行“从头重写”的项目 Claw Code全面介绍(claw-code)

一个对泄露的 Claude Code 进行“从头重写”的项目&#xff0c;已成为 GitHub 上增长最快的仓库。一、项目是什么 claw-code&#xff08;仓库全名写作 Rewriting Project Claw Code&#xff09;是一个围绕「智能体 Harness&#xff08; harness&#xff1a;把模型、工具、会话与…...

商品详情API的SLA保障体系:监控告警、异常检测与自动化修复

在电商业务中&#xff0c;商品详情API是连接前端展示与后端数据的核心枢纽&#xff0c;其稳定性、可用性直接决定用户体验与业务转化——用户点击商品卡片后&#xff0c;若API响应延迟、数据异常或服务中断&#xff0c;会直接导致用户流失、订单损失。SLA&#xff08;服务等级协…...

从报错到解决:ipmitool lan与lanplus接口区别详解(避坑指南)

从报错到解决&#xff1a;ipmitool lan与lanplus接口区别详解&#xff08;避坑指南&#xff09; 在服务器带外管理的日常运维中&#xff0c;ipmitool是工程师们不可或缺的利器。但你是否遇到过这样的场景&#xff1a;明明参数正确&#xff0c;却因一个简单的接口类型选择错误而…...

快速原型验证:利用快马平台对比openclaw切换不同ai模型的代码生成效果

最近在做一个前端小工具时&#xff0c;突然想到一个问题&#xff1a;不同AI模型生成的代码效果到底有多大差异&#xff1f;正好发现了InsCode(快马)平台这个神器&#xff0c;用它快速搭建了个对比工具&#xff0c;整个过程比想象中简单多了。 需求分析 核心需求很简单&#xff…...

Java 并发编程封神!从入门到精通,面试再也不怕被问爆

目录 synchronized 支持重入吗&#xff1f;如何实现的? syncronized锁升级的过程讲一下 JVM对Synchornized的优化&#xff1f; 介绍一下AQS CAS 和 AQS 有什么关系&#xff1f; 如何用 AQS 实现一个可重入的公平锁&#xff1f; Threadlocal作用&#xff0c;原理&#x…...

从特征多项式到行列式:揭秘矩阵特征值之积的几何意义

1. 特征多项式&#xff1a;打开矩阵奥秘的钥匙 我第一次接触特征多项式时&#xff0c;完全被这个抽象的概念搞晕了。直到有一天&#xff0c;我的导师用了一个简单的比喻&#xff1a;"特征多项式就像是矩阵的DNA检测报告&#xff0c;它能告诉我们这个矩阵最本质的特性。&qu…...