自定义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 相关文章推荐
JavaScript 继承详解(四)
Jul 13 Javascript
javascript 浏览器检测代码精简版
Mar 04 Javascript
解决jquery1.9不支持browser对象的问题
Nov 13 Javascript
js的隐含参数(arguments,callee,caller)使用方法
Jan 28 Javascript
Javascript异步编程模型Promise模式详细介绍
May 08 Javascript
实现JavaScript高性能的数据存储
Dec 11 Javascript
Vue.js实现表格动态增加删除的方法(附源码下载)
Jan 20 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
Feb 22 Javascript
Vue组件化开发思考
Feb 02 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
Mar 25 Javascript
Vue 指令实现按钮级别权限管理功能
Apr 23 Javascript
vue指令v-html使用过滤器filters功能实例
Oct 25 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
php auth_http类库进行身份效验
2009/03/19 PHP
yii框架表单模型使用及以数组形式提交表单数据示例
2014/04/30 PHP
简单实现php上传文件功能
2017/09/21 PHP
Jquery 基础学习笔记
2009/05/29 Javascript
解决javascript:window.close()在chrome,Firefox下失效的问题
2013/05/07 Javascript
JS获取网页图片name属性的方法
2015/04/01 Javascript
Jquery和angularjs获取check框选中的值的方法汇总
2016/01/17 Javascript
javascript中eval解析JSON字符串
2016/02/27 Javascript
由浅入深剖析Angular表单验证
2016/07/14 Javascript
AngularGauge 属性解析详解
2016/09/06 Javascript
微信小程序 form组件详解及简单实例
2017/01/10 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
基于Vue2.X的路由和钩子函数详解
2018/02/09 Javascript
vue实现学生录入系统之添加删除功能
2018/07/11 Javascript
vue添加class样式实例讲解
2019/02/12 Javascript
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
[01:07:19]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第一场 1月19日
2021/03/11 DOTA
简单介绍Python中的filter和lambda函数的使用
2015/04/07 Python
python解析xml文件实例分析
2015/05/27 Python
Python基于xlrd模块操作Excel的方法示例
2018/06/21 Python
django Serializer序列化使用方法详解
2018/10/16 Python
python读取txt文件中特定位置字符的方法
2018/12/24 Python
我喜欢你 抖音表白程序python版
2019/04/07 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
Python多线程正确用法实例解析
2020/05/30 Python
python属于解释语言吗
2020/06/11 Python
奢华时尚的独特视角:La Garçonne
2018/06/07 全球购物
军训感想500字
2014/02/20 职场文书
安全生产演讲稿
2014/05/09 职场文书
厕所文明标语
2014/06/11 职场文书
珠宝的促销活动方案
2014/08/31 职场文书
2014年路政工作总结
2014/12/10 职场文书
2014年机关工会工作总结
2014/12/19 职场文书
2019幼儿教师求职信(3篇)
2019/09/20 职场文书
浅谈sql_@SelectProvider及使用注意说明
2021/08/04 Java/Android
CSS使用SVG实现动态分布的圆环发散路径动画
2022/12/24 HTML / CSS