自定义vue组件发布到npm的方法


Posted in Javascript onMay 09, 2018

本文介绍了自定义vue组件发布到npm的方法,分享给大家,具体如下:

为什么会有这个想法呢,主要是vue项目中自定义的组件在多个项目中使用。导致修改bug的时候,总是要在项目分支中修改,然后同步到主线上,这样容易导致分支修改后没有同步到主线,慢慢的就会导致组件版本不统一,而导致升级组件很繁琐,最后可能都要去维护多个组件的不同版本,这样不是我们想要的。

所以就打算将组件打包发布到npm上,每个项目中只需要在package.json中修改组件版本即可同步最新版本。

组件发布历程

1、开始对打包不是很了解,只是简单的将原有.vue文件以及相关的css、image资源进行提取,然后放到一个项目下,下面是发布组件到npm的详细步骤:

(1)新建组件项目,通过npm init来初始化一个package.json文件
(2)将提取出来的组件放到项目路径。
(3)在package.json所在目录,执行npm adduser。这里需要注册npm帐号
(4)然后要求输入用户名、密码、注册时填的邮箱。如图:

自定义vue组件发布到npm的方法

(5)然后输入npm publish即可。

如果不出以外,组件就已经发布成功了,可以通过npm install xxxx来进行安装了。

2、在使用过程中发现了一些小问题。由于当时在index.js中使用了es6的部分语法(如:数组的map、const),导致在低版本ie中会报错,虽然可以通过修改js来解决。但是作为一个有理想有抱负的码农,这种事情不能忍,因为想element-ui这些组件都是可以将.vue文件打包之后发布的。然后就想着也要弄好了。

3、然后就开始研究怎么能通过import xx from xxx即可实现加载打包后的js。通过查找资料,发现是通过package.json中有个main属性来设置加载js的路径。如图:

自定义vue组件发布到npm的方法

4、加载问题解决了,剩下就是打包问题了。由于打包需要一些webpack的配置,所以直接用vue-cli初始化了一个工程,对其中的webpack进行调整。主要是去掉build中打包配置文件webpack.prod.conf.js,这里去掉HtmlWebpackPlugin等。

https://github.com/myGitZone/mapModule 这里是示例,该项目只是一个demo。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript调用XML制作连动下拉列表框
Jun 25 Javascript
jquery和javascript中如何将一元素的内容赋给另一元素
Jan 09 Javascript
js 动态修改css文件的方法
Aug 05 Javascript
Node.js中安全调用系统命令的方法(避免注入安全漏洞)
Dec 05 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
Nov 21 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
Sep 27 Javascript
JavaScript 点击触发复制功能实例详解
Nov 02 Javascript
node.js实现为PDF添加水印的示例代码
Dec 05 Javascript
一看就会的vuex实现登录验证(附案例)
Jan 09 Javascript
javascript canvas时钟模拟器
Jul 13 Javascript
Jquery 获取相同NAME 或者id删除行操作
Aug 24 jQuery
通过vue.extend实现消息提示弹框的方法记录
Jan 07 Vue.js
React Navigation 使用中遇到的问题小结
May 08 #Javascript
官方推荐react-navigation的具体使用详解
May 08 #Javascript
JavaScript callback回调函数用法实例分析
May 08 #Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
May 08 #Javascript
vue-cli 引入、配置axios的方法
May 08 #Javascript
vue axios 给生产环境和发布环境配置不同的接口地址(推荐)
May 08 #Javascript
JavaScript实现计算圆周率到小数点后100位的方法示例
May 08 #Javascript
You might like
php递归删除目录与文件的方法
2015/01/30 PHP
PHP实现的构造sql语句类实例
2016/02/03 PHP
PHP abstract 抽象类定义与用法示例
2018/05/29 PHP
PHP 文件写入和读取操作实例详解【必看篇】
2019/11/04 PHP
javascript获得服务器端控件的ID的实现代码
2011/12/28 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
JS实现侧悬浮浮动实例代码
2013/11/29 Javascript
jQuery产品间断向下滚动效果核心代码
2014/05/08 Javascript
javascript中的this详解
2014/12/08 Javascript
JavaScript forEach()遍历函数使用及介绍
2015/07/08 Javascript
javascript+css3 实现动态按钮菜单特效
2016/02/06 Javascript
JavaScript仿flash遮罩动画效果
2016/06/15 Javascript
jquery实现tab选项卡切换效果(悬停、下方横线动画位移)
2017/05/05 jQuery
vue自定义过滤器创建和使用方法详解
2017/11/06 Javascript
详解vue静态资源打包中的坑与解决方案
2018/02/05 Javascript
解决Vue打包之后文件路径出错的问题
2018/03/06 Javascript
基于AngularJs select绑定数字类型的问题
2018/10/08 Javascript
vue 中Virtual Dom被创建的方法
2019/04/15 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
使用vue-cli3+typescript的项目模板创建工程的教程
2020/02/28 Javascript
[01:13:59]LGD vs Mineski Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
Python实现向QQ群成员自动发邮件的方法
2014/11/19 Python
Python lambda和Python def区别分析
2014/11/30 Python
Python中集合的内建函数和内建方法学习教程
2015/08/19 Python
python根据unicode判断语言类型实例代码
2018/01/17 Python
Python之文字转图片方法
2018/05/10 Python
Python通过yagmail实现发送邮件代码解析
2020/10/27 Python
Python urllib request模块发送请求实现过程解析
2020/12/10 Python
CSS3的常见transformation图形变化用法小结
2016/05/13 HTML / CSS
大学生毕业求职简历的自我评价
2013/10/24 职场文书
就业协议书
2014/09/12 职场文书
骨干教师考核评语
2014/12/31 职场文书
实习证明模板
2015/06/16 职场文书
请假条应该怎么写?
2019/06/24 职场文书
python如何利用cv2模块读取显示保存图片
2021/06/04 Python
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL