开发vue3 UI组件库,并且发布到NPM

目录

1.创建vue3工程

2.创建package文件 

3.编写组件,并且导出

4.编写package.json

5.npm账号注册登录并发布

6.从npm安装使用

7.注意事项


1.创建vue3工程

(1)初始化Vue项目

cnpm create vite

(2)进入文件夹安装依赖

cnpm i

(3)运行项目

npm run serve

2.创建package文件 

 在根目录创建package文件夹,按照下面的目录结构创建components文件夹用来存放组件

3.编写组件,并且导出

(1)这里我们就以button组件为例,任意编写一点代码,代码如下:

<template>
  <div>
    <button>我是测试按钮</button>
  </div>
</template>
<script setup name="create-button">
    //上面的name="create-button"是组件名必须填写,他决定了在其他项目中引入此组件的名称
</script>
<style scoped>
button {
  width: 100px;
  height: 50px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: none;
  border-radius: 10px;
  cursor: pointer;
}
</style>

组件编写完毕,可以在App.vue里引入编写的组件来测试一下,我这里就不展示了

(2)下面编写同文件夹下的index.js文件,这个文件的作用主要是用来单独导出某一个组件使用的,比如将来在一个项目里只需要引入一个button组件

import createButton from './index.vue';
createButton.install = (app) => {
  app.component(createButton.name, createButton)
  return app
}

export default createButton

(3)下面再编写与components文件夹同级的index.js文件

import createButton from "./components/button/index.vue";//导入写好的组件
const components = [createButton]//所有的组件都放这个数组里
const install = (app) => {
  for (const item of components) {
    app.component(item.name, item)//批量注册组件
  }
  return app
}
export default { install }//如果有方法函数也可以在这里导出

4.编写package.json

在package文件夹下创建package.json文件并编写 create-ui是我随便写的名字

{
  "name": "create-ui",
  "version": "0.0.1",
  "description": "测试组件库",
  "author": {
    "name": "you name",
    "email": "you email"
  },
  "private": false,
  "publishConfig": {
    "access": "public",
    "registry": "https://registry.npmjs.org/"
  },
  "dependencies": {
    "vue": "^3.3.4",
    "element-plus": "^2.4.2",
    "axios": "0.24.0"
  }
}
  1. name: 项目的名称,这是在 npm 上注册和发布你的包时使用的唯一标识符。

  2. version: 项目的当前版本号。遵循语义化版本规范(Semantic Versioning),格式为主版本号.次版本号.修订号。

  3. description: 对项目的简要描述,用于展示给用户或其他开发者。

  4. author: 项目的作者信息,包括姓名和电子邮件地址。

  5. private: 一个布尔值,指示该包是否被视为私有包。如果设置为 true,则不能通过 npm publish 发布它。

  6. publishConfig: 这个字段用于配置发布时的一些参数,比如 access 用于指定包的访问级别,registry 用于指定包发布到的注册表地址。

  7. dependencies: 项目的依赖项列表。这里列出了项目所依赖的各种 npm 包以及它们的版本范围。

每个字段在 package.json 文件中都扮演着重要的角色,它们用于描述项目的基本信息、依赖关系以及发布配置等。这些信息对于 Node.js 项目的管理和发布至关重要。

除了上述列出的字段,package.json 文件还包含其他常用字段,例如:

  1. "repository":指定了项目的代码存储位置,可以是一个 URL 或者一个包含 typeurl 属性的对象。

  2. "keywords":描述了包的关键词,有助于其他开发者在 npm 上搜索到这个包。

  3. "license":指定了项目所采用的许可证类型。

  4. "scripts":包含了一系列可执行脚本的键值对。例如,可以定义 starttest 等脚本命令,以便在命令行中运行。

  5. "devDependencies":类似于 "dependencies" 字段,用于列出开发过程中需要用到的依赖包。

  6. "main":指定了包的入口文件,即当用户 require 包时的入口文件。

  7. "engines":指定了项目的运行环境要求,比如 Node.js 的版本范围等。

  8. "peerDependencies":声明了该包所需的对等依赖关系。这些依赖关系是指包与当前包一起使用的其他包。

  9. "browserslist":用于指定项目的目标浏览器和 Node.js 版本,以便在构建过程中进行相应的兼容性处理。

这些字段可以根据项目的需要进行添加和配置,以便更好地描述和管理项目的相关信息和依赖关系。

5.npm账号注册登录并发布

(1)注册账号

想要发布到npm仓库,就必须要有一个账号,先去npm官网npm | Home (npmjs.com)注册一个账号,注意记住用户名、密码和邮箱,发布的时候可能会用到。

(2)添加npm用户

添加npm用户,执行命令:

npm adduser

这里会让你填写用户名等等,如果之前设置过即可跳过此步。

(3)发布npm

在package目录下执行命令:

npm publish

如果发布失败可能是名字重复了,改了名字即可,发布成功后,我们即可到npm管网上查看自己发布得npm包:

6.从npm安装使用

直接执行安装命令:

cnpm install create-ui //我随便写的名字

然后在main.js引用注册,代码如下:

//注册全部组建
import createUi from "create-ui";
import "create-ui/index.css";//如果有css文件也可以引入
app.use(createdUi);




//单独注册某一个组件
import createButton from "create-ui/components/button";
app.use(createButton);

直接使用组件create-button,代码如下:

<template>
  <create-button></create-button>
</template>
<script setup>

</script>

7.注意事项

(1)每次发布都需要更改 package.json里面的版本号version

(2)避免用到过多的依赖,有些依赖会导致整个npm包无法使用

(3)组件的name一定要取一些不常见不会和其他组件重名的

(4)极少情况发布上去的版本会有延迟,要等30分钟左右才能下载 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode(10)跳跃游戏 II【数组/字符串】【中等】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 45. 跳跃游戏 II 1.题目 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nu…

桥接模式(结构型)

目录 一、前言 二、桥接模式 三、总结 一、前言 桥接模式&#xff08;Bridge Pattern&#xff09;是一种常用的设计模式&#xff0c;它可以将抽象部分与它的实现部分分离&#xff0c;使它们可以独立地变化。桥接模式通常用于需要在多个维度上扩展一个类的情况&#xff0c;或…

牛客网上错题总结及重写(C语言)(2)

每日一言 空不是无&#xff0c;空是一种存在&#xff0c;你得用空这种存在填满自己。 --三体 题目BC43 我当时为什么把它收藏起来呢?? 正确代码 #include <stdio.h> int main() {int n 0;scanf("%d",&n);printf("%d",n/12*42);return 0; }题…

分发饼干(贪心算法+图解)

455. 分发饼干 - 力扣&#xff08;LeetCode&#xff09; 题目描述 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最…

AI:72-基于深度学习的火灾检测

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…

C++网络编程库编写自动爬虫程序

首先&#xff0c;我们需要使用 C 的网络编程库来编写这个爬虫程序。以下是一个简单的示例&#xff1a; #include <iostream> #include <string> #include <curl/curl.h> #include <openssl/ssl.h>const char* proxy_host "duoip"; const in…

腾讯云服务器优惠服务器和优惠折扣,腾讯云用户优惠

腾讯云服务器提供了丰富多样的云服务产品&#xff0c;满足不同用户的需求。其中&#xff0c;推荐的产品包括轻量应用服务器和云服务器CVM&#xff0c;分别适用于不同规模和需求的用户。这些产品提供了各种配置和价格的服务器选项&#xff0c;涵盖了不同的计算需求。 实惠的价格…

8.5 矢量图层点要素分级(Graduated)渲染使用

文章目录 前言分级&#xff08;Graduated&#xff09;渲染QGis代码实现 总结 前言 前面介绍了矢量-点要素-单一符号以及矢量-点要素-分类符号的用法本章介绍分级&#xff08;Graduated&#xff09;渲染说明&#xff1a;文章中的示例代码均来自开源项目qgis_cpp_api_apps 分级…

图解Morris遍历

1. 简述 morris遍历是不借助栈空间实现二叉树遍历的一种方法。 其核心思想是&#xff0c;利用当前节点左子树的最右叶子节点当索引节点。 即中序遍历的前驱节点。 第一次遍历根节点的时候&#xff0c;找到该节点&#xff0c;将该节点右儿子指向根节点。 第二次回到该节点时…

说说react中引入css的方式有哪几种?区别?

一、是什么 组件式开发选择合适的css解决方案尤为重要 通常会遵循以下规则: 可以编写局部css,不会随意污染其他组件内的原生;可以编写动态的css,可以获取当前组件的一些状态,根据状态的变化生成不同的css样式;支持所有的css特性:伪类、动画、媒体查询等;编写起来简洁…

‘XXX‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。 系统找不到指定的路径。

目录 问题复现解决方案 问题复现 只要一打开cmd就提示“‘LT’ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。” 或许大家都遇到过这样的问题&#xff0c;但本篇解决的是和运行项目无关&#xff0c;而是cmd命令行自带的一个bug 解决方案 如果是执行java…

nodejs+vue+python+PHP+微信小程序-安卓-校园贴吧管理系统的设计与实现-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

arcgis--NoData数据处理

方法一&#xff1a;利用【栅格计算器】可以对NoData的值进行修改。【Spatial Analyst工具】-【地图代数】-【栅格计算器】&#xff0c;将NoData修改为某一个值。 方法二&#xff1a;先对原始数据进行重分类&#xff0c;分成1类&#xff0c;将NoData赋值为2,。然后&#xff0c;将…

外贸SEO是什么意思?谷歌优化有哪些平台?

外贸SEO优化最新指南&#xff1f;独立站谷歌SEO优化怎么做&#xff1f; 通过有效的外贸SEO策略&#xff0c;企业可以在国际市场上取得竞争优势&#xff0c;吸引更多的目标客户&#xff0c;并增加销售额。顺风船将探讨外贸SEO的重要性以及如何实施这一战略&#xff0c;以帮助您…

SDL2 加载图片

1.简介 在SDL中&#xff0c;本身只支持加载BMP格式的图片SDL_LoadBMP&#xff0c;如果想要加载别的格式图片&#xff0c;需要编译SDL_image库。 SDL_image库中IMG_Load和都是IMG_LoadTexture用于加载图片的函数&#xff0c;但是它们的使用方式和返回值有所不同。 IMG_Load和…

android studio新版本gradle Tasks找不到assemble

最近需要打包arr&#xff0c;但android studio新版本为了加快编译速度&#xff0c;取消了gradle下的assemble任务&#xff0c;网上还没有博主更新解决方案&#xff0c;因此一直找不到解决方案&#xff0c;后来尝试如下操作才解决&#xff0c;方便后来者解决。 先将这里勾选上&…

51单片机应用从零开始(二)

目录 1. 什么是单片机系统 1.1 单片机本身 1.2 构成单片机系统——单片机外围器件 2. 如何控制一个发光二极管 2.1 硬件设计&#xff08;系统电路图 &#xff09; 2.2 硬件设计&#xff08;搭建硬件电路的器材 &#xff09; 2.3 软件设计&#xff08;中文描述的程…

麒麟KYLINOS中使用Ghost镜像文件还原系统

原文链接&#xff1a;麒麟KYLINOS中使用Ghost镜像文件还原系统 hello&#xff0c;大家好啊&#xff0c;今天给大家带来麒麟KYLINOS备份还原的第三篇文章&#xff0c;使用Ghost镜像文件还原系统&#xff0c;将之前做好的Ghost镜像文件拷贝到u盘里&#xff0c;然后在另一台终端上…

使用SQL分析数据科学职业发展趋势

大家好&#xff0c;在数据成为新石油的今天&#xff0c;了解数据科学职业的细微差别比以往任何时候都更加重要。无论你是正在寻找机会的数据爱好者&#xff0c;还是资深数据专家&#xff0c;使用SQL都可以让你深入了解数据科学就业市场。 本文可以带你了解哪些数据科学职位最具…

解决渗透测试js文件泄露

解决办法&#xff1a;使用过滤器过滤 public class StaticSourceFilter implements Filter {private static Logger logger LoggerFactory.getLogger(StaticSourceFilter.class);Overridepublic void init(FilterConfig filterConfig) throws ServletException {}Overridepub…