需求

因之前是做外包项目居多,经常用到相同的组件,之前的办法是在一个项目中写一个组件,其他项目直接将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组件库/封装插件(从零到有)的更多相关文章

  1. 16款优秀的Vue UI组件库推荐

    16款优秀的Vue UI组件库推荐 Vue 是一个轻巧.高性能.可组件化的MVVM库,API简洁明了,上手快.从Vue推出以来,得到众多Web开发者的认可.在公司的Web前端项目开发中,多个项目采用基 ...

  2. 强烈推荐优秀的Vue UI组件库

    Vue 是一个轻巧.高性能.可组件化的MVVM库,API简洁明了,上手快.从Vue推出以来,得到众多Web开发者的认可.在公司的Web前端项目开发中,多个项目采用基于Vue的UI组件框架开发,并投入正 ...

  3. 【转】优秀的Vue UI组件库

    原文来源:https://www.leixuesong.com/3342 Vue 是一个轻巧.高性能.可组件化的MVVM库,API简洁明了,上手快.从Vue推出以来,得到众多Web开发者的认可.在公司 ...

  4. 为公司架构一套高质量的 Vue UI 组件库

    有没有曾遇过,产品要我们实现一个功能,但是 iview 或者 elementui 不支持,我们然后义正言辞的说,不好意思,组件库不支持,没法做到. 有没有曾和设计师争论得面红耳赤,其实也是因为组件库暂 ...

  5. Vue UI组件库

    1. iView UI组件库  iView官网:https://www.iviewui.com/ 2.Vux UI组件库   Vux官网:https://vux.li/ 3.Element UI组件库 ...

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

    本文仅限于入门级,没有成规模制作,希望能对你有所帮助. 因为在开发多个项目中可能会用到同一个组件,那么我们通过复制粘贴的形式更新,无异于是笨拙的,我们可以通过上传到npm后,不断迭代npm包来实现更新 ...

  7. 「前端」尚妆 UI 组件库工程实践(weex vue)

    本文来自尚妆前端团队南洋 发表于尚妆github博客,欢迎订阅! 前言 尚妆大前端团队使用 weex 进行三端统一开发有一段时间了,截止本文发表「达人店」APP大部分页面都已经用 weex 进行了重构 ...

  8. 手把手教你写 Vue UI 组件库

    最近在研究 muse-ui 的实现,发现网上很少有关于 vue 插件具体实现的文章,官方的文档也只是一笔带过,对于新手来说并不算友好. 笔者结合官方文档,与自己的摸索总结,以最简单的 FlexBox  ...

  9. [转载]前端——实用UI组件库

    https://www.cnblogs.com/xuepei/p/7920888.html Angular UI 组件 ngx-bootstrap 是一套Bootstrap 组件 官网:https:/ ...

随机推荐

  1. el-table单元格样式更改

    前几天遇到一个关于el-table表格样式的问题一直没解决 因为在el-table-column加样式并不生效所以更改起来比较麻烦 后来了看来element官方文档和在一些关于此方面的博客,使用了一个 ...

  2. Integer装箱拆箱、参数传递

    拆箱装箱 举个例子 @Test public void testEquals() { int int1 = 12; int int2 = 12; Integer integer1 = new Inte ...

  3. 使用 shell 脚本配置 iOS 工程

      APP开发过程中,往往需要在多个网络环境或配置中进行切换,以获取不同配置的APP,甚至有时需要用一套代码经过简单的配置生成不同的APP.而手动配置费时费力,且容易出错.这里介绍用脚本工具,去生成不 ...

  4. Flink源码分析 - 剖析一个简单的Flink程序

    本篇文章首发于头条号Flink程序是如何执行的?通过源码来剖析一个简单的Flink程序,欢迎关注头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_tech) ...

  5. CentOS8-在hyper-V安装选项

    安装选项select Server with a GUI.后重启卡在黑屏无法启动. 后改选: Select software to be installed.  Choose the Workstat ...

  6. 关于 Spring AOP (AspectJ) 你该知晓的一切

    版权声明:本文为CSDN博主「zejian_」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/javazej ...

  7. spring cloud (六) 将一个普通的springcloud项目 非feign或ribbon项目,改造成turbine可聚合监听的项目

    改造之前一个项目 service-a 1 pom.xml添加如下 <dependency> <groupId>org.springframework.cloud</gro ...

  8. springboot全局异常处理(1)

    新建一个类 在类上加一个注解即可 @ControllerAdvice /** * 全局错误处理 * @author sys * */ @ControllerAdvice @ResponseBody p ...

  9. win10下无法安装loadrunner,提示“管理员已阻止你运行此应用”

    如下图: 1.再次进入控制面板,并且选择用户账户后把最下面的[更改用户账户控制设置],里面有个滑条,把滑条拉到最下面的[从不通知]上面并且确定. 2.按[Win+R]快捷键打开运行,输入 gpedit ...

  10. C# 保存文件到数据库

    html <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FileUploa ...