前端如何搭建vue UI组件库/封装插件(从零到有)

需求

因之前是做外包项目居多,经常用到相同的组件,之前的办法是在一个项目中写一个组件,其他项目直接将compents下的组件复制,粘贴到项目中使用,缺点是维护起来,改一个项目,其他项目也需要修改,所以,自己研究准备去封装一个组件库,

前言

日常在项目中我们经常直接根据 npm install/ npm i 去安装插件/组件库

1例如: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组件        export default {

  props: {

    typeInput: String

  },

  methods: {

    inputChange(val) {

      this.$emit("change", val);

    }

  }

};


3.新建components/index.js

import Vuefrom"vue";

import Input from"./input/index.vue";constComponents = {

  Input

};

Object.keys(Components).forEach(name => {

  Vue.component(name, Components[name]);

});

export defaultComponents;

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/signup2.命令行注册

  npm add user  //按照提示输入用户名,邮箱等即可3.注册后登陆

  npm login    //按照提示输入用户名,密码,邮箱等即可4.登陆后查看登陆状态(可忽略)

  npm whoami

6.打包项目(在发布之前,请保证是最新代码)

npm run build-bundle

7.发布代码到npm上

npm publish --accesspublic

8.登陆npm官网查看发布代码(UI组件库创建完成)

个人头像->profile settings->package

9.测试组件(新建/已有项目中安装)

1.安装

  npm install --save @username/component-name//@npm官网注册username/组件项目名 == @username/component-name2.引用在项目总入口中(找到src/index.js)文件

  import '@username/component-name'3.引用在页面中

      data() {

        return {

          typeInput: 'text'      }

    },

    methods: {

      changeInput(val) {

        console.log(val)

      },

    }

  }

总结

根据以上步骤操作下来,期间遇到过一些问题,列举一下,希望可以帮助到大家也方便自己用 

packjson.json文件

  1."name": "@username/项目名"  //username需要使用npm官网注册的username,我一开始是随便用了一个名字去提交代码,一直报错,查了很多资料才发现username的原因

2.

"private": false,  //private需要设置为false,否则报错

查询资料

https://blog.csdn.net/baidu_25464429/article/details/81153798

如上述还有不懂的地方可以查看以上网址,本人是根据该网址步骤依次发布的

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容

  • 第一节 vue:读音: v-u-eview vue和angular区别?vue——简单、易学指令以 v-xxx一片...
    黑色的五叶草阅读 1,116评论 0 1
  • ## 框架和库的区别?> 框架(framework):一套完整的软件设计架构和**解决方案**。> > 库(lib...
    Rui_bdad阅读 2,890评论 1 4
  • vue-cli搭建项目 确保安装了node与npm 再目标文件夹下打开终端 执行cnpm i vue-cli -g...
    Akiko_秋子阅读 3,212评论 1 22
  • 预期结果:目标和时限 指导方针:实现目标的原则、方针和行为限度 可用资源:人力物力、技术等 任务考核:建立评估标准...
    竹夏阅读 507评论 0 0
  • 小时候,我养过一院子的花。 今年,我重新开始从头开始养一点儿植物。 别人说 那也只是别人说 临到快过年,我逛了一趟...
    番茄秧子阅读 208评论 0 2