自定义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汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
Dec 20 Javascript
固定网页背景图同时保持图片比例的思路代码
Aug 15 Javascript
JS 实现导航栏悬停效果(续2)
Sep 24 Javascript
浏览器缩放检测的js代码
Sep 28 Javascript
为什么Node.js会这么火呢?Node.js流行的原因
Dec 01 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
Mar 13 Javascript
深入理解bootstrap框架之入门准备
Oct 09 Javascript
纯JS实现出生日期[年月日]下拉菜单效果
Jun 01 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
Jun 22 Javascript
使用VScode 插件debugger for chrome 调试react源码的方法
Sep 13 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
Apr 26 Javascript
解决elementui表格操作列自适应列宽
Dec 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
PHP 出现乱码和Sessions验证问题的解决方法!
2008/12/06 PHP
php实现mysql同步的实现方法
2009/10/21 PHP
PHP基于单例模式实现的数据库操作基类
2016/01/15 PHP
PHP Mysqli 常用代码集合
2016/11/12 PHP
基于jQuery的的一个隔行变色,鼠标移动变色的小插件
2010/07/06 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
当达到输入长度时表单自动切换焦点
2014/04/06 Javascript
推荐9款炫酷的基于jquery的页面特效
2014/12/07 Javascript
js实现鼠标滚轮控制图片缩放效果的方法
2015/02/20 Javascript
Jsonp post 跨域方案
2015/07/06 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
深入理解JavaScript中的对象复制(Object Clone)
2016/05/18 Javascript
js传值后台中文出现乱码的解决方法
2016/06/30 Javascript
漂亮实用的页面loading(加载)封装代码
2017/02/03 Javascript
Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
2017/02/27 Javascript
详解Vue生命周期的示例
2017/03/10 Javascript
JavaScript实现的浏览器下载文件的方法
2017/08/09 Javascript
javascript将list转换成树状结构的实例
2017/09/08 Javascript
使用JS实现鼠标放上图片进行放大离开实现缩小功能
2021/01/27 Javascript
通过C++学习Python
2015/01/20 Python
python回调函数用法实例分析
2015/05/09 Python
在Django框架中编写Contact表单的教程
2015/07/17 Python
python创建列表和向列表添加元素的实现方法
2017/12/25 Python
Python使用pyodbc访问数据库操作方法详解
2018/07/05 Python
Python线上环境使用日志的及配置文件
2019/07/28 Python
python保留小数位的三种实现方法
2020/01/07 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
2020/02/16 Python
Python3批量创建Crowd用户并分配组
2020/05/20 Python
win10安装python3.6的常见问题
2020/07/01 Python
基于CSS3 animation动画属性实现轮播图效果
2017/09/12 HTML / CSS
工商管理专业学生的自我评价
2013/10/01 职场文书
孝敬父母的演讲稿
2014/05/14 职场文书
2014年后勤工作总结
2014/11/18 职场文书
小学生五一劳动节演讲稿
2015/03/18 职场文书
2015年社区工作总结
2015/04/08 职场文书
校园之声广播稿
2015/08/18 职场文书