自定义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 相关文章推荐
jquery自动完成插件(autocomplete)应用之PHP版
Dec 15 Javascript
js+css在交互上的应用
Jul 18 Javascript
js克隆对象、数组的常用方法介绍
Sep 26 Javascript
Javascript脚本实现静态网页加密实例代码
Nov 05 Javascript
jQuery中的编程范式详解
Dec 15 Javascript
详解addEventListener的三个参数之useCapture
Mar 16 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
Feb 12 Javascript
简单谈谈关于Angular Cli打包的事
Sep 05 Javascript
网页爬虫之cookie自动获取及过期自动更新的实现方法
Mar 06 Javascript
基于vue中对鼠标划过事件的处理方式详解
Aug 22 Javascript
vue实现弹幕功能
Oct 25 Javascript
Vue3 Composition API的使用简介
Mar 29 Vue.js
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
PHP5与MySQL数据库操作常用代码 收集
2010/03/21 PHP
实例讲解php实现多线程
2019/01/27 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
用php定义一个数组最简单的方法
2019/10/04 PHP
BOOM vs RR BO5 第二场 2.14
2021/03/10 DOTA
jQuery AJAX回调函数this指向问题
2010/02/08 Javascript
Node.js实战 建立简单的Web服务器
2012/03/08 Javascript
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
2013/03/24 Javascript
详解js跨域原理以及2种解决方案
2015/12/09 Javascript
vue 中自定义指令改变data中的值
2017/06/02 Javascript
还不懂递归?读完这篇文章保证你会懂
2018/07/29 Javascript
Vue 页面状态保持页面间数据传输的一种方法(推荐)
2018/11/01 Javascript
微信小程序云开发实现增删改查功能
2019/05/17 Javascript
基于iview的router常用控制方式
2019/05/30 Javascript
layer更改皮肤的实现方法
2019/09/11 Javascript
微信小程序如何加载数据库真实数据的实现
2020/03/04 Javascript
vue Element左侧无限级菜单实现
2020/06/10 Javascript
[02:25]DOTA2英雄基础教程 生死判决瘟疫法师
2013/12/06 DOTA
[01:19]2014DOTA2国际邀请赛 采访TITAN战队ohaiyo 能赢DK很幸运
2014/07/12 DOTA
python求众数问题实例
2014/09/26 Python
深入理解Python爬虫代理池服务
2018/02/28 Python
tensorflow学习教程之文本分类详析
2018/08/07 Python
python分批定量读取文件内容,输出到不同文件中的方法
2018/12/08 Python
tensorflow实现训练变量checkpoint的保存与读取
2020/02/10 Python
Django models文件模型变更错误解决
2020/05/11 Python
Django+Django-Celery+Celery的整合实战
2021/01/20 Python
html5桌面通知(Web Notifications)实例解析
2014/07/07 HTML / CSS
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
护理专业自荐信范文
2014/02/26 职场文书
畜牧兽医本科生的自我评价
2014/03/03 职场文书
2015年社区服务活动总结
2015/03/25 职场文书
甲午大海战观后感
2015/06/02 职场文书
《月光曲》教学反思
2016/02/16 职场文书
2019年年中工作总结讲话稿模板
2019/03/25 职场文书
JS Object构造函数之Object.freeze
2021/04/28 Javascript
Go使用协程交替打印字符
2021/04/29 Golang