vue3 + vite自定义封装vue + element-ui 表格组件,发布到npm包的全过程。

这篇具有很好参考价值的文章主要介绍了vue3 + vite自定义封装vue + element-ui 表格组件,发布到npm包的全过程。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一 前言

当我们项目中用到的表格太多的话,就会导致我们的代码量一直增加,所以我们要封装一个公共得组件,通过传参引入来使用,下面这篇文章主要给大家介绍了关于vue3+vite自定义封装vue组件发布到npm包的相关资料,需要的朋友可以参考下。

二 创建项目

npm init vite@latest

三 创建步骤

  1. 提示我们要安装create-vite@4.1.0得依赖,选择y
    vue3 + vite自定义封装vue + element-ui 表格组件,发布到npm包的全过程。

  2. 起一个组件名字,然后我们选择vue
    vue3 + vite自定义封装vue + element-ui 表格组件,发布到npm包的全过程。

  3. 这里我选择的是javascript,然后回车
    vue3 + vite自定义封装vue + element-ui 表格组件,发布到npm包的全过程。

  4. 安装完成
    vue3 + vite自定义封装vue + element-ui 表格组件,发布到npm包的全过程。

  5. 因为我们需要了element-ui组件库,所以我们要手动安装一下依赖

    npm install element-plus --save
    

四 创建组件

  1. 首先,我们要在src目录下,创建一个package文件夹,
    vue3 + vite自定义封装vue + element-ui 表格组件,发布到npm包的全过程。

  2. package文件夹下创建.vue文件,(自定义名字)
    vue3 + vite自定义封装vue + element-ui 表格组件,发布到npm包的全过程。

  3. 封装我们要得组件

    这里面得内容我就不过多讲解了,有不懂的小伙伴可以问我。

    <template>
        <section>
          <div class="common-table">
            <el-table :data="tableData" stripe style="width: 100%" @selection-change="commonSelect">
              <el-table-column type="selection" width="55" v-hasPermi="['anno:image:transmission']" v-if="deveops === true">
              </el-table-column>
              <template v-for="column in column">
                <el-table-column :width="column.width ? column.width : 'auto'" :prop="column.prop" :label="column.label">
                  <template #default="scope">
                    <slot v-if="column.imageId" :name="column.prop" :row="scope.row">
                    </slot>
                    <template v-else-if="column.prop === 'imagePreview'">
                      <div class="overview">
                        <common-errimg :srcImg="scope.row.thumbUrl"/>
                      </div>
                    </template>
                    <template v-else-if="column.label === '操作'" v-hasPermi="['anno:image:deletedevops'] && deletedevops">
                      <el-button v-for="(item, index) in buttons" :key="index" :type="item.type"
                        @click="$emit('commonDel', scope.row)" @keyup.prevent @keydown.enter.prevent>
                        {{ item.text }}
                      </el-button>
                    </template>
                    <template v-else-if="column.label === '操作'" v-hasPermi="['anno:image:updatemark'] && updatemark">
                      <el-button v-for="(item, index) in buttons" :key="index" :type="item.type"
                        @click="$emit('commonDel', scope.row)" @keyup.prevent @keydown.enter.prevent>
                        {{ item.text }}
                      </el-button>
                    </template>
                  </template>
                </el-table-column>
              </template>
            </el-table>
          </div>
        </section>
      </template>
      <script setup>
      const emit = defineEmits()
      const prop = defineProps({
        name: 'common-table',
        tableData: {
          type: Array
        },
        column: {
          type: Array
        },
        buttons: {
          type: Array
        },
        deveops: {
          type: Boolean
        },
        deletedevops: {
          type: String
        },
        updatemark: {
          type: String
        }
      })
      // 表格多选
      const commonSelect = (row) => {
        emit("commonRows", row)
      }
      </script>
      <style lang="scss" scoped>
      .overview {
        display: inline-block;
      }
      
      .overview img {
        max-width: 100px;
        height: auto;
        max-height: 60px;
      }
      </style>
    
  4. 我们可以把我们创建的好的组件,找一个文件引入测试一下,确保我们的代码没有问题,这里我就不展示了。

五 导出组件

  1. src 根目录中创建index.js文件,代码如下:

    import commonTable from "./package/commonTable/commonTable.vue"; // 引入封装好的组件
    export { commonTable } //实现按需引入*
    const coms = [commonTable]; // 将来如果有其它组件,都可以写到这个数组里
    
    const components = [TestBtn];
    const install = function(App, options) {
      components.forEach((component) => {
        App.component(component.name,component);
      });
    };
    export default { install } // 批量的引入*
    
  2. 使用vite构建
    编辑vite.config.js文件,新增build属性 vite中文文档

    import { defineConfig } from 'vite'
    import vue from '@vitejs/plugin-vue'
    import path from 'path'
    
    // https://vitejs.dev/config/
    export default defineConfig({
      plugins: [vue()],
      build: {
        lib: {
          entry: path.resolve(__dirname, 'src/index.js'),
          name: 'commonTable',
          fileName: (format) => `common-table.${format}.js`
        },
        rollupOptions: {
          // 确保外部化处理那些你不想打包进库的依赖
          external: ['vue'],
          output: {
            // 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量
            globals: {
              vue: 'Vue'
            }
          }
        }
      }
    })
    
  3. 修改package.json文件

    {
      "name": "common-lyh",
      "private": true,
      "version": "0.0.1",
      "type": "module",
      "scripts": {
        "dev": "vite",
        "build": "vite build",
        "preview": "vite preview"
      },
      "files": ["dist"],
      "main": "./dist/test-btn.umd.js",
      "module": "./dist/test-btn.es.js",
      "exports": {
        ".": {
          "import": "./dist/test-btn.es.js",
          "require": "./dist/test-btn.umd.js"
      }
    },
      "dependencies": {
        "vue": "^3.2.45"
      },
      "devDependencies": {
        "@vitejs/plugin-vue": "^4.0.0",
        "less": "^4.1.3",
        "sass": "^1.58.3",
        "vite": "^4.1.0"
      }
    }
    

六 打包

当我们都配置好以后,我们就要打包了,这是我们要上传得文件

  1. 打包,生成dist文件

    npm run build
    

    vue3 + vite自定义封装vue + element-ui 表格组件,发布到npm包的全过程。

  2. 注册npm账号 官网地址

    • 想要发布到npm仓库,就必须要有一个账号,先去npm官网注册一个账号,注意记住用户名、密码和邮箱,发布的时候可能会用到
    • 有些小伙伴可能本地的npm镜像源采用的是淘宝镜像源或者其它的,如果想要发布npm包,我们得吧我们得npm源切换为官方得源,命令如下:
      npm config set registry=https://registry.npmjs.org
      
  3. 发布前准备
    dist文件生成package.json文件,自定义组件名(唯一,重名报错重新起一个就行),版本号每次上传要高于前一次版本号
    dist根目录中运行:

    npm init -y
    
    {
      "name": "common-lyh",
      "version": "1.0.1",
      "description": "",
      "main": "common-table.es.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "keywords": [],
      "author": "",
      "license": "ISC"
    }
    
  4. 添加npm用户
    dist目录下,运行命令

    npm adduser
    

    添加npm账号得用户名密码还有邮箱地址

    • Username 用户名
    • Password 密码
    • Email 邮箱地址
    • Enter one-time password 验证码
      vue3 + vite自定义封装vue + element-ui 表格组件,发布到npm包的全过程。
  5. 执行发布命令

    npm publish
    

    出现如下就说明我们上传成功了,然后我们到我们的npm项目中查看结果
    vue3 + vite自定义封装vue + element-ui 表格组件,发布到npm包的全过程。
    已经上传成功
    vue3 + vite自定义封装vue + element-ui 表格组件,发布到npm包的全过程。

七 使用组件

当我们要在项目中使用的时候就复制npm i common-lyh
vue3 + vite自定义封装vue + element-ui 表格组件,发布到npm包的全过程。
package.json文件中就有了我们安装的组件
vue3 + vite自定义封装vue + element-ui 表格组件,发布到npm包的全过程。
这个时候只要像element ui 那样引入就可以全局使用了,在main.js中引入
vue3 + vite自定义封装vue + element-ui 表格组件,发布到npm包的全过程。

在我们要用到得.vue中使用
vue3 + vite自定义封装vue + element-ui 表格组件,发布到npm包的全过程。

总结

到这里我们的组件就封装并上传好了,可以随时通过npm下载并使用。文章来源地址https://www.toymoban.com/news/detail-432497.html

到了这里,关于vue3 + vite自定义封装vue + element-ui 表格组件,发布到npm包的全过程。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Vue3+element-ui + TS封装全局分页组件

    本文介绍了如何使用Vue3、element-ui和TypeScript封装一个全局分页组件。 在开始之前,你需要安装以下环境: Vue3 element-ui TypeScript 这个分页组件提供以下功能: 支持自定义每页显示条数 支持自定义跳转到指定页码 支持显示总页数和总条数 支持自定义样式 分页组件结构 分页组

    2024年02月12日
    浏览(13)
  • vue3 vite直接创建项目 添加 element-ui 按需引入和全部引入

    vue3 vite直接创建项目 添加 element-ui 按需引入和全部引入

     创建home 工程 yran dev就可以看到一个网址 点进去就可以看到效果了 添加element-ui 之前的main.js 修改后的 element-plus 在vue3中的按需引入。要比2简介很多 。自动导入也是推荐的一种写法 我们注释掉全局引用  然后改为按需引入 源文件  修改后 首先安装两款插件 修改后

    2024年02月17日
    浏览(14)
  • 基于vue和element-ui的表格组件,主推数据渲染,支持内容和方法灵活绑定,提供动态具名插槽自定义内容

    基于vue和element-ui的表格组件,主推数据渲染,支持内容和方法灵活绑定,提供动态具名插槽自定义内容

            组件名为commonTable,主要是基于element-ui中的表格组件进行二次封装的组件,集成了常用的表格功能,除默认内容的显示外,还包括以下几点:         1. 状态的筛选和显示;         2. 操作按钮的显示和方法绑定;         3. 自定义具名插槽内容的封装;      

    2024年02月07日
    浏览(9)
  • element-ui表格自定义动态列

    element-ui表格自定义动态列

    实现效果 具体功能 拖拽表头改变宽度 限制最小宽度, 实时保存设置。 隐藏列 选中列隐藏, 不显示在表格中。 “勾选” 列和\\\"操作\\\" 列不可隐藏, 并且不包含在列控制组件中。 隐藏后, 无论是否冻结均不显示。有特殊标识则要另外做判断。 列冻结 开启时, 表示选中列靠左冻结

    2024年01月24日
    浏览(8)
  • Element-UI表格自定义背景颜色

    Element-UI表格自定义背景颜色

    笔记 1.如图所示 2. 自定义样式         此处自定义设置时要加 /deep/、important ,否则不生效; 清除鼠标经过时的背景颜色: /deep/.el-table tbody tr:hovertd{     background-color: unset !important; } * 如果未设置!important该效果不生效 自定义样式时使用f12查看元素,找到对应元素的

    2024年02月15日
    浏览(17)
  • Vue3 + TS + Element-Plus —— 项目系统中封装表格+搜索表单 十分钟写五个UI不在是问题

    Vue3 + TS + Element-Plus —— 项目系统中封装表格+搜索表单 十分钟写五个UI不在是问题

    前期回顾 纯前端 —— 200行JS代码、实现导出Excel、支持DIY样式,纵横合并-CSDN博客 https://blog.csdn.net/m0_57904695/article/details/135537511?spm=1001.2014.3001.5501 目录 一、🛠️  newTable.vue 封装Table 二、🚩 newForm.vue 封装搜索表单  三、📝 TS类型 srctypesglobal.d.ts 四、♻️ 页面使用功能

    2024年01月24日
    浏览(13)
  • 【element-ui】table表格底部合计自定义配置

    【element-ui】table表格底部合计自定义配置

    目录  带合计的表格设置  自定义方法  getSummaries   【element-ui】table表格底部合计自定义配置,最近做管理系统用到饿了么UI,用到了table表格合计需求,常用的table底部,有时候不是所有内容都需要合计,比如上图这个编号是数字,但是不需要合计计算处理的,这时候就需

    2024年02月11日
    浏览(12)
  • Vue+Element-ui实现表格嵌套表格(表头不同)

    Vue+Element-ui实现表格嵌套表格(表头不同)

    data中integrateList根据后端返回的json数据确定,其格式为:

    2024年02月14日
    浏览(21)
  • Vue Element-ui Table表格排序

    Vue Element-ui Table表格排序

    一.表格中有时候会有排序的需求,如果只针对当前页进行排序,那么前端就可以实现排序,在对应需要排序的字段中,使用sortable字段即可。 二.存在分页的情况时,前端仅仅使用sortable当前页排序已经不能满足我们的需求,无法对所有数据进行排序。这时候我们就要使用后端

    2024年02月11日
    浏览(11)
  • vue element-ui表格组件动态多级表头

    vue element-ui表格组件动态多级表头

    实际项目的需求,需要根据后端动态获取的方式来初始化表格的表头包含哪些信息,且有很多信息是有规律的,所以我们需要Element UI动态生成多级表头。需要的效果图如下: 由于统计维度是可变化的(它可以是省市也可以是区县),所以需要专门设置一个表格的数据来保存

    2024年02月10日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包