当前位置: 首页 > news >正文

从零发布一个 Vue 3 Button 组件到 npm(基于 Vite)

整理不易,如果本文对你有帮助,欢迎点个【赞 👍】+【收藏 ⭐】+【关注 🧡】

🚀从零发布一个 Vue 3 Button 组件到 npm(基于 Vite)

今天我们来实战一个完整流程:如何将一个 Vue 3 Button 组件打包并发布到 npm,这样你就可以在任意 Vue 项目中通过 npm install 引用它,完全开源复用,流程简单明了,适合初学者和想封装自己 UI 库的朋友。


🧱一、创建项目并初始化

① 创建项目目录

mkdir my-vue-button
cd my-vue-button

② 初始化 package.json

npm init -y
# 或使用 pnpm:
pnpm init -y

③ 安装 Vue 3 和 Vite

npm install vue@next
npm install vite @vitejs/plugin-vue --save-dev
# 或使用 pnpm:
pnpm add vue@next
pnpm add vite @vitejs/plugin-vue --save-dev

🧩二、编写 Button 组件

① 创建组件文件夹

mkdir src
touch src/Button.vue

② 编写 src/Button.vue

<template><button :class="['my-button', { 'primary': type === 'primary' }]"@click="onClick"><slot></slot></button>
</template><script setup>
defineProps({type: {type: String,default: 'default', // 'default' | 'primary'},onClick: {type: Function,default: () => {},},
})
</script><style scoped>
.my-button {padding: 8px 16px;border: none;border-radius: 4px;background: #f0f0f0;cursor: pointer;
}
.primary {background: #409eff;color: white;
}
</style>

💡 功能说明:

  • ✅ 支持 type 属性(defaultprimary
  • ✅ 支持 <slot> 自定义内容
  • ✅ 支持 onClick 点击事件

⚙️三、配置构建工具(Vite)

① 创建 vite.config.js

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';export default defineConfig({plugins: [vue()],build: {lib: {entry: 'src/Button.vue',           // 入口文件name: 'MyButton',                  // 全局变量名(UMD 格式使用)formats: ['es', 'umd'],            // 构建格式:ESM 和 UMDfileName: (format) => `button.${format}.js`, // 输出文件名},rollupOptions: {external: ['vue'],                 // 排除 Vue(宿主项目提供)output: {globals: {vue: 'Vue',                    // 映射为全局变量 Vue},},},},
});

② 修改 package.json 构建脚本

"scripts": {"build": "vite build","prepublishOnly": "npm run build"
}

③ 运行构建测试

npm run build

✅ 构建成功后将在 dist/ 生成以下文件:

  • button.es.js(ES Module 格式)
  • button.umd.js(兼容老项目)

🧾四、配置 npm 发布信息

修改 package.json,确保包含以下字段:

{"name": "@your-username/my-vue-button","version": "1.0.0","description": "A simple Vue 3 Button component","main": "dist/button.es.js","module": "dist/button.es.js","unpkg": "dist/button.umd.js","files": ["dist"],"peerDependencies": {"vue": "^3.0.0"},"devDependencies": {"vite": "^4.0.0","@vitejs/plugin-vue": "^4.0.0"}
}

🔍 关键点说明:

字段说明
name推荐使用 @作用域/组件名 避免命名冲突
peerDependencies声明使用 Vue,但不重复打包
files指定只发布 dist 构建产物

🚀五、发布到 npm

① 登录 npm

npm login
# 或:
pnpm login

📥 输入用户名、密码和邮箱即可登录。


② 发布组件包

npm publish
# 或:
pnpm publish

📌 注意事项:

  • 首次发布版本建议从 1.0.0 开始
  • 若提示包名已存在,可改用别的作用域或名称

🧪六、测试使用你的组件

① 在其他项目中安装

npm install @your-username/my-vue-button
# 或:
pnpm add @your-username/my-vue-button

② 在 Vue 项目中使用

<template><MyButton type="primary" @click="handleClick">Click Me</MyButton>
</template><script setup>
import MyButton from '@your-username/my-vue-button';const handleClick = () => {alert('Button clicked!');
};
</script>

🔁七、更新组件版本

每次发布新版本时,请修改版本号并重新构建:

# 修改 package.json 中的 version(如 1.0.1)npm run build
npm publish

📦完整流程总结

步骤操作
1️⃣创建项目并初始化 package.json
2️⃣编写 Button.vue 组件
3️⃣配置 vite.config.js 构建工具
4️⃣编辑构建脚本和发布信息
5️⃣登录并发布到 npm
6️⃣测试在其他项目中安装使用
7️⃣更新版本并发布

👏 到这里,你就完成了从 0 到发布 Vue 组件到 npm 的完整流程!是不是很简单?如果你还想继续发布更多组件,甚至封装成一个组件库,也可以按照这个流程反复使用!

📮有问题欢迎评论提问,我会尽量解答!

http://www.lqws.cn/news/162343.html

相关文章:

  • Dify源码教程:账户和密码传递分析
  • HART通讯器防爆型不带蓝牙功能TREXCHPKL9S1操作指南
  • C语言| 指针在数组中的移动
  • 电商实践 基于token防止订单重复创建
  • 【C++进阶篇】C++11新特性(中篇)
  • 2025年阿里最新软件测试面试题:Web 测试+接口测试+App 测试
  • VMware VCSA 9.0 Install
  • AI问答-vue3+ts+vite:http://www.abc.com:3022/m-abc-pc/#/snow 这样的项目 在服务器怎么部署
  • 【笔记】解决MSYS2安装后cargo-install-update.exe-System Error
  • 服务器中CC攻击的特点有哪些?
  • 数据库-MySQL
  • ES6模块化
  • 搭建前后端分离项目
  • MPLAB X IDE ​软件安装与卸载
  • Three.js光与影代码分析及原理阐述
  • 20250605车充安服务器受木马攻击导致服务不可用
  • Nuxt.js 入门总结教程
  • 通信刚需,AI联手ethernet/ip转profinet网关打通工业技术难关
  • 电路设计基础-3
  • Air8000开发板新资料开放!多功能+高扩展特性全面解锁
  • 嵌入式学习之系统编程(十)网络编程之TCP传输控制协议
  • 等比数列的概念及性质02
  • 探秘鸿蒙 HarmonyOS NEXT:实战用 CodeGenie 构建鸿蒙应用页面
  • 串:BF算法(朴素的魔术匹配算法)
  • Redis 配置与优化
  • 如何通过requests和time模块限制爬虫请求速率?
  • Unity协程Coroutine与UniTask对比
  • 如何排查和解决PHP连接数据库MYSQL失败写锁的问题
  • 数据结构:递归:泰勒展开式(Taylor Series Expansion)
  • SAP学习笔记 - 开发24 - 前端Fiori开发 Filtering(过滤器),Sorting and Grouping(排序和分组)