自定义Vue组件打包、发布到npm及使用教程

 更新时间:2019年05月22日 08:38:15   作者:灭灭  
这篇文章主要介绍了自定义Vue组件打包、发布到npm及使用教程 ,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

本文将帮助:将自己写的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及使用教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • Vue封装组件并上传到npm的教程详解

    Vue封装组件并上传到npm的教程详解

    这篇文章主要为大家详细介绍了Vue封装组件并上传到npm的相关教程,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考下
    2024-04-04
  • Vue.js 2.0和Cordova开发webApp环境搭建方法

    Vue.js 2.0和Cordova开发webApp环境搭建方法

    下面小编就为大家分享一篇Vue.js 2.0和Cordova开发webApp环境搭建方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • Vue3中是如何实现数据响应式示例详解

    Vue3中是如何实现数据响应式示例详解

    这篇文章主要介绍了Vue3中是如何实现数据响应式示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Vue3中的h函数及使用小结

    Vue3中的h函数及使用小结

    这篇文章主要介绍了Vue3中的h函数及使用小结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • Vue Element前端应用开发之前端API接口的封装

    Vue Element前端应用开发之前端API接口的封装

    对整个系统来说,一般会有很多业务对象,而每个业务对象的API接口又有很多。我们这个VUE+Element 前端应用就是针对ABP框架的业务对象,因此前端的业务对象接口也是比较统一的,那么可以考虑在前端中对后端API接口调用进行封装,引入ES6的方式进行前端API的抽象简化。
    2021-05-05
  • antv完成区间柱形图一列多柱配置实现详解

    antv完成区间柱形图一列多柱配置实现详解

    这篇文章主要为大家介绍了antv完成区间柱形图一列多柱配置实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • Vue3快速实现文件上传OSS的方法详解

    Vue3快速实现文件上传OSS的方法详解

    这篇文章给大家介绍了Vue3快速实现文件上传OSS的方法,上传文件可以说是经典的需求了,在后台管理项目中随处可见,一般是由前端进行文件上传,然后再由后端去处理,本文旨在实现上传功能,不考虑额外的功能(如文件尺寸限制),感兴趣的朋友可以参考下
    2024-01-01
  • vue iview多张图片大图预览、缩放翻转

    vue iview多张图片大图预览、缩放翻转

    这篇文章主要为大家详细介绍了vue iview多张图片大图预览、缩放翻转,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • vue实现两列水平时间轴的示例代码

    vue实现两列水平时间轴的示例代码

    本文主要介绍了vue实现两列水平时间轴的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • 简单了解vue中父子组件如何相互传递值(基础向)

    简单了解vue中父子组件如何相互传递值(基础向)

    这篇文章主要介绍了简单了解vue中父子组件如何相互传递值(基础向),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07

最新评论