前端如何搭建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:/ ...
随机推荐
- 2019-07-22 phpStudy配置虚拟主机
1.右击 phpStudy ->[打开配置文件]->[vhosts-conf]: 2.在里面加入如下代码,并保存: NameVirtualHost *:80 <VirtualHost ...
- Resource interpreted as Document but transferred with MIME type application/json
转自:https://blog.csdn.net/just_lover/article/details/81207472 我在修改并保存后,界面返回提示“undifine”,实际我是看到有返回提示的. ...
- ssm的maven项目启动tomcat时报错,Cannot find class: XXXX解决办法
最近在写一个ssm的项目,启动总是报错.原因网上查了也没找到.最后终于解决.下面直接上代码 问题描述: 严重: Allocate exception for servlet ssm-dispatche ...
- 浅谈HDFS(三)之DataNote
DataNode工作机制 一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳. DataNode启动后向Nam ...
- Ubuntu安装Gitlab Runner
第一步: 添加GitLab的官方存储库: curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runne ...
- MySQL/MariaDB数据库的主从复制
MySQL/MariaDB数据库的主从复制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL复制概述 1>.传统扩展方式 垂直扩展(也叫向上扩展,Sacle ...
- Eureka 中服务下线的几种方式
原文:https://blog.csdn.net/qq_15071263/article/details/85276486#1_6 Eureka 中服务下线的几种方式1.直接停掉服务根据默认的策略,如 ...
- 个人第5次作业-Alpha2项目的测试
这个作业属于哪个课程 系统分析与设计 这个作业要求在哪里 作业要求 团队名称 卓越Code 这个作业的目标 选取3个非自己所在团队进行项目测试,协助该团队进行项目改进 前言 魏家田 201731062 ...
- HDU4814——数学,模拟进制转换
本题围绕:数学公式模拟进制转换 HDU4814 Golden Radio Base 题目描述 将一个十进制的非负整数转换成E(黄金分割数)进制的数 输入 不大于10^9的非负整数,处理到文件尾 输出 ...
- [Reprint] Difference Between Job, Work, And Career
https://www.espressoenglish.net/difference-between-job-work-and-career/ A lot of English learners co ...