自定义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来获取上传的文件名纯粹是为了美化而用
Oct 23 Javascript
JavaScript—window对象使用示例
Dec 09 Javascript
JS获得图片alt信息的方法
Apr 01 Javascript
详解JS构造函数中this和return
Sep 16 Javascript
3种vue路由传参的基本模式
Feb 22 Javascript
JS 使用 window对象的print方法实现分页打印功能
May 16 Javascript
使用post方法实现json往返传输数据的方法
Mar 30 Javascript
详解vue 不同环境配置不同的打包命令
Apr 07 Javascript
如何实现双向绑定mvvm的原理实现
May 28 Javascript
详谈vue中router-link和传统a链接的区别
Jul 22 Javascript
Vue实现开关按钮拖拽效果
Sep 22 Javascript
vue cli4中mockjs在dev环境和build环境的配置详情
Apr 06 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
coreseek 搜索英文的问题详解
2013/06/08 PHP
ThinkPHP中I(),U(),$this->post()等函数用法
2014/11/22 PHP
PHP数据的提交与过滤基本操作实例详解
2016/11/11 PHP
jQuery学习2 选择器的使用说明
2010/02/07 Javascript
jquery jqPlot API 中文使用教程(非常强大的图表工具)
2011/08/15 Javascript
JavaScript中的apply()方法和call()方法使用介绍
2012/07/25 Javascript
利用javaScript实现点击输入框弹出窗体选择信息
2013/12/11 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
在JavaScript中构建ArrayList示例代码
2014/09/17 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
JS实现不规则TAB选项卡效果代码
2015/09/16 Javascript
JS深度拷贝Object Array实例分析
2016/03/31 Javascript
微信小程序 倒计时组件实现代码
2016/10/24 Javascript
jQuery实现用户输入自动完成功能
2017/02/13 Javascript
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
2017/03/21 jQuery
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
JavaScript数组方法的错误使用例子
2018/09/13 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
详解小程序BackgroundAudioManager踩坑之旅
2019/12/08 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
2020/02/12 Javascript
[46:04]Liquid vs VP Supermajor决赛 BO 第四场 6.10
2018/07/05 DOTA
python 全文检索引擎详解
2017/04/25 Python
Python基于回溯法子集树模板实现图的遍历功能示例
2017/09/05 Python
使用实现pandas读取csv文件指定的前几行
2018/04/20 Python
在python中实现同行输入/接收多个数据的示例
2019/07/20 Python
Python函数的默认参数设计示例详解
2019/12/01 Python
DRF框架API版本管理实现方法解析
2020/08/21 Python
小结Python的反射机制
2020/09/28 Python
css3 2D图片转动样式可以扩充到Js当中
2014/04/29 HTML / CSS
关于责任的演讲稿
2014/05/20 职场文书
导游词之江南周庄
2019/12/06 职场文书
解决redis sentinel 频繁主备切换的问题
2021/04/12 Redis
Python使用UDP实现720p视频传输的操作
2021/04/24 Python
python控制台打印log输出重复的解决方法
2021/05/14 Python
Python序列化与反序列化相关知识总结
2021/06/08 Python
Java详细解析==和equals的区别
2022/04/07 Java/Android