前端如何搭建vue UI组件库/封装插件(从零到有)
需求
因之前是做外包项目居多,经常用到相同的组件,之前的办法是在一个项目中写一个组件,其他项目直接将compents下的组件复制,粘贴到项目中使用,缺点是维护起来,改一个项目,其他项目也需要修改,所以,自己研究准备去封装一个组件库,
前言
日常在项目中我们经常直接根据 npm install/ npm i 去安装插件/组件库
例如:npm i element-ui -S, npm install vux --save
内容
1.vue项目安装(如已安装,可略过此步骤)
全局安装webpack
npm install webpack -g 或者 npm install -g webpack
安装vue-cli
npm install --global vue-cli //vue-cli2
# OR
npm install -g @vue/cli //vue-cli3
# OR
yarn global add @vue/cli //vue-cli3
2.新建组件
在项目中找到src/components下新建input.vue组件 <template>
<div class="about">
<input :type="typeInput" @change="inputChange" />
</div>
</template> <script>
export default {
props: {
typeInput: String
},
methods: {
inputChange(val) {
this.$emit("change", val);
}
}
};
</script>
3.新建components/index.js
import Vue from "vue";
import Input from "./input/index.vue"; const Components = {
Input
}; Object.keys(Components).forEach(name => {
Vue.component(name, Components[name]);
}); export default Components;
4.修改package.json(蓝色是修改,绿色是备注,粉色是提示)
如项目名为commpent-name
{
"name": "@username/commpent-name(此处备注项目名)", //username需要是npm官网中申请的username
"version": "0.1.0", //每次更新库需要修改版本号,以免覆盖影响到其他项目
"private": false, //需要设置为私有
"main": "./dist/component-library-gao.common.js", //指定该属性后,当引用组件库时,会默认加载main中指定的文件
"files": [ //引用组件库可以访问的文件
"dist/*",
"src/*",
"public/*",
"*.json",
"*.js"
],
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"build-bundle": "vue-cli-service build --target lib --name commpent-name(此处备注项目名) ./src/components/index.js", //根据组件路径直接打包项目中的组件,将此发布到npm上,
"lint": "vue-cli-service lint",
"test:e2e": "vue-cli-service test:e2e",
"test:unit": "vue-cli-service test:unit"
},
}
5.注册npm
.官网注册
https://www.npmjs.com/signup
.命令行注册
npm add user //按照提示输入用户名,邮箱等即可
.注册后登陆
npm login //按照提示输入用户名,密码,邮箱等即可
.登陆后查看登陆状态(可忽略)
npm whoami
6.打包项目(在发布之前,请保证是最新代码)
npm run build-bundle
7.发布代码到npm上
npm publish --access public
8.登陆npm官网查看发布代码(UI组件库创建完成)
个人头像->profile settings->package
9.测试组件(新建/已有项目中安装)
.安装
npm install --save @username/component-name //@npm官网注册username/组件项目名 == @username/component-name .引用在项目总入口中(找到src/index.js)文件
import '@username/component-name' .引用在页面中
<template>
<input :typeInput="type" @change="changeInput"/>
</template>
<script>
export default {
data() {
return {
typeInput: 'text'
}
},
methods: {
changeInput(val) {
console.log(val)
},
}
}
</script>
总结
根据以上步骤操作下来,期间遇到过一些问题,列举一下,希望可以帮助到大家也方便自己用
packjson.json文件
1."name": "@username/项目名" //username需要使用npm官网注册的username,我一开始是随便用了一个名字去提交代码,一直报错,查了很多资料才发现username的原因
2."private": false, //private需要设置为false,否则报错

查询资料
https://blog.csdn.net/baidu_25464429/article/details/81153798
如上述还有不懂的地方可以查看以上网址,本人是根据该网址步骤依次发布的
如还有需要改进的地方,请您不吝赐教
前端如何搭建vue UI组件库/封装插件(从零到有)的更多相关文章
- 16款优秀的Vue UI组件库推荐
16款优秀的Vue UI组件库推荐 Vue 是一个轻巧.高性能.可组件化的MVVM库,API简洁明了,上手快.从Vue推出以来,得到众多Web开发者的认可.在公司的Web前端项目开发中,多个项目采用基 ...
- 强烈推荐优秀的Vue UI组件库
Vue 是一个轻巧.高性能.可组件化的MVVM库,API简洁明了,上手快.从Vue推出以来,得到众多Web开发者的认可.在公司的Web前端项目开发中,多个项目采用基于Vue的UI组件框架开发,并投入正 ...
- 【转】优秀的Vue UI组件库
原文来源:https://www.leixuesong.com/3342 Vue 是一个轻巧.高性能.可组件化的MVVM库,API简洁明了,上手快.从Vue推出以来,得到众多Web开发者的认可.在公司 ...
- 为公司架构一套高质量的 Vue UI 组件库
有没有曾遇过,产品要我们实现一个功能,但是 iview 或者 elementui 不支持,我们然后义正言辞的说,不好意思,组件库不支持,没法做到. 有没有曾和设计师争论得面红耳赤,其实也是因为组件库暂 ...
- Vue UI组件库
1. iView UI组件库 iView官网:https://www.iviewui.com/ 2.Vux UI组件库 Vux官网:https://vux.li/ 3.Element UI组件库 ...
- 创建一个自己的Vue UI组件库,并将它发布在npm上
本文仅限于入门级,没有成规模制作,希望能对你有所帮助. 因为在开发多个项目中可能会用到同一个组件,那么我们通过复制粘贴的形式更新,无异于是笨拙的,我们可以通过上传到npm后,不断迭代npm包来实现更新 ...
- 「前端」尚妆 UI 组件库工程实践(weex vue)
本文来自尚妆前端团队南洋 发表于尚妆github博客,欢迎订阅! 前言 尚妆大前端团队使用 weex 进行三端统一开发有一段时间了,截止本文发表「达人店」APP大部分页面都已经用 weex 进行了重构 ...
- 手把手教你写 Vue UI 组件库
最近在研究 muse-ui 的实现,发现网上很少有关于 vue 插件具体实现的文章,官方的文档也只是一笔带过,对于新手来说并不算友好. 笔者结合官方文档,与自己的摸索总结,以最简单的 FlexBox ...
- [转载]前端——实用UI组件库
https://www.cnblogs.com/xuepei/p/7920888.html Angular UI 组件 ngx-bootstrap 是一套Bootstrap 组件 官网:https:/ ...
随机推荐
- 4_PHP流程控制语句_1_条件控制语句
以下为学习孔祥盛主编的<PHP编程基础与实例教程>(第二版)所做的笔记. PHP流程控制共有3种类型:条件控制结构.循环结构以及程序跳转和终止语句. 4.1 条件控制语句 4.1.1 if ...
- 一个超实用的python爬虫功能使用 requests BeautifulSoup
一个简单的数据爬取的示例 import os,re import requests import random import time from bs4 import BeautifulSoup us ...
- watch from Middle English wacche
watch As a noun, from Middle English wacche, Etymology As a noun, from Middle English wacche,See bel ...
- static 关键字有什么作用
static关键字的含义及使用场景 static是Java50个关键字之一.static关键字可以用来修饰代码块表示静态代码块,修饰成员变量表示全局静态成员变量,修饰方法表示静态方法.(注意:不能修饰 ...
- State Design Pattern
注: 转载自 https://www.geeksforgeeks.org/state-design-pattern/ [以便查阅,非原创] State Design Pattern State pa ...
- DOS命令_查询某个端口的占用情况并释放
>netstat -aon | findstr “80″Proto Local Address Foreign Address State ...
- 【书评:Oracle查询优化改写】第14章 结尾章
[书评:Oracle查询优化改写]第14章 结尾章 一.1 相关参考文章链接 前13章的链接参考相关连接: [书评:Oracle查询优化改写]第一章 http://blog.itpub.net/26 ...
- Gitlab创建一个项目
1.安装git yum install git 2.生成密钥文件:使用ssh-keygen生成密钥文件.ssh/id_rsa.pub ssh-keygen 执行过程中输入密码,以及确认密码,并可设置密 ...
- Oracle Block Cleanouts 块清除
当用户发出提交(commit)之后,oracle是需要写出redo来保证故障时数据可以被恢复,oracle并不需要在提交时就写出变更的数据块.由于在事务需要修改数据时,必须分配ITL事务槽,必须锁定行 ...
- https://www.runoob.com/linux/mysql-install-setup.html
https://www.runoob.com/linux/mysql-install-setup.html
