自定义Vue组件打包、发布到npm及使用教程


Posted in Javascript onMay 22, 2019

本文将帮助:将自己写的Vue组件打包到npm进行代码托管,以及正常发布之后如何使用自己的组件。

本文讲述的仅仅是最基础的实现,其他复杂的操作需要非常熟悉webpack的相关知识,作者将继续学习。

按照大佬文中写的一步步操作,够细心的话基本可以一步到位。下面总结一下发布步骤:

1. 利用Vue的脚手架新建一个简易版的Vue项目my-project:

vue init webpack-simple my-project -> cd my-project -> npm i -> npm run dev

2. 编写组件:

src下新建myPlugin文件夹用于存放所以开发的组件 -> 为每一个组件创建一个文件夹,其中存放一个vue组件文件和一个index.js配置文件 -> 在myPlugin下的最外层创建一个入口配置文件 -> 为每个人vue组件文件中加上一个name属性

3. 测试组件:

在app.vue中测试一下自己的组件可不可以用

4. 编写配置文件

为刚刚加入的每个组件文件夹中的index.js放入如下代码:(其中ldcPagination为组件名)

import ldcPagination from './index.vue';
ldcPagination.install = Vue => Vue.component(ldcPagination.name, ldcPagination);//.name就是开始说的vue文件暴露出来的name名,ldcPagination整个组件
export default ldcPagination;

为myPlugin下index.js放入如下代码:(其中ldcPagination为组件名,多个组件直接在components数组中加入并在最后输出出来就行)(引入的公共样式文件等都可以放这个文件中)

import ldcPagination from './Pagination/index.js';
const components = [
 ldcPagination
]
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,
 ldcPagination
}

5. 改写webpack.config.js配置文件

将其中的输入输出换成如下代码:

var path = require('path')
var webpack = require('webpack')
const NODE_ENV = process.env.NODE_ENV;
module.exports = {
//entry: './src/main.js',
//output: {
//  path: path.resolve(__dirname, './dist'),
//  publicPath: '/dist/',
//  filename: 'build.js'
// },
  entry: NODE_ENV == 'development' ? './src/main.js' : './src/myPlugin/index.js',
  output: {
   path: path.resolve(__dirname, './dist'),
   publicPath: '/dist/',//路径
   filename: 'ldc-ui.js',//打包之后的名称
   library: 'ldc-ui', // 指定的就是你使用require时的模块名
   libraryTarget: 'umd', // 指定输出格式
   umdNamedDefine: true // 会对 UMD 的构建过程中的 AMD 模块进行命名。否则就使用匿名的 define
  },
...
}

6. 发布前准备

改写package.json中的private为false,加入"main": "dist/ldc-ui.js", 其他的自定义 -> 新建.npmignore文件忽略不需要上传的文件如.* *.md *.yml build/ node_modules/ src/ test/

7. 发布

npm run build 打包 -> 注册npm账号 -> npm login 登录 -> npm publish 发布

可能出现问题:

1. 登录源错误, npm config get registry 可查看当前登录源,npm config set registry=http://registry.npmjs.org 可切换到正确的登录源

2. 版本号不能重复

3. 图片资源打包后无法使用,所以自己的组件中不要使用

使用组件方式:

1. npm i xxx -D

2. import XXX from 'xxx'

3. const { A, B } = XXX

4. 在Vue中注册 components: { A, B }

总结

以上所述是小编给大家介绍的自定义Vue组件打包、发布到npm及使用教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
js为数字添加逗号并格式化数字的代码
Aug 23 Javascript
ExtJS如何设置与获取radio控件的选取状态
Jan 22 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
Oct 31 Javascript
js实现tab切换效果实例
Sep 16 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
Oct 23 Javascript
ionic实现可滑动的tab选项卡切换效果
Apr 15 Javascript
js 博客内容进度插件详解
Feb 19 Javascript
vue-router实现webApp切换页面动画效果代码
May 25 Javascript
JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法
Jun 19 Javascript
vue的事件绑定与方法详解
Aug 16 Javascript
vue 项目如何引入微信sdk接口的方法
Dec 18 Javascript
浅谈VUE-CLI脚手架热更新太慢的原因和解决方法
Sep 28 Javascript
Vue中的组件及路由使用实例代码详解
May 22 #Javascript
Vue侦测相关api的实现方法
May 22 #Javascript
一文快速详解前端框架 Vue 最强大的功能
May 21 #Javascript
微信小程序系列之自定义顶部导航功能
May 21 #Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
May 21 #Javascript
微信小程序websocket实现即时聊天功能
May 21 #Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
May 21 #Javascript
You might like
天使彦史上最神还原,性别曝光的那一刻,百万网友恋爱了
2020/03/02 国漫
PHP编程与应用
2006/10/09 PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
2016/03/05 PHP
php封装的表单验证类完整实例
2016/10/19 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
2017/01/22 PHP
PHP+Mysql分布式事务与解决方案深入理解
2021/02/27 PHP
jsTree树控件(基于jQuery, 超强悍)[推荐]
2009/09/01 Javascript
JQuery里选择超链接的实现代码
2011/05/22 Javascript
jQuery中inArray方法注意事项分析
2016/01/25 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
2017/08/03 Javascript
jQuery Ajax向服务端传递数组参数值的实例代码
2017/09/03 jQuery
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
vue如何进行动画的封装
2018/09/26 Javascript
详解Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)
2019/04/20 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
2019/09/27 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
2020/02/02 Javascript
微信小程序实现手指拖动选项排序
2020/04/22 Javascript
解决iView Table组件宽度只变大不变小的问题
2020/11/13 Javascript
[07:27]DOTA2卡尔工作室 英雄介绍水晶室女篇
2013/06/21 DOTA
[01:32]2014DOTA2西雅图邀请赛 CIS我们有信心进入正赛
2014/07/08 DOTA
Python中type的构造函数参数含义说明
2015/06/21 Python
利用Python爬取微博数据生成词云图片实例代码
2017/08/31 Python
名片管理系统python版
2018/01/11 Python
Python 实现两个列表里元素对应相乘的方法
2018/11/14 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
2019/06/28 Python
基于TensorFlow的CNN实现Mnist手写数字识别
2020/06/17 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
2021/01/27 Python
平面设计岗位职责
2013/12/14 职场文书
党员岗位承诺书
2014/03/25 职场文书
大学新学期计划书
2014/04/28 职场文书
李开复演讲稿
2014/05/24 职场文书
个人存款证明书
2014/10/18 职场文书
国庆放假通知怎么写
2015/07/30 职场文书
centos8安装nginx1.9.1的详细过程
2021/08/02 Servers
企业开发CSS命名BEM代码规范实践
2022/02/12 HTML / CSS
Redis sentinel哨兵集群的实现步骤
2022/07/15 Redis