从零开发vue插件并发布到npm
mkdir vue-plugin-example cd vue-plugin-example npm init -y
这样就会自动生成一个package.json文件。
然后安装开发依赖
npm install vue --save
npm install --save-dev webpack webpack-cli vue-loader vue-template-compiler babel-loader @babel/core @babel/preset-env
文件夹就会变成下面这样
可以看到自动生成了package-lock.json以及node_modules文件夹。下面就可以开发自己的插件内容了。
接下来我们新建一个src文件夹,并新增index.js文件。这个就是插件的入口文件。像这样:
有一点需要注意,就是package.json的入口main默认是指向同文件夹的index.js。由于我们把入口文件放到了src下,所以这里需要改一下。
改成这样:
同时需要注意,package.json文件下的name就是供别人下载你的插件名称。这里:
package.json下的version就是插件版本,每次发布补丁或者更新大的版本的时候别忘记更新version。因为发布的时候npm会校验版本是否变化,如果没有变化的话,npm就不会更新。
npm也提供了命令自动更新版本,例如修复bug可以使用
npm version patch
版本就会从1.0.0变成1.0.1。
发布新特性可以使用
npm version minor
版本就会从1.0.0变成1.1.0。
大的版本更新
npm version major
版本就会从1.0.0变成2.0.0。
接下来就是插件的内容开发了。index.js的内容如下:
import Tag from '../packages/tag/index.js'; const components = [ Tag ]; const install = function (Vue, opts = {}) { components.forEach(component => { Vue.component(component.name, component); }); }; if (typeof window !== 'undefined' && window.Vue) { install(window.Vue); } export default { install, Tag };
packages/tag/index.js的内容如下:
import Tag from './src/tag.vue'; Tag.install = function (Vue) { Vue.component(Tag.name, Tag); } export default Tag;
packages/tag/src/tag.vue的内容如下:
<script> export default { name: "Tag", props: { text: String, closable: Boolean, }, methods: { close(e) { e.stopPropagation(); this.$emit("close", e); }, click(e) { this.$emit("click", e); }, }, render(h) { const classList = ["first_zhang_tagElement", "huating_fighter"]; return ( <span class={classList}> {this.$slots.default} {this.closable && <i class="zhang_tag_close" on-click={this.close}></i>} </span> ); }, }; </script>
这样,一个最简单的插件就开发完成了。
接下来就是如何发布到npm。首先需要有npm账号,如果没有就去注册一个。https://www.npmjs.com
这里我遇到了一个问题,就是我的npm是使用的镜像,可以用命令行查看一下当前连接的是否为npm.
npm config get registry
我的是https://registry.npmmirror.com/。如果不是npm执行以下命令:
npm config set registry https://registry.npmjs.org/
然后就是输入你的npm账号密码登录就行了。
最后就是执行命令发布你的插件。
npm publish
这里还有一个问题需要注意,就是确保你的插件名npm不存在,否则也会发布不成功。这也是npm为了确保插件唯一的保护措施。
posted on 2025-02-08 16:31 hanguahannibk 阅读(12) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理