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

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

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

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

npm install -g @vue/cli
# 或者
yarn global add @vue/cli vue 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; 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/n9n7yy2lwp

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

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

  1. @vue/cli 3.0 使用 svg-sprite-loader 加载本地 SVG 文件

    目录 @vue/cli 3.0 使用 svg-sprite-loader 加载本地 SVG 文件 运行 使用 配置 svg-sprite-loader 调用当前环境下的颜色 props @vue/cl ...

  2. VUE CLI 3.0 安装及创建项目

    一.安装 VUE CLI 3.0 官网: https://cli.vuejs.org/   详细资料可以自己先把官网过一遍. 1. 安装(默认你的电脑上已安装node及npm) npm install ...

  3. Django + Vue cli 3.0 访问静态资源问题

    [问题背景] 用Vue clie 3.0的搭建得框架把我坑死了,在打包后,调用不到静态资源js,css,mp3等 [问题原因] vue cli 3.0打包后,dist目录下没有static目录,而Dj ...

  4. vue/cli 3.0脚手架搭建

    在vue 2.9.6中,搭建vue-cli脚手架的流程是这样的: 首先 全局安装vue-cli,在cmd中输入命令: npm install --global vue-cli  安装成功:  安装完成 ...

  5. @vue/cli 4.0+express 前后端分离实践

    之前总结过一篇vue-cli 2.x+express+json-server实现前后端分离的帖子,@vue/cli3.0及4.0搭建的项目与vue-cli2.x的项目结构有很大的不同.这里对@vue/ ...

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

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

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

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

  8. vue cli 4.0.5 的使用

    vue cli 4.0.5 的使用 现在的 vue 脚手架已经升级到4.0的版本了,前两日vue 刚发布了3.0版本,我看了一下cli 4 和cli 3 没什么区别,既然这样,就只总结一下vue cl ...

  9. Vue CLI安装报错 npm ERR! Exit handler never called!

    安装Vue CLI时报错: npm install –g vue-cli 试了四种办法 1.把全局安装-g放到后面 npm install @vue/cli –g 2.命令行输入 npm 缓存清理命令 ...

随机推荐

  1. flask上下文详解

    一.前言 了解过flask的python开发者想必都知道flask中核心机制莫过于上下文管理,当然学习flask如果不了解其中的处理流程,可能在很多问题上不能得到解决,当然我在写本篇文章之前也看到了很 ...

  2. rem计算

    //jquery实现 // $(function(){ // $(window).on("resize",function(){ // var width=$(window).wi ...

  3. JavaScript 数组方法

    数组方法: 1.Array.join([param]) 方法:将数组中所有的元素都转换为字符串并连接起来,通过字符 param 连接,默认使用逗号,返回最后生成的字符串 2.Array.reverse ...

  4. 《机器学习实战(基于scikit-learn和TensorFlow)》第六章内容学习心得

    本章讲决策树 决策树,一种多功能且强大的机器学习算法.它实现了分类和回归任务,甚至多输出任务. 决策树的组合就是随机森林. 本章的代码部分不做说明,具体请到我的GitHub上自行获取. 决策树的每个节 ...

  5. Dash by Plotly 学习笔记

    一.介绍 1.dash 是什么 dash 是一个基于 Flask (Python) + React 的 web 框架. 入门指南:https://dash.plot.ly/getting-starte ...

  6. 线性插值法的原理和python代码实现

    假设我们已知坐标 (x0, y0) 与 (x1, y1),要得到 [x0, x1] 区间内某一位置 x 在直线上的值.根据图中所示,我们得到 由于 x 值已知,所以可以从公式得到 y 的值 已知 y  ...

  7. JSON库的使用研究(三)

    怎么选择JSON库? 从整体测试结果来看,总结如下: 用于序列化.反序列的功能,数量量小,吞吐量不大于10000每秒的,选择gson: 用于解析JSON的,还是用Fastjson吧,虽然听说坑很多. ...

  8. mysql 开发进阶篇系列 49 表的数据导出(into outfile,mysqldump)

    一.概述 在数据库的日常维护中,表的导入和导出是很频繁的操作,本篇讲解如何使用导入功能,并以案例为演示.某些情况下,需要将表里的数据导出为某些符号分割的纯数据文本,而不是sql语句,比如:(1)用来作 ...

  9. Spring Security之动态配置资源权限

    在Spring Security中实现通过数据库动态配置url资源权限,需要通过配置验证过滤器来实现资源权限的加载.验证.系统启动时,到数据库加载系统资源权限列表,当有请求访问时,通过对比系统资源权限 ...

  10. 【干货】利用MVC5+EF6搭建博客系统(三)添加Nlog日志、缓存机制(MemoryCache、RedisCache)、创建控制器父类BaseController

    PS:如果图片模糊,鼠标右击复制图片网址,然后在浏览器中打开即可. 一.回顾系统进度以及本章概要 目前博客系统已经数据库创建.以及依赖注入Autofac集成,接下来就是日志和缓存集成,这里日志用的是N ...