vue3+vite自定义封装vue组件发布到npm包的全过程

 更新时间:2022年09月06日 10:39:51   作者:qq_184177677  
当市面上主流的组件库不能满足我们业务需求的时候,那么我们就有必要开发一套属于自己团队的组件库,下面这篇文章主要给大家介绍了关于vue3+vite自定义封装vue组件发布到npm包的相关资料,需要的朋友可以参考下

创建项目

  • “vue”: “^3.2.8”
  • “vite”: “^2.5.2”

习惯用HB的直接用创建vue3项目即可 或

npm init vite@latest

创建组件

打开项目 在src/components文件夹下新增文件,我这里叫TestBtn.vue

<template>
  <button>我是测试要发布的按钮组件</button>
</template>
 
//导出组件名*
<script>
	export default{
		name:'test-btn'
	}
</script> 
<script setup>

</script>
 
<style>

</style>

拿到当前项目里测试一下

//app.vue
<template>
	<div>
		<test-btn></test-btn>
	</div>
</template>

<script setup>
import TestBtn from './components/TestBtn.vue'
</script>

<style scoped>

</style>

导出组件

src下新建index.js

//index.js
import TestBtn from "./components/TestBtn.vue"; // 引入封装好的组件

export { TestBtn } //实现按需引入*


const components = [TestBtn];
const install = function(App, options) {
	components.forEach((component) => {
		App.component(component.name,component);
	});
};
export default { install } // 批量的引入*

使用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: 'TestBtn',
      fileName: (format) => `test-btn.${format}.js`
    },
    rollupOptions: {
      // 确保外部化处理那些你不想打包进库的依赖
      external: ['vue'],
      output: {
        // 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量
        globals: {
          vue: 'Vue'
        }
      }
    }
  }
})

修改package.json文件

{
	"name": "test-btn-ui",
	"version": "0.0.1",
	"scripts": {
		"dev": "vite",
		"build": "vite build",
		"serve": "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.8"
	},
	"devDependencies": {
		"@vitejs/plugin-vue": "^1.6.0",
		"@vue/compiler-sfc": "^3.2.6",
		"vite": "^2.5.2"
	}
}

打包

生成dist文件

npm run build

注册->登录npm

按提示注册就可以 npm官网

发布前准备

在dist文件生成package.json文件,自定义组件名(唯一,重名报错重新起一个就行),版本号每次上传要高于前一次版本号

//dist文件下
npm init -y

//package.json
{
  "name": "test-btn-ui",
  "version": "1.0.4",
  "description": "",
  "main": "test-btn.es.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

发布到npm

npm publish

其他项目引用

npm i test-btn-ui

//main.js
import { createApp } from 'vue'
import App from './App.vue'
import TestBtnUI from 'test-btn-ui'
import 'test-btn-ui/style.css'

createApp(App).use(TestBtnUI).mount('#app')

//页面.vue
<template>
	<test-btn></test-btn>
</template>

<script setup>

</script>

<style scoped>

</style>

参考:

总结

到此这篇关于vue3+vite自定义封装vue组件发布到npm包的文章就介绍到这了,更多相关vue3+vite封装组件发布npm包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vuex如何修改状态state的方法

    vuex如何修改状态state的方法

    这篇文章主要介绍了vuex如何修改状态state的方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • 关于vue-property-decorator的基础使用实践

    关于vue-property-decorator的基础使用实践

    这篇文章主要介绍了关于vue-property-decorator的基础使用实践,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • 3分钟迅速学会Vue中methods方法使用技巧

    3分钟迅速学会Vue中methods方法使用技巧

    最近在学习Vue,感觉methods还是有必有总结一下的,下面这篇文章主要给大家介绍了关于3分钟迅速学会Vue中methods方法使用技巧的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • Vue实现不同用户权限的方法详解

    Vue实现不同用户权限的方法详解

    在项目中,实现不同用户的权限控制是常见的需求也是常见的功能模块,本文将以 vue 为主要的代码框架介绍几种常见的权限控制方式,有需要的可以了解下
    2025-03-03
  • vue项目配置使用flow类型检查的步骤

    vue项目配置使用flow类型检查的步骤

    这篇文章主要介绍了vue项目配置使用flow类型检查的步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • 在Vue中实现对文件的压缩和解压缩功能

    在Vue中实现对文件的压缩和解压缩功能

    在前端开发中,文件的压缩和解压缩是经常需要用到的功能,尤其是在需要上传和下载文件的场景下,文件压缩可以减小文件大小,加快文件传输速度,提高用户体验,本文将介绍在Vue项目中如何进行文件的压缩和解压缩,需要的朋友可以参考下
    2023-11-11
  • Vue封装实现可配置的搜索列表组件

    Vue封装实现可配置的搜索列表组件

    在Vue.js开发中,经常会遇到需要展示搜索和列表的需求,为了提高代码复用性和开发效率,我们可以封装一个可配置的搜索列表组件,下面我们就来讲讲如何实现这样一个组件吧
    2023-08-08
  • el-table表格动态合并行及合并行列实例详解

    el-table表格动态合并行及合并行列实例详解

    在使用el-table的时候经常会涉及到表格的列合并,包括表格操作列的合并,下面这篇文章主要给大家介绍了关于el-table表格动态合并行及合并行列的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • vue组件通信传值操作示例

    vue组件通信传值操作示例

    这篇文章主要介绍了vue组件通信传值操作,结合实例形式分析了vue.js父子组件通信及兄弟组件通信相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • uniapp 获取系统信息的方法小结

    uniapp 获取系统信息的方法小结

    uni-app提供了异步(uni.getSystemInfo)和同步(uni.getSystemInfoSync)的2个API获取系统信息,系统信息返回的内容非常多,各操作系统、各家小程序、各浏览器对它们的定义也不相同
    2022-11-11

最新评论