vue封装组件,类似elementUI组件库打包发布到npm上

封装vue组件库的两种方法和形式:

一:是建立一个webpack-simple 项目

二:是在通过vue-cli脚手架建立webpack vue项目,这种项目有点冗余,可是我们对这种项目最熟悉

下面分别介绍两种用法:

一:

1.首先先建立一个vue项目:

通过vue init webpack-simple,新建项目目录如下:

箭头指的是在项目打包后产生的文件(打包命令npm run build )

2.在src下新建一个目录用来存放组件源码:

然后写封装的组件,比如radios/radio.vue

3.组件封装完后新建index.js文件,作为我们组件库的出入口,index.js内容如下:

上图中comment应该换成components,也就是你自己命名的变量名

4.完了之后修改package.json文件,修改如下:

  1. {

  2.  

    "name": "hz-components-ui",

  3.  

    "description": "uicomponents",

  4.  

    "version": "0.0.0",

  5.  

    "author": "wyx",

  6.  

    "license": "MIT",

  7.  

    // 因为组件包是公用的,所以private为false

  8.  

    "private": false,

  9.  

    "scripts": {

  10.  

    "dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot",

  11.  

    "build": "cross-env NODE_ENV=production webpack --progress --hide-modules"

  12.  

    },

  13.  

    // 配置main结点,如果不配置,我们在其他项目中就不用import XX from ‘包名‘来引用了,只能以包名作为起点来指定相对的路径

  14.  

    "main": "dist/hz-components-ui.min.js",

  15.  

    // 项目官网的url

  16.  

    "homepage": "https://wuyxgit.github.io/vueBuildTest/dist/index.html#/",

  17.  

    "bugs": {

  18.  

    "url": "https://github.com/hamger/hg-vcomponents/issues"

  19.  

    },

  20.  

    // 指定代码所在的仓库地址

  21.  

    "repository": {

  22.  

    "type": "git",

  23.  

    "url": "git+https://github.com/wuyxgit/vueBuildTest.git"

  24.  

    },

  25.  

    "dependencies": {

  26.  

    "vue": "^2.5.11"

  27.  

    },

  28.  

    // 指定关键字

  29.  

    "keywords": [

  30.  

    "hz",

  31.  

    "components"

  32.  

    ],

  33.  

    // 指定打包后发布到npm的文件名,没指定则不传,package.json是默认上传的

  34.  

    "files": [

  35.  

    "dist",

  36.  

    "src/lib"

  37.  

    ],

  38.  

    "browserslist": [

  39.  

    "> 1%",

  40.  

    "last 2 versions",

  41.  

    "not ie <= 8"

  42.  

    ],

  43.  

    "devDependencies": {

  44.  

    "babel-core": "^6.26.0",

  45.  

    "babel-loader": "^7.1.2",

  46.  

    "babel-preset-env": "^1.6.0",

  47.  

    "babel-preset-stage-3": "^6.24.1",

  48.  

    "cross-env": "^5.0.5",

  49.  

    "css-loader": "^0.28.7",

  50.  

    "file-loader": "^1.1.4",

  51.  

    "vue-loader": "^13.0.5",

  52.  

    "vue-template-compiler": "^2.4.4",

  53.  

    "webpack": "^3.6.0",

  54.  

    "webpack-dev-server": "^2.9.1"

  55.  

    }

  56.  

    }

  57.  

5.修改webpack.comfig.js文件:

  1. entry: "./src/lib/index.js",

  2.  

    output: {

  3.  

    path: path.resolve(__dirname, ‘./dist‘),

  4.  

    publicPath: ‘/dist/‘,

  5.  

    // filename: ‘build.js‘

  6.  

    filename: "hz-components-ui.min.js",

  7.  

    library: "hzComponentsUI",

  8.  

    libraryTarget: "umd",

  9.  

    umdNamedDefine: true

  10.  

    },

箭头指的是修改的部分,红圈内的是新增部分

6.打包通过npm run build 命令,打包完成后产生dist文件,内容如下:

7.现在本地找一个项目测试是否可用,先执行命令 npm pack ,会产生一个压缩包

箭头所指的tgz文件,然后在测试项目中,通过npm install 路径\文件全名

路径是指压缩包所在的绝对路径,文件名指的是压缩包的全名

8.安装后直接在测试项目的入口文件mian.js内引入,和引入elementUI一样

import 名称 from ‘组件库名’

Vue.use(名称);

然后在项目的任意组件中引用就行了,如果引入成功,则说明打包成功,接下来就是发布到npm上了

9.发布到npm上

回到组件库项目的根目录下:

1.npm login     登录到npm上

2.npm version patch  这是把版本迭代一级,每次更新时都需要输入这个命令,或者直接在package.json中修改版本号,只要与npm上的版本不同就行

3.npm publish  提交到npm上,至此就完成发布npm的全部了

项目访问组件库,就可以直接输入 npm i/install 组件库名称来安装,然后同上第八步就可以了

二:

1.首先通过vue init webpack 项目名 ,项目目录如下:

2.封装组件

在componetns文件下新建vue组件,放功能源码,添加index.js,实现封装后的组件的出入口

3.index.js添加内容如下:

  1. import hzRadio from ‘./radios/radio.vue‘

  2.  

    import hzTimePicker from ‘./timePickers/timePicker‘

  3.  

  4.  

    const components = {

  5.  

    install(Vue){

  6.  

    Vue.component(‘hzRadio‘,hzRadio);

  7.  

    Vue.component(‘hzTimePicker‘,hzTimePicker);

  8.  

    }

  9.  

    };

  10.  

    // 这里的判断很重要

  11.  

    if (typeof window !== ‘undefined‘ && window.Vue) {

  12.  

    window.Vue.use(components);

  13.  

    }

  14.  

  15.  

    export default components;

4.修改webpack.base.conf.js和webpack.prod.conf.js

webpack.base.conf.js

webpack.prod.conf.js

修改生产环境的出口

修改生产环境的样式文件,打包后所有的样式都会在这个文件下

把下面的这两个注释掉,不然npm run build 打包时会失败,

这个可以注释也可以不注释,全部注释的话打包后不会产生index.html文件

5.修改package.json文件,添加项目源码地址,demo测试地址,以及一些配置:


6.修改后打包:

剩下的7,8,9三步同上第一种方法的7,8,9三步!!!

三:报错

E401   --------   1.没有权限,或者登陆出错

2.或者是你要发布的包名已经被占用导致你没有权限发布

3.或者2FA证书已失效,

关于前两个重新登录,或者把包名更改,重新发布,第三个原因按照此方法 https://go.npm.me/2fa-guide 来做,我的做法是在手机下载一个Authenticator ,手机应用商店里搜一下,下载完后点击添加Google或者其他账户来扫描二维码,然后会产生验证码,验证码有效性为30秒

血泪史呀,为了发布和项目成功引用可以说到处都是坑,网上的都是二把手,没有一个可以的,即使安装它提供的组件库也不能在main.js内引用,哎。。。。。。。。。挥泪整理!!!!!!!!!!

原文地址:https://www.cnblogs.com/h2zZhou/p/12336253.html

时间: 2024-10-30 14:06:45

vue封装组件,类似elementUI组件库打包发布到npm上的相关文章

创建一个自己的Vue UI组件库,并将它发布在npm上

本文仅限于入门级,没有成规模制作,希望能对你有所帮助. 因为在开发多个项目中可能会用到同一个组件,那么我们通过复制粘贴的形式更新,无异于是笨拙的,我们可以通过上传到npm后,不断迭代npm包来实现更新. 前期准备 初始化project 这里我们使用vue-cli来初始化一个vue项目. npm install -g @vue/cli or yarn global add @vue/cli vue create personal-component-set 首先我们来开发一个可复用的顶栏控件,这里

vue封装插件并发布到npm上

vue封装插件并发布到npm上 项目初始化 首先,要创建项目,封装vue的插件用webpack-simple很合适,vue init webpack-simple 项目名称此命令创建我们的项目的目录,创建文件夹和文件,最后结构是这样的  然后根据需求,实现具体功能,这里我封装了一个轮播图组件mini-sliders,主要功能写在lib/slider.vue组件中 功能写好后,我们要写index.js来封装组件 import VueComment from './VueComment.vue' c

vue插件开发流程详解-从开发到发布至npm(一)

vue的插件开发 1.本地开发 1.1 初始化本地开发项目 我们采用vue-cli,初始化一个vue 项目.这个不做详解,请移步到 这里,查看具体详细.初始化后就是这样的项目结构: 其他的文件目录不是本节内容重点,不做详解,请移步这里查看. 1.2 test.js 的内容 ,这是插件的入口文件 关于为什么需要在install这个方法这里添加我们的方法,可以参考官网.https://cn.vuejs.org/v2/guide/plugins.html  这里只是用了其中的一部分的内容. test.

将自己的组件打包发布到npm

在项目中有些组件在各个项目中都会调用,那么将组件发布到npm ,用到的项目去下载,这样会省去一些不必要的麻烦. 将组件发布到npm 中的步骤 做个记录 1.项目的创建,我这里使用 vue init webpack-simple 项目名 2修改文件目录 , 创建 components 文件夹 创建 main.vue  在根目录创建 index,js 3.修改文件内容 和配置 main.vue是一个组件  就按照组件的格式去写 index.js  的内容 注意引用的组件中一定要写name 属性 在组

【踩坑速记】全面解析开源库打包发布到Bintray/Jcenter全过程(新),让开源更简单~

一.写在前面 自使用android studio开始,就被它独特的依赖方式:compile 'com.android.support:appcompat-v7:25.0.1'所深深吸引,自从有了它,麻麻再也不用担心依赖第三方jar包繁琐无趣啦.而,如果自己写一个开源库是一种怎样的体验,此乃利(装)国(逼)利(神)民(器)呀! 而一路装逼不易,你会发现如果你要发布你的开源库到官方的Bintray/Jcenter并非易事,所以先去网上一探究竟,简单的,难的,五花八门,全(误)面(人)具(子)备(弟)

创建自己的library类库包并使用webpack4.x打包发布到npm

我们在开发过程中,可能经常要使用第三方类库,比如jquery.lodash等.我们通过npm,下载安装完之后,就可以使用了,简单方便.我们自己可以创建一个类库,然后供其他人这样安装使用吗?当然是可以的. 下面我们就来说说. 1. 创建自己的类库 index.js import numRef from './ref.json' const numberWord = () => { const numToWord = (num) => { let returnValue = _.reduce(nu

将自己写的组件封装成类似element-ui一样的库,可以cdn引入

在写好自己的组件之后 第一步 修改目录结构 在根目录下创建package文件夹,用于存放你要封装的组件 第二部 在webpack配置中加入 pages与publicpath同级 pages: { index: { entry: 'src/main.js', template: 'public/index.html', filename: 'index.html' } }, 第三部 编写组件 在package文件夹下 新建一个你的组件名的文件夹 里面存放一个你的组件的.vue文件 再新建一个js文

vue封装element中table组件

后台系统,table被用的次数比较多,所以决定提出来作为组件 1.新建一个Table.vue文件 <!--region 封装的分页 table--> <template>  <div class="table">  <el-table id="iTable" v-loading.iTable="options.loading" :data="list" :stripe="op

从零开始封装React UI 组件库并发布到NPM

1.新建目录wui (1)进入到 wui 目录 执行 npm init 命令初始化项目.更具提示信息填充将会生成的 package.json 文件. (2)新建 webpack.config.js 打包文件. (3)新建 README.md 项目说明文件. (4)新建 .gitignore 项目忽略文件. (5)安装webpack 用于编译 JavaScript 模块. npm install webpack webpack-cli --save-dev package.json 字段含义解释: