自定义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 模拟气泡屏保效果代码
Jul 10 Javascript
ExtJS[Desktop]实现图标换行示例代码
Nov 17 Javascript
jQuery中:lt选择器用法实例
Dec 29 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
Jun 01 Javascript
JS实现Fisheye效果动感放大菜单代码
Oct 21 Javascript
Bootstrap Table使用方法解析
Oct 19 Javascript
详解Vue 实例中的生命周期钩子
Mar 21 Javascript
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
May 26 jQuery
vue.js的vue-cli脚手架中使用百度地图API的实例
Jan 21 Javascript
在Vue项目中使用Typescript的实现
Dec 19 Javascript
使用Node.js实现base64和png文件相互转换的方法
Mar 11 Javascript
Vue this.$router.push(参数)实现页面跳转操作
Sep 09 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
短波的认识
2021/03/01 无线电
处理php自动反斜杠的函数代码
2010/01/05 PHP
使用配置类定义Codeigniter全局变量
2014/06/12 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
2015/03/27 PHP
PHP错误处理函数register_shutdown_function使用示例
2017/07/03 PHP
jQuery 动画基础教程
2008/12/25 Javascript
javascript 字符 Escape,encodeURI,encodeURIComponent
2009/07/09 Javascript
悄悄用脚本检查你访问过哪些网站的代码
2010/12/04 Javascript
jquery.combobox中文api和例子,修复了上面的小bug
2011/03/28 Javascript
javascript学习笔记(三)显示当时时间的代码
2011/04/08 Javascript
js获取系统的根路径实现介绍
2013/09/08 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
JS实现的四级密码强度检测功能示例
2017/05/11 Javascript
js断点调试心得分享(必看篇)
2017/12/08 Javascript
浅谈vue中改elementUI默认样式引发的static与assets的区别
2018/02/03 Javascript
vue基础之data存储数据及v-for循环用法示例
2019/03/08 Javascript
JS防抖和节流实例解析
2019/09/24 Javascript
[36:09]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
python re正则表达式模块(Regular Expression)
2014/07/16 Python
Python基于ThreadingTCPServer创建多线程代理的方法示例
2018/01/11 Python
Python实用技巧之利用元组代替字典并为元组元素命名
2018/07/11 Python
如何在python中写hive脚本
2019/11/08 Python
PyCharm GUI界面开发和exe文件生成的实现
2020/03/04 Python
使用pth文件添加Python环境变量方式
2020/05/26 Python
使用keras实现非线性回归(两种加激活函数的方式)
2020/07/05 Python
python产生模拟数据faker库的使用详解
2020/11/04 Python
python基于Kivy写一个图形桌面时钟程序
2021/01/28 Python
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
上海雨人软件技术开发有限公司测试题
2015/07/14 面试题
C#中有没有运算符重载?能否使用指针?
2014/05/05 面试题
会计求职简历自我评价
2015/03/10 职场文书
为什么说餐饮很难做,是因为你不了解这些新规则
2019/08/20 职场文书
Python中for后接else的语法使用
2021/05/18 Python
GoFrame框架数据校验之校验结果Error接口对象
2022/06/21 Golang