自定义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 相关文章推荐
3Z版基于jquery的图片复选框(asp.net+jquery)
Apr 12 Javascript
javascript中字符串拼接需注意的问题
Jul 13 Javascript
js为空或不是对象问题的快速解决方法
Dec 11 Javascript
js实现点击链接后延迟3秒再跳转的方法
Jun 05 Javascript
JavaScript检测上传文件大小的方法
Jul 22 Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
May 30 Javascript
javascript实现简单的on事件绑定
Aug 23 Javascript
JavaScript 字符串常用操作小结(非常实用)
Nov 30 Javascript
Javascript计算二维数组重复值示例代码
Dec 18 Javascript
Node.js实现简单管理系统
Sep 23 Javascript
原生js实现下拉选项卡
Nov 27 Javascript
javascript实现一款好看的秒表计时器
Sep 05 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
Flash空降上海 化身大魔王接受挑战
2020/03/02 星际争霸
PHP 循环列出目录内容的函数代码
2010/05/26 PHP
PHP中根据IP地址判断城市实现城市切换或跳转代码
2012/09/04 PHP
CodeIgniter CLI模式简介
2014/06/17 PHP
php浏览历史记录的方法
2015/03/10 PHP
PHP基于SimpleXML生成和解析xml的方法示例
2017/07/17 PHP
JavaScript网页制作特殊效果用随机数
2007/05/22 Javascript
用jscript实现新建word文档
2007/06/15 Javascript
用JS控制回车事件的代码
2011/02/20 Javascript
firefox下input type="file"的size是多大
2011/10/24 Javascript
JS简单实现登陆验证附效果图
2013/11/19 Javascript
jquery对单选框,多选框,文本框等常见操作小结
2014/01/08 Javascript
js实现字符串和数组之间相互转换操作
2016/01/12 Javascript
JavaScript学习笔记整理_用于模式匹配的String方法
2016/09/19 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
关于javascript获取内联样式与嵌入式样式的实例
2017/06/01 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
vue项目前端知识点整理【收藏】
2019/05/13 Javascript
Vue3.0的优化总结
2020/10/16 Javascript
javascript实现倒计时关闭广告
2021/02/09 Javascript
跟老齐学Python之眼花缭乱的运算符
2014/09/14 Python
python之Socket网络编程详解
2016/09/29 Python
1分钟快速生成用于网页内容提取的xslt
2018/02/23 Python
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
2018/07/19 Python
Python帮你识破双11的套路
2019/11/11 Python
HTML+CSS3+JS 实现的下拉菜单
2020/11/25 HTML / CSS
Perfume’s Club意大利官网:欧洲美妆电商
2019/05/03 全球购物
美国家居装饰网上商店:Lulu & Georgia
2019/09/14 全球购物
抗洪救灾标语
2014/10/08 职场文书
授权收款委托书范本
2014/10/10 职场文书
2015个人年度工作总结范文
2015/05/28 职场文书
纪录片信仰观后感
2015/06/08 职场文书
答谢酒会主持词
2015/07/02 职场文书
SQL实现LeetCode(180.连续的数字)
2021/08/04 MySQL
Redis入门基础常用操作命令整理
2022/06/01 Redis