自定义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 相关文章推荐
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
Feb 14 Javascript
JS随机漂浮广告代码具体实例
Nov 19 Javascript
解析JSON对象与字符串之间的相互转换
Dec 18 Javascript
百度移动版的url编码解码示例
Apr 29 Javascript
JavaScript解析json格式数据简单示例
Dec 09 Javascript
jQuery动态产生select option下拉列表
Mar 15 Javascript
angularjs中的$eval方法详解
Apr 24 Javascript
vue-router 中router-view不能渲染的解决方法
May 23 Javascript
vue实现全选、反选功能
Nov 17 Javascript
vue组件开发props验证的实现
Feb 12 Javascript
微信小程序按顺序同步执行的两种方式
Dec 20 Javascript
解决vue-photo-preview 异步图片放大失效的问题
Jul 29 Javascript
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
WordPress判断用户是否登录的代码
2011/03/17 PHP
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
2012/09/23 PHP
php简单截取字符串代码示例
2016/10/19 PHP
农历与西历对照
2006/09/06 Javascript
jQuery:节点(插入,复制,替换,删除)操作
2013/03/04 Javascript
jquery和javascript的区别(常用方法比较)
2013/07/04 Javascript
jQuery动态添加删除select项(实现代码)
2013/09/03 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
2014/12/31 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
原生JavaScript编写canvas版的连连看游戏
2016/05/29 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
bootstrap suggest搜索建议插件使用详解
2017/03/25 Javascript
微信小程序中post方法与get方法的封装
2017/09/26 Javascript
Smartour 让网页导览变得更简单(推荐)
2019/07/19 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
Python类定义和类继承详解
2015/05/08 Python
Python类的定义、继承及类对象使用方法简明教程
2015/05/08 Python
python3 判断列表是一个空列表的方法
2018/05/04 Python
python使用tornado实现登录和登出
2018/07/28 Python
Python 实现异步调用函数的示例讲解
2018/10/14 Python
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
Python求两点之间的直线距离(2种实现方法)
2019/07/07 Python
python实现图像拼接
2020/03/05 Python
pandas DataFrame 数据选取,修改,切片的实现
2020/04/24 Python
python实点云分割k-means(sklearn)详解
2020/05/28 Python
css3 clip实现圆环进度条的示例代码
2018/02/07 HTML / CSS
浅析移动设备HTML5页面布局
2015/12/01 HTML / CSS
创联软件面试题笔试题
2012/10/07 面试题
大学校园毕业自我鉴定
2014/01/15 职场文书
运动会广播稿50字
2014/01/26 职场文书
《最后的姿势》教学反思
2014/02/27 职场文书
公共场所禁烟标语
2014/06/25 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
党性教育心得体会
2014/09/03 职场文书
公司介绍信范文
2015/01/31 职场文书