自定义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 相关文章推荐
一直复略了的一个问题,关于表单重复提交
Feb 15 Javascript
javascript转换字符串为dom对象(字符串动态创建dom)
May 10 Javascript
JS前端框架关于重构的失败经验分享
Mar 17 Javascript
jQuery判断元素上是否绑定了指定事件的方法
Mar 17 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
Jun 05 Javascript
基于AngularJs + Bootstrap + AngularStrap相结合实现省市区联动代码
May 30 Javascript
BootStrap 弹出层代码
Feb 09 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
Feb 12 Javascript
javascript将json格式数组下载为excel表格的方法
Dec 22 Javascript
解决VUEX兼容IE上的报错问题
Mar 01 Javascript
Vue利用Blob下载原生二进制数组文件
Sep 25 Javascript
vue插槽slot的简单理解与用法实例分析
Mar 14 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的图形函数中显示汉字
2006/10/09 PHP
分享PHP header函数使用教程
2013/09/05 PHP
phpMyAdmin安装并配置允许空密码登录
2015/07/04 PHP
使用PHP json_decode可能遇到的坑与解决方法
2017/08/03 PHP
yii2的restful api路由实例详解
2019/05/14 PHP
Javascript面向对象编程(二) 构造函数的继承
2011/08/28 Javascript
struts2+jquery组合验证注册用户是否存在
2014/04/30 Javascript
Javascript实现简单二级下拉菜单实例
2014/06/15 Javascript
JavaScript中document.forms[0]与getElementByName区别
2015/01/21 Javascript
JavaScript判断表单提交时哪个radio按钮被选中的方法
2015/03/21 Javascript
JQuery选择器、过滤器大整理
2015/05/26 Javascript
JS实现网站菜单拖拽移位效果的方法
2015/09/24 Javascript
jQuery CSS3自定义美化Checkbox实现代码
2016/05/12 Javascript
javascript实现任务栏消息提示的简单实例
2016/05/31 Javascript
JS中的hasOwnProperty()和isPrototypeOf()属性实例详解
2016/08/11 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
JQuery选中select组件被选中的值方法
2018/03/08 jQuery
深入理解redux之compose的具体应用
2020/01/12 Javascript
JS+DIV实现拖动效果
2020/02/11 Javascript
Vue axios与Go Frame后端框架的Options请求跨域问题详解
2020/03/03 Javascript
JavaScript语法约定和程序调试原理解析
2020/11/03 Javascript
Python中if __name__ == '__main__'作用解析
2015/06/29 Python
通过python爬虫赚钱的方法
2019/01/29 Python
一步步教你用python的scrapy编写一个爬虫
2019/04/17 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
Python异步编程之协程任务的调度操作实例分析
2020/02/01 Python
如何查看Django ORM执行的SQL语句的实现
2020/04/20 Python
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
浙江文明网签名寄语
2014/01/18 职场文书
法语专业求职信
2014/07/20 职场文书
师德师风的心得体会
2014/09/02 职场文书
2014年化工厂工作总结
2014/11/25 职场文书
银行给客户的感谢信
2015/01/23 职场文书
房地产工程部经理岗位职责
2015/04/09 职场文书
2015年办税服务厅工作总结
2015/07/23 职场文书
Opencv实现二维直方图的计算及绘制
2021/07/21 Python