从零开始:构建、打包并上传个人前端组件库至私有npm仓库的完整指南

文章目录

      • 一、写组件
        • 1、注册全局组件方法
        • 2、组件1
        • 3、组件2
      • 二、测试
      • 三、发布
        • 1、配置package.json
        • 2、生成库包
        • 3、配置发布信息
        • 4、发布
      • 四、使用
        • 1、安装
        • 2、使用
      • 五、维护
        • 1、维护和更新
        • 2、注意事项

一、写组件

  • 确定组件库的需求和功能:在开始构建组件库之前,你需要明确你的组件库需要包含哪些组件,以及这些组件应该具备哪些功能。这有助于你更好地规划你的开发工作。

  • 编写组件代码:使用你熟悉的前端框架(如React、Vue等)编写组件代码。确保你的代码具有良好的可读性和可维护性,并遵循相关的编码规范。

  • 创建组件库的结构:为了组织和管理你的组件,你需要创建一个清晰的目录结构。这可以包括组件的源代码、样式文件、文档和示例等。

1、注册全局组件方法

plugins/index.js

const requireComponent = require.context('./', true, /\.vue$/)
const install = (Vue) => {if (install.installed) returninstall.installedrequireComponent.keys().forEach(element => {const config = requireComponent(element)if (config && config.default.name) {const componentName = config.default.nameVue.component(componentName, config.default || config)}});
}if (typeof window !== 'undefined' && window.Vue) {install(window.Vue)
}export default {install
}
2、组件1

plugins/msg/index.vue

<template><div>vue-msg</div>
</template><script>
export default {name: "vue-msg",data() {return {};},methods: {},mounted() {},
};
</script><style scoped></style>
3、组件2

plugins/button/index.vue

<template><div><button @click="onStart">点击</button></div>
</template><script>
export default {name: "vue-button",data() {return {};},methods: {onStart() {console.log("测试");},},mounted() {},
};
</script><style scoped></style>

二、测试

  • 编写文档和示例:为你的组件编写清晰的文档和示例,这有助于其他开发者理解和使用你的组件库。

main.js

import install from './plugins'
Vue.use(install)

app.vue

<template><div><vue-msg></vue-msg><vue-button></vue-button></div>
</template><script>
export default {data() {return {};},methods: {},mounted() {},
};
</script><style scoped></style>

三、发布

1、配置package.json
  "scripts": {"serve": "vue-cli-service serve","build": "vue-cli-service build","lib": "vue-cli-service build --target lib --name zouComponent --dest zouComponent/lib src/plugins/index.js",},
2、生成库包

打包组件库:运行打包命令,将你的组件库打包成一个npm包。这通常会在你的项目根目录下生成一个目录,其中包含打包后的文件。

npm run lib

这是生成的zouComponent文件夹。
在这里插入图片描述

3、配置发布信息

配置package.json:在项目的根目录下创建一个package.json文件,并配置相关的元信息,如组件库的名称、版本、描述、入口文件等。

在zouComponent文件夹里面创建package.json文件配置发布信息:

{"name": "zou-component","version": "0.1.2","private": false,"license": "MIT","description": "今天我发布一个zouComponent组件库","main": "lib/zouComponent.umd.min.js","scripts": {},"dependencies": {},"devDependencies": {}}

在这里插入图片描述

4、发布
  • 配置npm仓库:如果你还没有一个私有的npm仓库,你需要先搭建一个。你可以使用Verdaccio等工具来快速搭建一个私有的npm仓库。

  • 配置npm源:在你的本地开发环境中,将npm的源配置为你的私有仓库地址。这可以确保当你发布组件库时,它会被上传到你的私有仓库而不是公共的npm仓库。

  • 登录到npm仓库:在终端中运行npm login命令,并按照提示输入你的npm仓库的用户名、密码和邮箱地址。这将使你能够发布包到你的私有仓库。

  • 发布组件库:在终端中运行npm publish命令来发布你的组件库。这会将你的组件库上传到你的私有npm仓库中。

配置npm源

npm set registry http://localhost:4873/

在zouComponent文件夹里面执行发布命令

npm publish

或者

npm publish --registry http://localhost:4873

在这里插入图片描述

四、使用

一旦你的组件库被发布到私有npm仓库,你就可以在其他项目中使用它了。只需在项目中使用npm install命令来安装你的组件库,然后按照文档中的说明来使用它即可。

1、安装
npm install zouComponent

在这里插入图片描述

2、使用

main.js

import zouComponent from 'zou-component'
Vue.use(zouComponent)

app.vue

<template><div><vue-msg></vue-msg><vue-button></vue-button></div>
</template><script>
export default {data() {return {};},methods: {},mounted() {},
};
</script><style scoped></style>

五、维护

1、维护和更新

随着项目的进行,你可能需要对你的组件库进行维护和更新。这包括修复bug、添加新功能、更新文档等。在每次更新后,记得重新打包并发布你的组件库,以便其他项目能够使用到最新的版本。

2、注意事项
  • 版本控制:确保你的组件库使用版本控制(如Git),以便你可以追踪和管理不同版本的代码。

  • 测试:在发布组件库之前,确保进行充分的测试,以确保其稳定性和可用性。

  • 文档和示例:持续更新和维护你的文档和示例,以帮助其他开发者更好地理解和使用你的组件库。

  • 记得在开发过程中保持代码质量和可维护性,并定期更新和维护你的组件库。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/304744.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【51单片机入门记录】RTC(实时时钟)-DS1302应用

目录 一、DS1302相关写函数 &#xff08;1&#xff09;Write&#xff3f;Ds1302 &#xff08;2&#xff09;Write&#xff3f;Ds1302&#xff3f;Byte 二、DS130相关数据操作流程及相关代码 &#xff08;1&#xff09;DS1302初始化数据操作流程及相关代码 (shijian[i]/10&…

4.9号驱动

1. ARM裸机开发和Linux系统开发的异同 相同点&#xff1a;都是对硬件进行操作 不同点&#xff1a; 有无操作系统 是否具备多进程多线程开发 是否可以调用库函数 操作地址是否相同&#xff0c;arm操作物理地址&#xff0c;驱动操作虚拟地址 2. Linux操作系统的层次 应用层…

SOCKS代理是如何提高网络性能和兼容性的?

SOCKS代理作为一种网络协议中间件&#xff0c;不仅在提升网络隐私和安全性方面发挥着重要作用&#xff0c;也在提高网络性能和兼容性方面有着不容忽视的影响&#x1f680;。本文将深入探讨SOCKS代理如何通过减少网络延迟&#x1f680;、优化数据传输&#x1f504;、提高跨平台兼…

基于Yolov5的检测系统实战

文章目录 一、数据集 二、网络结构 三、完整文件目录介绍 四、测试分析 一、数据集 1、数据格式&#xff1a;图像数据&#xff08;JPG格式&#xff09;&#xff0c;采用labelme标注后的图像&#xff08;XML格式&#xff09;&#xff0c;训练需要的TXT格式 2、数据来源&…

软考高项总结:第17章干系人管理

一、管理基础 1、每个项目都有干系人,他们会受到项目积极或消极的影响,或者能对项目施加积极或消极的影响。项目经理和团队管理干系人的能力决定着项目的成败。为提高项目成功的概率,尽早开始识别干系人并引导干系人参与。当项目章程被批准、项目经理被委任,以及团队开始组…

损失函数-交叉熵 梯度下降

文章目录 1、交叉熵的简单例子1.2、Classification Error&#xff08;分类错误率&#xff09;1.3、Mean Squared Error (均方误差)1.4、交叉熵损失函数1.5、二分类 2、什么是梯度下降法&#xff1f;2.2、梯度下降法的运行过程2.3、二元函数的梯度下降 1、交叉熵的简单例子 参考…

论大数据服务化发展史

文章目录 引言正文单一指令阶段脚本化阶段用户界面操作阶段大模型AIOPS阶段总结 引言 一直想写一篇服务化相关的文章&#xff0c;那就别犹豫了现在就开始吧 正文 作为大数据基础架构工程师&#xff0c;业界也笑称“运维Boy”&#xff0c;日常工作就是在各个机器上部署以及维…

分布式锁-redission

5、分布式锁-redission 5.1 分布式锁-redission功能介绍 基于setnx实现的分布式锁存在下面的问题&#xff1a; 重入问题&#xff1a;重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中&#xff0c;可重入锁的意义在于防止死锁&#xff0c;比如HashTable这样的代码…

python基础——MySQL

文章目录 一、引入pymysql二、使用三、执行非查询性质的SQL语句四、执行查询性质的SQL语句五、数据插入 一、引入pymysql 除了使用图形化工具以外&#xff0c;我们也可以使用编程语言来执行SQL从而操作数据库。 在Python中&#xff0c;使用第三方库:pymysql来完成对MySQL数据库…

【知识扫盲】DHCP Server扫盲与作用

DHCP Server在实际应用中非常广泛&#xff0c;它适用于各种规模的网络环境&#xff0c;从小型办公室到大型企业网络&#xff0c;都能发挥重要作用。以下是一些具体的使用场景&#xff0c;用通俗易懂的语言进行解释。 1. 办公室网络环境 在一家公司的办公室里&#xff0c;通常会…

【机器学习算法】决策树和随机森林在计算机视觉中的应用

前言 决策树和随机森林在计算机视觉中有着广泛的应用。决策树作为一种简单而强大的分类模型&#xff0c;可以用于图像分类、目标检测、特征提取等任务。它能够根据图像的特征逐层进行判断和分类&#xff0c;从而实现对图像数据的智能分析和理解。随机森林作为一种集成学习方法&…

如何在Ubuntu系统使用docker部署DbGate容器并发布至公网可访问

文章目录 1. 安装Docker2. 使用Docker拉取DbGate镜像3. 创建并启动DbGate容器4. 本地连接测试5. 公网远程访问本地DbGate容器5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定公网地址远程访问 本文主要介绍如何在Linux Ubuntu系统中使用Docker部署DbGate数据库管理工…

算法——链表(1)

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 小比特 大梦想 此篇文章与大家分享链表专题的第一部分 如果有不足的或者错误的请您指出! 1.链表常用技巧总结 1.1引入虚拟头结点 在力扣上,基本提供的链表题目都是"无头的",但是针对无头链表,我们最…

使用Android完成案例教学

目录 题目&#xff1a;完成在Android平台下2个玩家分别利用2个手机连接在同一局域网下通过滑动摇杆分别使红飞机和黄飞机移动的开发。&#xff08;全代码解析&#xff09; 题目&#xff1a;完成在Android平台下2个玩家分别利用2个手机连接在同一局域网下通过滑动摇杆分别使红飞…

c++之旅第九弹——模版

大家好啊&#xff0c;这里是c之旅第九弹&#xff0c;跟随我的步伐来开始这一篇的学习吧&#xff01; 如果有知识性错误&#xff0c;欢迎各位指正&#xff01;&#xff01;一起加油&#xff01;&#xff01; 创作不易&#xff0c;希望大家多多支持哦&#xff01; 一.模版的概念…

ORB-SLAM3整体流程详解

0. 简介 在之前&#xff0c;作者曾经转过一篇《一文详解ORB-SLAM3》的文章。那篇文章中提到了ORB-SLAM3是一个支持视觉、视觉加惯导、混合地图的SLAM系统&#xff0c;可以在单目&#xff0c;双目和RGB-D相机上利用针孔或者鱼眼模型运行。与ORB-SLAM2相比&#xff0c;ORB-SLAM3…

qiankun框架中基于actions机制实现主应用与子应用间的双向通信

文章目录 一、原理1、setGlobalState&#xff1a;2、onGlobalStateChange&#xff1a;3、offGlobalStateChange&#xff1a;4、图解 二、示例主应用1、在父应用中使用initGlobalState设置全局状态actions并导出供其他组件使用。2、在main.js中引入actions实例并在注册子应用时通…

Ubuntu20.04安装ROS过程记录以及常见报错处理

官网安装步骤如下&#xff1a; http://wiki.ros.org/cn/noetic/Installation/Ubuntu#A.2BXwBZy1uJiMU- 第一个&#xff1a;添加ROS软件源 sudo sh -c echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-la…

中位数和众数-第12届蓝桥杯选拔赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第49讲。 中位数和众数&…

逆向入门:为CTF国赛而战day05day06

用的汉化版的 昨天做了一道题目&#xff0c;然后下了那个apkide改之理,就没了 今天再来一题。 我发现&#xff1a;ascii表要好好学。这里#号是35就被写到题目里去了。 CTF reverse 不一样的flag_ctf reverse flag.bin-CSDN博客