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

从零发布一个 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.xdnf.cn/news/12175.html

相关文章:

  • 【推荐算法】WideDeep推荐模型:融合记忆与泛化的智能推荐引擎
  • Oracle杀进程注意事项
  • 力扣100题之128. 最长连续序列
  • 探秘 MyBatis:开启你的数据库操作「智能之旅」
  • 基于Qt的app开发第十三天
  • 【深尚想】TPS54618CQRTERQ1汽车级同步降压转换器电源芯片全面解析
  • 服务器中CC攻击的特点有哪些?
  • 全面解析网络端口:概念、分类与安全应用
  • Windows 10 IoT 系统深度定制指南:从环境搭建到工业部署
  • 暴雨新专利解决服务器噪音与性能悖论
  • 【JavaScript-Day 32】深入理解 prototype、\_\_proto\_\_ 与原型链的奥秘**
  • SpringBoot3整合MySQL8的注意事项
  • 告别局域网:实现NASCab云可云远程自由访问
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的生态农庄留存运营策略研究
  • element-plus 单选组件 el-radio,选不上,又没报错,直接复制官网也不行解决方案
  • Ruoyi多主键表的增删改查
  • LeetCode 热题 100 - 哈希 - 128
  • 解决神经网络输出尺寸过小的实战方案
  • React从基础入门到高级实战:React 实战项目 - 项目二:电商平台前端
  • [pdf、epub]300道《软件方法》强化自测题业务建模需求分析共257页(202505更新)
  • OpenResty 安装指南
  • 【JS进阶】ES5 实现继承的几种方式
  • k8s开发webhook使用certmanager生成证书
  • 记一次spark在docker本地启动报错
  • PX4 | 无人机关闭磁力计罗盘飞行(yaw estimate error报错解决方法)
  • vllm安装注意事项[nccl、cuda、python相关]
  • 七彩喜智慧养老平台:科技赋能下的市场蓝海,满足多样化养老服务需求
  • spring官方脚手架连接不上解决方案
  • 语雀文档保存失败URI malformed
  • v1.0.1版本更新·2025年5月22日发布-优雅草星云物联网AI智控系统