自定义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 相关文章推荐
JavaScript国旗变换效果代码
Aug 13 Javascript
JavaScript 全角转半角部分
Oct 28 Javascript
基于jQuery的一个扩展form序列化到json对象
Dec 09 Javascript
jQuery滚动条插件nanoscroller使用指南
Apr 21 Javascript
jQuery ajaxForm()的应用
Oct 14 Javascript
JavaScript创建对象的七种方式全面总结
Aug 21 Javascript
浅谈Angular4实现热加载开发旅程
Sep 08 Javascript
JavaScript 数组的进化与性能分析
Sep 18 Javascript
在 Node.js 中使用 async 函数的方法
Nov 17 Javascript
JS 音频可视化插件Wavesurfer.js的使用教程
Oct 31 Javascript
bootstrap table实现合并单元格效果
Dec 24 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
Dec 17 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伪静态页面函数附使用方法
2008/06/20 PHP
使用PHP similar text计算两个字符串相似度
2015/11/06 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
2019/01/17 PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
2020/07/19 PHP
escape、encodeURI、encodeURIComponent等方法的区别比较
2006/12/27 Javascript
javascript 利用Image对象实现的埋点(某处的点击数)统计
2012/12/28 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
js倒计时抢购实例
2015/12/20 Javascript
jQuery仿京东商城楼梯式导航定位菜单
2016/07/25 Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
2017/07/04 Javascript
EL表达式截取字符串的函数说明
2017/09/22 Javascript
微信小程序页面缩放式侧滑效果的实现代码
2018/11/15 Javascript
json.stringify()与json.parse()的区别以及用处
2021/01/25 Javascript
python实现问号表达式(?)的方法
2013/11/27 Python
Python使用PIL模块生成随机验证码
2017/11/21 Python
用pandas按列合并两个文件的实例
2018/04/12 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
2018/04/17 Python
基于python list对象中嵌套元组使用sort时的排序方法
2018/04/18 Python
对numpy中数组转置的求解以及向量内积计算方法
2018/10/31 Python
python3使用QQ邮箱发送邮件
2020/05/20 Python
使用Python+wxpy 找出微信里把你删除的好友实例
2019/02/21 Python
python字符串的拼接方法总结
2019/11/18 Python
Django app配置多个数据库代码实例
2019/12/17 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
2020/01/06 Python
使用Python 自动生成 Word 文档的教程
2020/02/13 Python
日本钓鱼渔具和户外用品网上商店:naturum
2016/08/07 全球购物
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
环境工程求职简历的自我评价范文
2013/10/24 职场文书
数控专业个人求职信范文
2014/02/05 职场文书
房屋出租委托书格式
2014/09/23 职场文书
民事和解协议书格式
2014/11/29 职场文书
鼋头渚导游词
2015/02/05 职场文书
道歉情书大全
2015/05/12 职场文书
肖申克的救赎观后感
2015/06/02 职场文书
2016寒假假期总结
2015/10/10 职场文书