广告
返回顶部
首页 > 资讯 > 前端开发 > html >Vue CLI插件开发的示例分析
  • 850
分享到

Vue CLI插件开发的示例分析

2024-04-02 19:04:59 850人浏览 安东尼
摘要

这篇文章主要为大家展示了“Vue CLI插件开发的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue CLI插件开发的示例分析”这篇文章吧。1. 什么

这篇文章主要为大家展示了“Vue CLI插件开发的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue CLI插件开发的示例分析”这篇文章吧。

1. 什么是CLI plugin

它可以修改内部webpack配置并将命令注入到vue-cli-service。一个很好的例子是@vue/cli-plugin-typescript:当你调用它时,它会tsconfig.JSON为你的项目添加一个并更改App.vue类型,整个过程不需要手动执行。
插件非常有用,但有很多不同的情况: Electron构建器,添加UI库,如iview或ElementUI ....如果你想为某个特定的库提供一个插件但却不存在呢?这时候,构建一个属于自己项目的插件就是个不错的选择。

Vue CLI插件开发的示例分析

在本文中,我们将构建一个vue-cli-plugin-rx。它允许我们向项目添加vue-rx库,并在我们的Vue应用程序中获得Rxjs支持

2. Vue-cli插件目录结构

CLI 插件是一个可以为 @vue/cli项目添加额外特性的 npm 包。它应该始终包含:

  1. 一个Service插件作为其主要导出

  2. 可选的包含一个 Generator 和一个 Prompt 文件。

.
├── README.md
├── generator.js  # generator (可选)
├── prompts.js    # prompt 文件 (可选)
├── index.js      # service 插件
└── package.json

如果你需要在插件安装的同时,通过命令行来选择是否创建一些示例组件,那么目录可以改为:

 .
├── README.md
├── generator
│   └── index.js  # generator
├── prompts.js    # 命令行提示安装
├── index.js      # service 插件
└── package.json

2.1 GeneratorAPI

一个发布为 npm 包的 CLI 插件可以包含一个 generator.js 或 generator/index.js 文件。插件内的 generator 将会在两种场景下被调用:

在一个项目的初始化创建过程中,如果 CLI 插件作为项目创建 preset 的一部分被安装。
插件在项目创建好之后通过 vue invoke 独立调用时被安装。

Generatorapi允许一个 generator 向 package.json 注入额外的依赖或字段,并向项目中添加文件。

2.2 Service 插件

Service 插件接收两个参数的函数:一个PluginAPI实例和一个包含项目本地选项的对象。它可以扩展/修改不同环境的内部WEBpack配置,并为其注入其他命令vue-cli-service。
但在这里,我们只想在必要时添加一些依赖项和示例组件。所以我们的index.js长这样:

module.exports = (api, opts) => {}

如果你想改变内部webpack配置或其它操作,请在官方Vue CLI文档中阅读本节

2.3 Package.json

keyWords 指定了在库中搜索时能够被哪些关键字搜索到,所以一般这个会多写一些项目相关的词在这里,是一个字符串数组

{
 "name": "vue-cli-plugin-rx",
 "version": "1.0.0",
 "description": "",
 "main": "index.js",
 "keywords": [
 "vue",
 "vue-cli",
 "rxjs",
 "vue-rx"
 ],
 "author": "",
 "license": "ISC"
}

3. 通过generator添加依赖项

generator可帮助我们添加依赖项并更改项目文件。所以,我们需要的第一步是让我们的插件添加依赖项:rxjs和vue-rx(你也可以添加其它):

// generator/index.js
module.exports = (api, options, rootOptions) => {
 api.extendPackage({
 dependencies: {
 'rxjs': '^6.3.3',
 'vue-rx': '^6.1.0',
 },
 });
}

generator 导出一个接收三个参数的函数:GeneratorAPI实例,生成器选项和 - 如果用户使用某个预设创建项目 - 整个预设将作为第三个参数传递。

api.extendPackage方法将会修改项目的package.json。

在本文的例子中,我们将两个依赖项添加到dependencies。

现在我们需要更改main.js文件。为了使RxJS能在Vue组件中工作,我们需要导入VueRx和调用Vue.use(VueRx)

首先,我们创建一个想要添加的字符串到主文件:

let rxLines = `\nimport VueRx from 'vue-rx';\n\nVue.use(VueRx);`;

 使用api.onCreateCompletehook。在文件写入磁盘时调用它:

api.onCreateComplete(() => {
 const fs = require('fs');
 const mainPath = api.resolve(''./src/main.js');
};

现在我们修改文件内容:

api.onCreateComplete(() => {
 const fs = require('fs');
 const mainPath = api.resolve('./src/main.js');
 // 获取内容
 let contentMain = fs.readFileSync(mainPath, { encoding: 'utf-8' });
 const lines = contentMain.split(/\r?\n/g).reverse();
 // 注入import
 const lastImportIndex = lines.findIndex(line => line.match(/^import/));
 lines[lastImportIndex] += rxLines;
 // 修改应用
 contentMain = lines.reverse().join('\n');
 fs.writeFileSync(mainPath, contentMain, { encoding: 'utf-8' });
 });
};

4. 本地测试cli-plugin

首先我们创建一个简单的Vue-cli项目:

vue create test-app

 cd到项目文件夹并安装我们新创建的插件:

cd test-app
npm install --save-dev file://Users/hiro/练习/测试/vue-plugin

 安装插件后,需要调用它:

vue invoke vue-cli-plugin-rx

 现在,你查看test-app项目的main.js,将会看到:

import Vue from 'vue'
import App from './App.vue'
import VueRx from 'vue-rx';
Vue.use(VueRx);

同时,查看package.json将会发现:

"dependencies": {
  "core-js": "^2.6.5",
  "rxjs": "^6.3.3",
  "vue": "^2.6.10",
  "vue-router": "^3.0.3",
  "vue-rx": "^6.1.0",
  "vuex": "^3.0.1"
 }

5. 通过generator创建示例组件

经过上面的验证,插件已有效。此时,我们可以扩展一下它的功能,创建示例组件,方便其他人理解和使用。

5.1 编写示例组件

我们创建的这个示例组件。它应该是位于项目src/components文件夹中的文件。

于是我们可以在generator目录下,创建/template/src/components:

Vue CLI插件开发的示例分析

这一个简单的RxJS驱动的计数器,带有两个按钮

Vue CLI插件开发的示例分析

源码如下:

<template>
  <section>
    <h2>Click on 'Count' button to count your clicks</h2>
    <button v-stream:click="count$">Count clicks</button>
    <button @click="clearCounter">Clear counter</button>
    <p>{{result$}}</p>
  </section>
</template>

<script>
import {
 filter,
 bufferWhen,
 debounceTime,
 map,
 startWith,
} from 'rxjs/operators';
export default {
 domStreams: ['count$'],
 subscriptions() {
  return {
   result$: this.count$.pipe(
    filter(event => !!event),
    bufferWhen(() => this.count$.pipe(debounceTime(400))),
    map(clicks => clicks.length),
    startWith(0),
   ),
  };
 },
 methods: {
  clearCounter() {
   this.count$.next(null);
  },
 },
};
</script>
<style>
button {
 padding: 10px;
 font-size: 14px;
 margin-right: 10px;
 border-radius: 4px;
 outline: none;
}
</style>

 不需要关心RxJS做了什么(反正我也没看懂),引就vans了。

此时我们需要改动generator/index.js,使它可以识别并写入文件夹。

api.render('./template', {
 ...options,
});

当你调用 api.render('./template')时,generator将会使用 EJS渲染 ./template中的文件 (相对于 generator中的文件路径进行解析)

5.2 命令行提示安装

如果用户是个老手,不想拥有示例组件,该怎么办?在插件安装过程中,我们可以向prompts.js添加提示代码,以供用户在命令行选择:

module.exports = [
 {
  name: `addExample`,
  type: 'confirm',
  message: '是否添加示例组件到项目components目录?',
  default: false,
 },
];

询问用户是否要将示例组件添加到项目components目录下。默认是:false。

这时我们需要修改下generator/index.js:

if (options.addExample) {
  api.render('./template', {
   ...options,
  });
}

Vue CLI插件开发的示例分析

此时我们撤回安装,重新运行

 yarn add --save-dev file://Users/hiro/练习/测试/vue-plugin
vue invoke vue-cli-plugin-rx

 将会看到:

Vue CLI插件开发的示例分析

此时你查看项目components目录,将会发现多了示例组件文件

 Vue CLI插件开发的示例分析

6.如何发布插件

来自官方文档

为了让一个 CLI 插件能够被其它开发者使用,你必须遵循 vue-cli-plugin-<name> 的命名约定将其发布到 npm 上。插件遵循命名约定之后就可以:

被 @vue/cli-service 发现;
被其他开发者搜索到;
通过 vue add <name>或 vue invoke <name> 安装下来。

你只需要在package.json中添加描述description,以及在插件项目根目录下创建loGo.png。
接下来就是注册npmjs.com

 2、设置仓库地址为npm官方仓库地址(国内大部分都使用阿里淘宝镜像,如果没改publish会失败)
npm config set reGIStry https://registry.npmjs.org/

3、登陆npm,用户名密码邮箱需要全部匹配
npm whoami
npm login
Username: xxxxx
Password:
Email: (this IS public) xxx@gmail.com
Logged in as xxxxx on Https://registry.npmjs.org/.

4、登陆完可以publish了,执行以下命令
cd dist && npm publish && cd ../
或npm publish dist
输出以下信息说明发布成功
+ ngx-xxx@0.0.1
这时登录https://www.npmjs.com/可以看到自己发布的项目

完事。

以上是“Vue CLI插件开发的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网html频道!

--结束END--

本文标题: Vue CLI插件开发的示例分析

本文链接: https://www.lsjlt.com/news/78266.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue CLI插件开发的示例分析
    这篇文章主要为大家展示了“Vue CLI插件开发的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue CLI插件开发的示例分析”这篇文章吧。1. 什么...
    99+
    2022-10-19
  • jQuery插件开发的示例分析
    这篇文章将为大家详细讲解有关jQuery插件开发的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。进行jQuery插件开发前,首先要知道两个问题:什么是jQuery...
    99+
    2022-10-19
  • Chrome插件开发的示例分析
    这篇文章给大家分享的是有关Chrome插件开发的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。本文目录:demo部分截图:前言什么是Chrome插件严格来讲,我们正在说的东西应该叫Chrome扩展(Chr...
    99+
    2023-06-15
  • vue中vue-cli的示例分析
    这篇文章将为大家详细讲解有关vue中vue-cli的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。正文首先,我们来说一下安装的东西吧!处于有头有尾的目的,还是几句...
    99+
    2022-10-19
  • Vue中插件的示例分析
    这篇文章主要为大家展示了“Vue中插件的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue中插件的示例分析”这篇文章吧。以上是“Vue中插件的示例分析”这篇文章的所有内容,感谢各位的阅...
    99+
    2023-06-25
  • vue-cli中vuex的示例分析
    这篇文章主要为大家展示了“vue-cli中vuex的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue-cli中vuex的示例分析”这篇文章吧。1.v...
    99+
    2022-10-19
  • Vue中vue-cli安装的示例分析
    这篇文章给大家分享的是有关Vue中vue-cli安装的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。介绍Vue-cli是Vue的脚手架工具主要作用:目录结构、本地调试、代...
    99+
    2022-10-19
  • vue-cli配置文件之config的示例分析
    这篇文章主要介绍了vue-cli配置文件之config的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。首先我们先看一下config的...
    99+
    2022-10-19
  • vue-cli中webpack配置文件的示例分析
    这篇文章主要为大家展示了“vue-cli中webpack配置文件的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue-cli中webpack配置文件的...
    99+
    2022-10-19
  • vue-cli中ESlint配置文件eslintrc.js的示例分析
    这篇文章将为大家详细讲解有关vue-cli中ESlint配置文件eslintrc.js的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:1.eslint简...
    99+
    2022-10-19
  • vue-cli中babel配置文件.babelrc的示例分析
    这篇文章给大家分享的是有关vue-cli中babel配置文件.babelrc的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。vue-cli脚手架工具根目录的babelrc...
    99+
    2022-10-19
  • Vue中拖拽组件开发的示例分析
    这篇文章主要为大家展示了“Vue中拖拽组件开发的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue中拖拽组件开发的示例分析”这篇文章吧。为什么选择Vu...
    99+
    2022-10-19
  • Vue中render开发的示例分析
    这篇文章给大家分享的是有关Vue中render开发的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。场景官网描述的场景当我们开始写一个通过 level prop 动态生成 ...
    99+
    2022-10-19
  • vue开发应用的示例分析
    这篇文章将为大家详细讲解有关vue开发应用的示例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。使用 vux UI组件库使用 vue-navigation...
    99+
    2022-10-19
  • vue-cli系列之vue-cli-service整体架构的示例分析
    这篇文章给大家分享的是有关vue-cli系列之vue-cli-service整体架构的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。概述vue启动一个项目的时候,需要执行...
    99+
    2022-10-19
  • C#MSN插件开发实例分析
    这篇文章主要介绍“C#MSN插件开发实例分析”,在日常操作中,相信很多人在C#MSN插件开发实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#MSN插件开发实例分析”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-17
  • vue-cli中项目结构的示例分析
    小编给大家分享一下vue-cli中项目结构的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!总体框架一个vue-cli的项...
    99+
    2022-10-19
  • vue-cli多页面工程的示例分析
    这篇文章主要介绍vue-cli多页面工程的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体如下:src目录结构因为是自定义的设置,src下的目录结构需要固定,约定大于配置嘛...
    99+
    2022-10-19
  • Vue cli+mui区域滚动的示例分析
    这篇文章将为大家详细讲解有关Vue cli+mui区域滚动的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。vue cli+mui配合使用达到区域滚到的效果 ,方法...
    99+
    2022-10-19
  • vue-cli中目录结构的示例分析
    这篇文章将为大家详细讲解有关vue-cli中目录结构的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、├── build // 项目构建(webpack)相关代...
    99+
    2022-10-19
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作