前端如何搭建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:/ ...
随机推荐
- Linux生产环境上,最常用的一套“AWK“技巧【转】
最有用系列: <Linux生产环境上,最常用的一套“vim“技巧> <Linux生产环境上,最常用的一套“Sed“技巧> <Linux生产环境上,最常用的一套“AWK“技 ...
- 【夯实基础】- Integer.valueof()和Integer.parseInt()的区别
今天在看公司代码的时候,看到有人在将 String 转为 int 时,用到了Integer.parseInt(String s)方法,我一直用的是Integer.valueOf(String s)方法 ...
- insmod/rmmod
insmod -f 不检查目前kernel版本与模块编译时的kernel版本是否一致,强制将模块载入 -k 将模块设置为自动卸除 -m 输出模块的载入信息 -o <模块名称> 指定模块的名 ...
- SpringBoot加载配置文件(@PropertySource@importSource@Value)
情景描述 最近新搭建了一个项目,从Spring迁到了Springboot,为了兼容Spring加载配置文件的风格,所以还想把PropertyPlaceholderConfigurer放在.xml文件里 ...
- Windows下MongoDB的下载安装、环境配置
下载MongoDB 1.进入MongoDB官网,Products -> 选择SOFTWARE下的MongoDB Server 2.选择下载最新版 3.选择对应的版本下载 msi安装包形式安装Mo ...
- ajax 传递数组参数
一.ajax 传递数组参数 需要添加: traditional: true, let typeIDArr = [,,,,,]; var that = this; var url = '@Url.Act ...
- thinkphp5.x命令执行漏洞复现及环境搭建
楼主Linux环境是Centos7,LAMP怎么搭不用我废话吧,别看错了 一.thinkphp5.X系列 1.安装composer yum -y install composer 安装php拓展 yu ...
- Andrew Ng机器学习 一: Linear Regression
一:单变量线性回归(Linear regression with one variable) 背景:在某城市开办饭馆,我们有这样的数据集ex1data1.txt,第一列代表某个城市的人口,第二列代表在 ...
- Codeforces C. Maximum Value(枚举二分)
题目描述: Maximum Value time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Java精通并发-通过openjdk源码分析ObjectMonitor底层实现
在我们分析synchronized关键字底层信息时,其中谈到了Monitor对象,它是由C++来实现的,那,到底它长啥样呢?我们在编写同步代码时完全木有看到该对象的存在,所以这次打算真正来瞅一下它的真 ...
