自定义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压缩工具:X2JSCompactor
Jun 13 Javascript
javascript 折半查找字符在数组中的位置(有序列表)
Dec 09 Javascript
JavaScript设置、获取、清除单值和多值cookie的方法
Nov 17 Javascript
基于javascript代码实现通过点击图片显示原图片
Nov 29 Javascript
js的各种排序算法实现(总结)
Jul 23 Javascript
Actionscript与javascript交互实例程序(修改)
Sep 22 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
Dec 22 Javascript
解析JavaScript实现DDoS攻击原理与保护措施
Dec 26 Javascript
jQuery实现获取table中鼠标click点击位置行号与列号的方法
Oct 09 jQuery
vue.js提交按钮时进行简单的if判断表达式详解
Aug 08 Javascript
Vue 组件封装 并使用 NPM 发布的教程
Sep 30 Javascript
vuecli3.x中轻松4步带你使用tinymce的步骤
Jun 25 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
分页详解 从此分页无忧(PHP+mysql)
2007/11/23 PHP
PHP IF ELSE简化/三元一次式的使用
2011/08/22 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
2013/05/03 PHP
php的mssql数据库连接类实例
2014/11/28 PHP
PHP递归调用数组值并用其执行指定函数的方法
2015/04/01 PHP
用php代码限制国内IP访问我们网站
2015/09/26 PHP
javascript生成/解析dom的CDATA类型的字段的代码
2007/04/22 Javascript
My Desktop :) 桌面式代码
2008/12/29 Javascript
利用ajaxfileupload插件实现文件上传无刷新的具体方法
2013/06/08 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
JavaScript中的函数声明和函数表达式区别浅析
2015/03/27 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
2016/02/02 Javascript
jquery获取复选框checkbox的值实现方法
2016/05/30 Javascript
实例解析jQuery中如何取消后续执行内容
2016/12/01 Javascript
微信小程序 slider 详解及实例代码
2017/01/10 Javascript
Node.js静态服务器的实现方法
2018/02/28 Javascript
从0到1搭建Element的后台框架的方法步骤
2019/04/10 Javascript
JavaScript实现放大镜效果代码示例
2020/04/29 Javascript
ES6函数实现排它两种写法解析
2020/05/13 Javascript
Python pickle模块用法实例
2015/04/14 Python
Python学习之Anaconda的使用与配置方法
2018/01/04 Python
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
IronPython连接MySQL的方法步骤
2019/12/27 Python
Python更改pip镜像源的方法示例
2020/12/01 Python
viagogo英国票务平台:演唱会、体育比赛、戏剧门票
2017/03/24 全球购物
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
摩飞电器俄罗斯官方网站:Morphy Richards俄罗斯
2020/07/30 全球购物
幼儿园园长自我鉴定
2013/10/22 职场文书
2014财产信托协议书范本
2014/11/18 职场文书
求职自我评价范文
2015/03/09 职场文书
2015年毕业实习工作总结
2015/05/29 职场文书
小王子读书笔记
2015/06/29 职场文书
MySQL的Query Cache图文详解
2021/07/01 MySQL
【DOTA2】总决赛血虐~ XTREME GAMING vs MAGMA - OGA DOTA PIT 2022 CN
2022/04/02 DOTA
MySQL数据库之存储过程 procedure
2022/06/16 MySQL