vue3 + vite npm 组件库开发(一)

2023-11-04

1.创建项目

创建一个普通的vite vue3 项目即可,我这里创建的是ts的项目,js也可,根据自己的使用习惯。

2.配置项目

  1. 根目录下创建packages目录作为组件的开发包,目录下index.ts 作为整个组件库的出口文件,导出组件

    index.ts

    import zButton from "./button/index";
    
    import { App } from "vue";
    
    const install = (app: App) => {
      app.use(zButton);
    };
    const ZUI = {
      install,
    };
    // 这是为了按需加载
    export { zButton, zInput, zTextarea };
    // 这里可以直接使用组件库
    export default ZUI;
    
  2. packages 中创建一个组件目录,目录中至少有index.ts 出口文件 和 组件模板文件:例如button.vue

    button.vue就是常规的组件封装

    index.ts

    import zButton from "./button.vue";
    import { App } from "vue";
    
    zButton.install = (app: App) => {
      app.component(zButton.name, zButton);
    };
    
    export default zButton;
    
  3. vite.config 中配置打包

    import { defineConfig } from "vite";
    import vue from "@vitejs/plugin-vue";
    
    // https://vitejs.dev/config/
    export default defineConfig({
      plugins: [
        vue(),
      ],
      
      build: {
        // 这里配置打包,打包时要排除Vue的依赖,因为我们使用组件库时本地肯定是vue 环境,否则会报isCE 的错误
        rollupOptions: {
          external: ["vue"],
          output: {
            globals: {
              vue: "Vue",
            },
          },
        },
        // 设置打包的文件和名称,名称这里可以先去npm官网搜索一下是否存在,否则后面发包不成功也要修改  
        lib: {
          entry: "./packages/index.ts",
          name: "v3-zy-ui",
        },
      },
    
    });
    

    下面执行npm run build命令会在dist 文件夹下生成这样几个文件,如果是js项目,没有mjs的文件而是包含es的文件,这个没有影响

    image-20230302150107674

  4. 配置 package.json

    {
      "name": "v3-zy-ui",
      "private": false,
      "version": "0.0.3",
      "description": "",
      "main": "./dist/v3-zy-ui.umd.js",
      "module": "./dist/v3-zy-ui.mjs",
      "exports": {
        ".": {
          "import": "./dist/v3-zy-ui.mjs",
          "require": "./dist/v3-zy-ui.umd.js"
        }
      },
      "files": [
        "dist/*"
      ],
      // 主要是前面的配置,js项目就把mjs相关的替换成打包出来的另一个即可
      "scripts": {
        "dev": "vite --mode dev",
        "build": "vite build --mode prod",
        "preview": "vite preview --mode prod"
      },
      "dependencies": {
        "md-editor-v3": "^2.8.1",
        "v3-zy-ui": "^0.0.3",
        "vue": "^3.2.45",
        "vue-router": "^4.1.6"
      },
      "devDependencies": {
        "@icon-park/vue-next": "^1.4.2",
        "@types/node": "^18.14.2",
        "@vitejs/plugin-vue": "^4.0.0",
        "typescript": "^4.9.3",
        "vite": "^4.1.4",
        "vite-plugin-vue-markdown": "^0.22.4",
        "vue-tsc": "^1.0.24"
      }
    }
    

    配置好了就npm run build 测试一下是否打包成功

3. 组件库上传npm

首先你得有npm账号

首先要在npm官网注册自己的npm账户,链接:https://www.npmjs.com/

查询是否存在包名

前面查了的就不用查了,可以npm官网上查也可 npm view 包名

没有查到或者执行命令出现下图即不存在包,可以使用该名称

image-20230302151357421

上传包必须使用npm官方源如果配置了淘宝镜像需要修改回来

(1)查看当前源:npm config get registry

(2)切换为npm源:npm config set registry https://registry.npmjs.org

(3)切换为淘宝镜像:npm config set registry=https://registry.npm.taobao.org/

添加自己的账户

npm login 点击出现的链接跟着做就行了,会验证邮箱这些

image-20230302151815895

登录完了可通过 npm who am i查看是否登录成功,出现自己的账户名即成功

上传包

npm publish 没有报错就上传成功了,报错请自行查找问题

npm登录就可以查看到自己的包了

image-20230302152338277

测试组件库

  1. npm 安装组件

  2. 然后导入使用

    <template>
    	<z-button /> 
    </template>
    <script setup>
    import { zButton } from "v3-zy-ui";
    </script>
    

    如果样式没有加载就在main.ts 中导入组件的样式文件

    import "../node_modules/v3-zy-ui/dist/style.css";

    显示出组件就没问题了,下面就自己开发自己的组件把

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue3 + vite npm 组件库开发(一) 的相关文章

随机推荐

  • 北京题库插件:没法登陆又何妨?

    背景介绍 什么是北京题库 北京题库 是专注于中小学教学产品研发的教研平台 拥有试卷 资料等优质资源 致力于为教师备课 教研提供一站式服务 百度百科 简单来说 收录的很多资料 相对好用一点 但是 其使用是有一定限制的 比如网页端必须要微信扫码
  • void与void*

    void与void void关键字的使用规则 1 如果函数没有返回值 那么应声明为void类型 2 如果函数无参数 那么应声明其参数为void 3 如果函数的参数可以是任意类型指针 那么应声明其参数为void 4 void不能代表一个真实的
  • SISD、MIMD、SIMD、MISD计算机的体系结构的Flynn分类法

    1 计算平台介绍 Flynn于1972年提出了计算平台的Flynn分类法 主要根据指令流和数据流来分类 共分为四种类型的计算平台 如下图所示 单指令流单数据流机器 SISD SISD机器是一种传统的串行计算机 它的硬件不支持任何形式的并行计
  • Elasticsearch 开启https鉴权

    Elasticsearch 早期的版本配置鉴权 由于插件收费 所以配置起来比较麻烦 但是最近发现Elasticsearch的8 2版本中可以配置https及鉴权的操作 所以记录一下给想要获取该知识的人 分享一下 第一步 修改elastics
  • Android开发屏幕适配方案

    由于Android系统的开放性 任何用户 开发者 硬件厂商和运营商都可以对Android系统和硬件进行定制 修改成他们自己所需要的样子 使得随着Android设备的增多 设备碎片化 系统碎片化 屏幕尺寸碎片化和屏幕碎片化的程度也在不断加深
  • 竞赛知识点4【搜索】

    文章目录 复习 栈和队列的概念 树 1 1 深度优先搜索 dfs 1 1 1 概念 1 1 2 例题 1 输出n个数的全排列 2 输出n个数中选m个的组合 3 N皇后 8皇后的升级版 4 马踏棋盘 1 1 3 DFS大体框架 1 1 4 剪
  • Springboot-MDC+logback实现日志追踪

    一 MDC介绍 MDC Mapped Diagnostic Contexts 映射诊断上下文 该特征是logback提供的一种方便在多线程条件下的记录日志的功能 某些应用程序采用多线程的方式来处理多个用户的请求 在一个用户的使用过程中 可能
  • Linux 安装cento

    在虚拟机中安装CentOS7 http www centoscn com image text setup 2014 0723 3341 html CentOS 7 下 ifconfig command not found 解决办法 htt
  • localStorage.setItem()使用

    localStorage setItem 使用
  • python自测100题

    如果你在寻找python工作 那你的面试可能会涉及Python相关的问题 通过对网络资料的收集整理 本文列出了100道python的面试题以及答案 你可以根据需求阅读测试 python基础 Q1 什么是Python Python是一种面向对
  • Scala学习第一天(十三):映射(可变/不可变Map;Map基本操作)

    学习目标 映射 不可变Map 可变Map Map基本操作 映射 Map可以称之为映射 它是由键值对组成的集合 在Scala中 Map也分为 不可变Map 可变Map 不可变Map 语法 val var map Map 键 gt 值 键 gt
  • Spring @ComponentScan 自定义扫描规则

    Spring ComponentScan 组件中扫描规则使用场景 package org example cap2 config import org springframework context annotation Bean impo
  • Apache Beam简介及相关概念

    文章目录 一 简介 二 基本概念 1 Pipelines 2 PCollection 3 Transforms 4 ParDo 5 Pipeline I O 6 Aggregation 7 User defined functions UD
  • H5 手机键盘兼容

    文章目录 键盘弹起页面表现 ios表现 安卓表现 监听软键盘弹起和收起 ios监听focus blur事件 安卓还可见监听页面高度 获取软键盘高度 通过window visualViewport异步获取 唤起软键盘始终让焦点元素滚动到可视区
  • SQL执行计划的十大参数

    调用分析指令分析sql再进行对应的调优 explaion select 十个参数 id 编号 select type 查询类型 table 表 type 索引类型 possible keys 预测可能用到的索引 key 实际使用的索引 ke
  • css实现垂直居中6,CSS实现水平、垂直居中的6种方式

    1 块级元素和行内元素 2 水平居中和垂直居中 3行内元素的水平居中 1 table 2 设置line height 3 text align center 4 margin 0 auto 5 绝对定位 6 flex弹性盒模型 7 calc
  • Http协议、get和post请求整理

    1 什么是GET 和 POST GET 和 POST 其实都是 HTTP 的请求方法 除了这 2 个请求方法之外 HTTP 还有 HEAD PUT DELETE TRACE CONNECT OPTIONS 这 6 个请求方法 所以HTTP的
  • VMware16 Pro的安装及VMware配置CentOS7虚拟机(快照使用)

    VMware16 Pro下载安装 1 进入官网下载 VMware官网 2 选择资源栏目 点击产品下载 3 找到VMware Workstation Pro进行下载 搜索框搜索 vmware workstation 16 pro for wi
  • mysql中双引号和单引号有什么区别

    mysql中双引号和单引号有什么区别 前2天看到有人问 mysql中双引号和单引号有什么区别 希望大家可以关注下公众号 支持一下 鞠躬感谢 我就直接po代码和截图了 如下 select from employees where last n
  • vue3 + vite npm 组件库开发(一)

    1 创建项目 创建一个普通的vite vue3 项目即可 我这里创建的是ts的项目 js也可 根据自己的使用习惯 2 配置项目 根目录下创建packages目录作为组件的开发包 目录下index ts 作为整个组件库的出口文件 导出组件 i