编写一个Vue插件,上传NPM官网开源使用

news2024/9/21 3:28:48

插件开发及上传NPM流程

  1. 完成组件封装、组件完成统一封装成插件
  2. 插件入口文件配置
  3. src/main.js 中引入口文件、安装插件
  4. 配置 package.json 文件
  5. npm run lib 打包
  6. umd.min.js 配置到 package.json
  7. 登录 NPM 上传插件
  8. npm i 安装引入使用

一、编写好组件

在这里插入图片描述

二、插件入口文件配置 plugins/index.js

	/**
	 * 入口文件
	 * 插件的入口 => 统一管理组件
	 */
	/**
	 * 动态引入文件(webpack的API)
	 * Vue中直接使用(已经集成无需引入)
	 * 参数含义 : (目标路径,是否匹配子集文件夹,配置以.vue为后缀的文件)
	 */
	import Vue from 'vue'
	
	// 然后再定义你的插件
	
	const requireComponent = require.context('./',true,/\.vue$/);
	
	const install = vue => {
		if(install.installed) return false;
		install.installed
		// requireComponent.keys() ==> []
		requireComponent.keys().forEach(fileName => {
			const currComponent = requireComponent(fileName);		// 获取当前组件	
			const componentName = currComponent.default.name;		// 获取组件名称
			Vue.component(componentName,currComponent.default||currComponent);	// 组件全局注册(组件名称,组件选项对象)
		});
		// 全局自定义指令
		Vue.directive('focus',{
			inserted: function(el) {
				el.focus();		// input框自动获得焦点
			}
		})
	}
	
	// 合格的插件 需要环境检测
	if(typeof window !== 'undefined'&&window.Vue) install(Window.Vue)
	
	export default {
		install
	}

三、 src/main.js中引入口文件、安装插件

	import pMsg from './plugins/index.js'
	Vue.use(pMsg)

四、配置package.json

	"name": "vue-selfname-selfname-selfname-selfname",
	"private": false,
	"license": "MIT",
	"description": "A Vue.js project for message",
	"scripts": {
	  	"lib": "vue-cli-service build --target lib --name vue-selfname-selfname-selfname-selfname --dest lib src/plugins/index.js"
	},

五、npm run lib 打包

	npm run lib

出现 'vue-cli-service' 不是内部或外部命令,则需要 npm install -D @vue/cli-service
打包完成效果:
在这里插入图片描述

六、打包完成后的umd.min.js文件配置到package.json中

	"name": "vue-msg-alertmsg-selfname-selfname",
	 "private": false,
	 "license": "MIT",
	 "description": "A Vue.js project for message",
	 "main": "lib/vue-selfname-selfname-selfname-selfname.umd.min.js",

七、终端 npm login 登录NPM官网,npm publish 上传插件

	npm login
	npm publish

在这里插入图片描述

八、npm install 安装引入使用

src/main.js
在这里插入图片描述
src/App.vue
在这里插入图片描述

九、使用效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/383974.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

更安全更稳定,阿里云斩获多项云系统稳定安全运行优秀案例

近日,阿里云凭借在稳定性领域的全栈投入,获评中国信通院混沌工程实验室 2022 年度杰出贡献企业,并斩获“云系统稳定安全运行优秀案例”活动中多领域优秀案例。阿里云持续推动企业 IT 系统建设,保障千行百业安全稳定的实现数字化转…

普通人如何用AI帮你干活——娱乐1

案例描述:一天朋友突然发信息跟我说:看你朋友全最近总在显摆AI作画,看起来好像有点牛逼;我家小朋友最近在参加一个国家绘画比赛,能不能让你的AI帮忙画几张有趣的有创意的画。给小朋友做灵感启发,小朋友可以…

如何处理负面评论?利用负面评论发挥优势

每家公司都应该做的一件事:回复评论! 37%的买家积极考虑对评论的回应,以评估和对品牌的看法。所以不要忘记回复评论! 如何处理负面评论 如果您的公司正在经历大量负面评论,请了解您的产品团队如何利用它们来发挥自己的…

CSS隐藏元素、BFC、元素居中、布局

1、css中有哪些方式可以隐藏页面元素?区别是什么?1.1 display:none元素在页面上将彻底消失,元素本身占有的空间会被其他元素占有,导致浏览器的重排和重绘。特点:元素不可见,不占据空间,不会触发…

面试阿里自动化测试工程师被狂虐,回家猛补3个月,成功上岸字节

前言 大家好,我是小祖,个人背景:985中下游,无大厂实习(小厂打杂),无竞赛,无相关论文。 毕业几年,表面上用过很多技术,但都没能深入学习,一年的工…

python 支付宝营销活动现金红包开发接入流程-含接口调用加签

1 创建网页/移动应用 2 配置接口加签方式 涉及到金额的需要上传证书,在上传页面有教程, 在支付宝开放平台秘钥工具中生成CSR证书,会自动保存应用公钥和私钥到电脑上,调用支付宝接口需要应用私钥进行加签 上传完CSR证书后会有三个…

互联网衰退期,测试工程师35岁的路该怎么走...

国内的互联网行业发展较快,所以造成了技术研发类员工工作强度比较大,同时技术的快速更新又需要员工不断的学习新的技术。因此淘汰率也比较高,超过35岁的基层研发类员工,往往因为家庭原因、身体原因,比较难以跟得上工作…

DSP_TMS320F28335_PIE学习笔记

前言 本文重点探讨DSP PIE模块的学习笔记,由于学这部内容的时候,是用28335学的,所以标题是用的28335,但其实28377D和28335的PIE使用基本上是一样的,也是可以借鉴的。 正文 原理 讲点原理,PIE&#xff0…

linux minio更改密码MINIO_ACCESS_KEY报错

minio版本RELEASE.2020-11-13T20-10-18Z启动文件配置如下cat run.sh#!/bin/bashexport MINIO_ACCESS_KEYminioexport MINIO_SECRET_KEYfasffnohup /opt/minio/minio.RELEASE.2020-11-13T20-10-18Z server http://192.168.100.x/data/minio_data http://192.168.100.x/data/mini…

Docker中对已存在运行的容器修改端口映射

一、初次创建容器,指定宿主机和容器端口的映射,如下示例: docker run -itd -p 11935:1935 -p 11985:1985 -p 18080:8080 -p 20903:20903 -p 18888:8888 \ --restartalways \ -v /srv/srs3/conf/:/usr/local/srs/conf/ \ -v /srv/srs3/objs/:…

Android总结汇总

一、APP1、混合开发项目AHP地址:https://github.com/Witnin/AHP简介:KotlinJava二、路由框架1、集成ARouter导航框架官网地址(停止维护):https://github.com/alibaba/ARouter/blob/master/README_CN.mdjadepeakpoet&am…

Leedcode 1011. 在 D 天内送达包裹的能力

题目 传送带上的包裹必须在 days 天内从一个港口运送到另一个港口。 传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量(weights)的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。 返回能在 day…

利用DSCync进行域内权限维持

一个域环境可以拥有多台域控制器,每台域控制器各自存储着一份所在域的活动目录的可写副本,对目录的任何修改都可以从源域控制器同步到本域、域树或域林中的其他域控制器上。当一个域控想从另一个域控获取域数据更新时,客户端域控会向服务端域…

【Echarts图例点击事件】自定义Echarts图例legend点击事件(已解决)

目录先睹为快(效果)1、实现Echarts多条曲线2、点击echarts触发接口请求2.1 先默认隐藏部分数据2.2 自定义legend图例点击事件3、源码下载地址(解压即用)**【写在前面】**这下我又不得不说了,还是客户现场使用时想查询一…

宽度学习系统BLS推广到在线学习的论文阅读记录

BELS: A BROAD ENSEMBLE LEARNING SYSTEM FOR DATA STREAM CLASSIFICATION 摘要:这篇文章主要是将BLS推广到适用于在线学习的邻域,提出了其如何进行适合在线学习的增量更新,以及面对概念漂移的适应 所提出的算法BELS 稀疏特征映射的更新 …

【牛客网刷题记录】,后面遇到的一些问题都会在这里记录,欢迎大家批评指正

文章目录数据结构篇数组字符串链表树图堆算法篇哈希查找排序数据库篇SQL语言篇数据结构篇 数组 省流: 计算二维数组指定元素的位置压缩矩阵 1. 执行以下代码段(程序已包含所有必需的头文件)会输出什么结果。 char a[] "abcd", b[10] "abcd"…

被围绕的区域

题目链接 leetcode——在线链接 题目描述 给你一个 m x n 的矩阵 board ,由若干字符 ‘X’ 和 ‘O’ ,找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。 题目示例 输入:board [[“X”,“X”,“X”,…

德标1.4571合金元素钛的影响

1.45711.4571介绍:1.4571在316的基础上加入了钛,为解决316晶间腐蚀发展起来的钢种,有良好的耐晶间腐蚀性能,在稀H2SO4、H3PO4及有机酸和海洋大气中耐蚀性能有所提高。其它性能和316相近。◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆…

【项目实战】为什么我选择使用CloseableHttpClient,而不是HttpClient,他们俩有什么区别?

一、HttpClient介绍 HttpClient是Commons HttpClient的老版本,已被抛弃,不推荐使用; HttpClient是一个接口,定义了客户端HTTP协议的操作方法。 它可以用于发送HTTP请求和接收HTTP响应。 HttpClient接口提供了很多方法来定制请求…

RK3288-android8-IR-选不中小窗口

IR红外功能,多么基础的功能,但是说来也不简单 因为,小小的红外看似基础,实则设计太多东西了, 从关机涉及Uboot;到内核kernel键码上报;到android键码的实现,小小的功能涉及大大的范围; (101条消息) rk3288-android8-IR-mouse_旋风旋风的博客-CSDN博客 大家可以看一下我之前的…