译者按: 你可能npm人家的包过成千上万次,但你是否有创建,发布和使用过自己的npm包?

  • 原文: How to create, publish and use your own VueJS Component library on NPM using @vue/cli 3.0
  • 译者: Fundebug

为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。

尽管我已经在工作上用了Vue.js一段时间,但我从不需要在npm上发布组件。但最近发现在不同的项目重写组件是件非常蛋疼的事,所以当我第三次使用Vue.js开发项目时,我觉得我们是时候需要一些高度可配置并且可重用的组件了。

首先,你需要安装vue-cli才能开始。


npm install -g @vue/cli
# 或者
yarn global add @vue/clivue create my-vue-library

我们正在使用vue-cli 3.0 beta版本。 你可能会Github的README.md看到一条警告:“除非您有冒险精神,否则不要在生产中使用”,很显然我很有冒险精神,哈哈。

你现在的控制面应该看起来如下图:


现在你只需开始做以下事情:


npm run serve

现在开始创建一个简单的组件,来看一个Banner组件的例子。

<template><div class="banner" :style="bannerStyles" :class="`banner__${position}`"><slot></slot></div>
</template><script>
const defaultStyles = {left: 0,right: 0,
};
export default {props: {position: {type: String,default: 'top',validator(position) {return ['top', 'bottom'].indexOf(position) > -1;},},styles: {type: Object,default: () => ({}),},},data() {return {bannerStyles: {...defaultStyles,...this.styles,},};},
};
</script><style lang="scss" scoped>
.banner {padding: 12px;background-color: #fcf6cd;color: #f6a623;text-align: left;position: fixed;z-index: 2;
}
.banner__top {top: 0;
}
.banner__bottom {bottom: 0;
}
</style>

将组件注册为名为Banner的组件后,可以在模板中简单使用该组件:

<Banner>Fundebug:最专业的应用错误监控平台!</Banner>

你可以在CodeSandbox查看这个组件的demo

Fundebug错误实时监控为您的Vue项目保驾护航!

现在,如果你想通过npm使用这个组件,你必须做一些事情。

第1步 - 设置库构建

你需要利用vue-cli将你的组件构建为库。 将vue-cli-service build --target lib --name myLib [entry]添加到你的package.json脚本中。

默认情况下,[entry]是你的App.vue,但你可以将其更改为你导入这些组件的任何文件的相对路径。 你可能会也可能不会选择全局注册这些组件,但如果我是你,我会将它们与我的库名称一起注册为前缀。 程序员用组件的时候,代码越少越好。

我已经为我的脚本添加了build-bundle,以便我可以运行npm run build-bundle来创建我的库包。


这会产生类似于以下的输出:


对于CodeSandbox示例,输入文件应该如下所示:

第2步 - 指向package.json中的输出文件

为了确保package.json中的main属性正确指向输出文件。 我更喜欢使用commonjs包。

第3步 - 以用户身份在npm上添加/登录

确保你在npm上注册。 npm adduser注册一个新用户和npm login作为一个现有用户登录。

第4步 - 验证npm用户凭证

输入npm whoami来验证你的用户名。

第5步 - 命名你的组件库

为你的包选择一个名字,你必须确保它尚未被使用。 确保把它放在你的package.json中。

第6步 - 构建

通过执行在第1步中添加的程序包脚本来构建捆绑软件。


npm run build-bundle

第7步 - 在npm上发布组件库

运行npm publish --access public来发布该库供公众访问。

就是这样。 你完成了在npm上发布你的Vue组件库!

第8步 - 如何使用你新发布的库

从npm安装组件库并将组件导入代码中。 安装:


npm install --save [你的库名]

其中[你的库名]是你在第5步中给出的库的名称。

在你的main.js或类似的入口点,只需使用以下命令导入你的库:


import '你的库名';

现在,你可以开始使用你的组件了,因为我们在第一步中全局注册了这些组件。

对于我们的示例组件Banner,当我们注册组件时,组件名称为FlockBanner。 所以,你可以直接在你的模板中使用它:


<flock-banner>这是你的Banner是示例</flock-banner>

使用上面提到的组件库查看实例:https://codesandbox.io/s/n9n7...

整个过程我们就完成了。 在Vue.js团队提出CLI版本3后,构建自己的组件库以便重用变得非常容易。 如果觉得这个流程有点帮助,点个赞呗,同时也支持下Fundebug哦!

关于Fundebug

Fundebug专注于JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js和Java实时BUG监控。 自从2016年双十一正式上线,Fundebug累计处理了9亿+错误事件,得到了Google、360、金山软件、百姓网等众多知名用户的认可。欢迎免费试用!

版权声明

转载时请注明作者Fundebug以及本文地址:
https://blog.fundebug.com/2018/06/08/vuejs-component-on-npm/

如何使用@vue/cli 3.0在npm上创建,发布和使用你自己的Vue.js组件库相关推荐

  1. @vue/cli 3.0 eslint 转成tslint

    我们用 vue/cli 创建新项目的时候,通常会选择代码检查工具 [eslint|tslint],有的时候难免会选错,这个时候想要替换,怎么办 场景再现 vue create lint-vue 为了方 ...

  2. Vue CLI 3.0 正式发布,Vue.js 开发标准化工具

    Vue CLI 3.0 已发布,该版本经历了重构,旨在: 减少现代前端工具的配置烦扰,尤其是在将多个工具混合在一起使用时: 尽可能在工具链中加入最佳实践,让它成为任意 Vue 应用程序的默认实践. V ...

  3. Vue CLI 3.0脚手架如何在本地配置mock数据

    前后端分离的开发模式已经是目前前端的主流模式,至于为什么会前后端分离的开发我们就不做过多的阐述,既然是前后端分离的模式开发肯定是离不开前端的数据模拟阶段. 我们在开发的过程中,由于后台接口的没有完成或 ...

  4. vue/cli 3.0 与 2.0脚手架怎样mock数据

    vue/cli 3.0 与 2.0脚手架怎样mock数据 3.0 移除了 static 文件目次,新增了 public 目次,这个目次下的静态资本不会经由 webpack 的处置惩罚,会被直接拷贝,所 ...

  5. Vue CLI 3.0脚手架如何在本地配置mock数据json

    前后端分离的开发模式已经是目前前端的主流模式,至于为什么会前后端分离的开发我们就不做过多的阐述,既然是前后端分离的模式开发肯定是离不开前端的数据模拟阶段. 我们在开发的过程中,由于后台接口的没有完成或 ...

  6. 专访Vue作者尤雨溪:Vue CLI 3.0重构的原因

    1.为什么要对 Vue CLI 进行大规模修改? 尤雨溪认为旧版本的 Vue CLI 本质上只是从 GitHub 拉取模版,这种拉模版的方式有几个问题: (1) 在单个模版里面同时支持太多选项会导致模 ...

  7. Vue CLI 3.0正式发布!

    web前端教程 用大白话,来讲编程 网友们纷纷点赞,也有网友调侃学不动了! 尤雨溪表示,Vue CLI 3.0 与其他的版本完全不同,它经历了重构,目的是: 1.尽可能减少现代前端工具在配置上的烦恼, ...

  8. Vue Cli 3.0打包生成app

    1.vue cli 3.0创建新工程,添加依赖mint-ui  ​ 2.项目配置中,公共路径设置为./,(注意,这一步非常重要,否则打包后项目找不到项目中文件) 修改保存后,可以看到vue.confi ...

  9. vue3.0版本怎么修改服务器路径,@vue/cli 3.0 下通过npm命令切换不同服务器地址

    在使用vue时,有一种情况比较麻烦,就是这个前端项目可能不止一个服务器地址,那么每个服务器地址都得打包一次,并且需要手动修改服务器接口地址. 首先知道可以使用环境变量方式将不同配置载入到不同模式下. ...

最新文章

  1. 基于深度学习方式的点云处理算法汇总
  2. java B2B2C Springboot电子商务平台源码-Feign 基本使用
  3. python 装饰器 生成器 迭代器和闭包
  4. 基于ROS的人脸识别
  5. 4.3---建立高度最小二叉树
  6. setup.s 分析—— Linux-0.11 学习笔记(二)
  7. HTML5 文件操作API
  8. 查看mysql语句运行时间
  9. Supervisor 守护 dotnetcore 程序
  10. Python 数据分析三剑客之 NumPy(六):矩阵 / 线性代数库与 IO 操作
  11. 灯塔谈话记录错误_如何保留灯塔报告的历史记录
  12. 开始研究WEKA,一个开源java的数据挖掘工具
  13. 20年中国人均GDP排名变化
  14. 油猴子(Tampermonkey )API userscliptAPI 中文翻译
  15. 企业微信开发实战(二、OA审批之获取审批模版详情提交审批申请)
  16. 你了解CNAS认证吗?
  17. 爬虫中使用selenium实现对斗鱼直播的各个房间标题、主播id,直播内容类型和热度信息的爬取
  18. 解决Zxing解析本地图片二维码,识别率低,识别不出来的问题!
  19. Android聊天软件的开发(七)--聊天通信
  20. PHP时间戳实现倒计时,JavaScript | 时间戳实现倒计时定时器

热门文章

  1. 【iOS】iOS开发之使用Mac自动操作制作@1x@2x@3x图片(切图)
  2. 利用Kafka发送/消费消息-Java示例
  3. MyBatis调用存储过程,含有返回结果集、return参数和output参数
  4. [jQuery]Great Ways to Learn jQuery
  5. 存储极客谈“SPC-1负载分析与AFA寿命评估”
  6. Memcached原理与应用
  7. 西部开源学习笔记《unit 2》
  8. windows serve 2012部署操作系统之部署(三)
  9. 图片处理--冰冻特效
  10. RHEL5 安装VMware tools