返回顶部
首页 > 资讯 > 前端开发 > JavaScript >如何构建Vue CLI插件
  • 671
分享到

如何构建Vue CLI插件

2024-04-02 19:04:59 671人浏览 泡泡鱼
摘要

本篇文章给大家分享的是有关如何构建Vue CLI插件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言如果你正在使用Vue框架,你可能已经知道

本篇文章给大家分享的是有关如何构建Vue CLI插件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

如何构建Vue CLI插件

前言

如果你正在使用Vue框架,你可能已经知道什么是Vue CLI了。它是一个用于快速开发vue.js的完整系统,提供项目脚手架。

CLI的一个重要部分是cli-plugins。它们可以修改内部的webpack配置并向vue-cli服务注入命令。

一个很好的例子是 @vuecli-plugin-typescript  :当你调用它时,它会给你的项目添加一个tsconfig.JSON,并改变App.vue的类型,所以你不需要手动去做。

插件是非常有用的,但如果你想有一个用于某些特定库的插件而它不存在呢?嗯,当我们是这样子的情况时......我们决定自己建立它。

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

让我们来看看整个的大致流程吧。

Vue-CLI插件结构

首先,什么是CLI插件?它只是一个具有一定结构的npm包。关于文档,它必须有一个服务插件作为其主要出口,并可以有额外的功能,例如生成器和提示文件。

目前,绝对不清楚什么是服务插件或生成器,但不用担心--以后会有解释的!

当然,像任何npm软件包一样,CLI插件在其根文件夹中必须具有package.json,并且最好具有一些说明的README.md。

因此,让我们从以下结构开始。

. ├── README.md ├── index.js      # service plugin └── package.json

现在让我们来看看可选部分。生成器可以在package.json中注入额外的依赖关系或字段,并向项目中添加文件。我们需要它吗?

当然,我们想把rxjs和vue-rx作为我们的依赖项。更确切地说,我们想创建一些示例组件,如果用户想在安装插件时添加它。

因此,我们需要添加 generator.js 或 generatorindex.js。我更喜欢第二种方式。现在的结构看起来是这样的:

. ├── README.md ├── index.js      # service plugin ├── generator │   └── index.js  # generator └── package.json

还有一件事要添加,就是一个提示文件。我希望我的插件能够询问用户是否想拥有一个示例组件。我们将需要在根目录下有一个prompts.js文件来实现这一行为。所以,现在的结构是这样的:

服务插件(Service plugin)

一个服务插件应该输出一个函数,它接收两个参数:一个Pluginapi实例和一个包含项目本地选项的对象。

它可以针对不同的环境扩展修改内部的WEBpack配置,并向vue-cli-service注入额外的命令。

让我们想一想:我们是否想以某种方式改变webpack配置或创建一个额外的npm任务?

答案是否定的,我们只想在必要时添加一些依赖项和示例组件。因此,我们需要在index.js中改变的是:

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

如果您的插件需要更改Webpack配置,请阅读Vue官方CLI文档中的本节。

https://cli.vuejs.org/dev-guide/plugin-dev.html#service-plugin

通过生成器添加依赖项

如上所述,CLI插件生成器可以帮助我们添加依赖性和改变项目文件。

因此,第一步我们需要做的是为我们的插件添加两个依赖项:Rxjs和vue-rx:

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

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

api.extendPackage方法扩展了项目的package.json。嵌套的字段会被深度合并,除非你把**{ merge: false  }**作为一个参数。在我们的例子中,我们要添加两个依赖项到依赖项部分。

现在我们需要改变一个main.js文件。为了让RxJS在Vue组件中工作,我们需要导入一个VueRx并调用Vue.use(VueRx)。

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

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

现在我们要使用api.onCreateComplete 钩子函数。当文件被写入磁盘时,它被调用:

api.onCreateComplete(() => {     // inject to main.js     const fs = require('fs');     const ext = api.hasPlugin('typescript') ? 'ts' : 'js';     const mainPath = api.resolve(`./src/main.${ext}`); };

这里我们要找的是主文件:如果是TypeScript项目,会是main.ts,否则就是main.js文件。fs这里是文件系统。

现在让我们更改文件内容:

api.onCreateComplete(() => {    // inject to main.js    const fs = require('fs');    const ext = api.hasPlugin('typescript') ? 'ts' : 'js';    const mainPath = api.resolve(`./src/main.${ext}`);     // get content    let contentMain = fs.readFileSync(mainPath, { encoding: 'utf-8' });    const lines = contentMain.split(/\r?\n/g).reverse();     // inject import    const lastImportIndex = lines.findIndex(line => line.match(/^import/));    lines[lastImportIndex] += rxLines;     // modify app    contentMain = lines.reverse().join('\n');    fs.writeFileSync(mainPath, contentMain, { encoding: 'utf-8' });  }); ;

我们正在读取主文件的内容,将其分成几行,并恢复其顺序。然后,我们搜索带有导入(import)语句的第一行,并在那里添加我们的rxLines。在这之后,我们对行数组进行逆转,并保存文件。

在本地测试CLI插件

让我们在package.json中添加有关我们的插件的一些信息,然后尝试将其安装在本地进行测试

最重要的信息通常是插件名称和版本(将插件发布到npm时将需要这些字段),随时可以添加更多信息!package.json字段的完整列表可以在此处找到。以下是我的文件:

{   "name": "vue-cli-plugin-tiantian",   "version": "xxx.1.5",   "description": "Vue-cli 3 plugin for adding RxJS support XXXX",   "main": "index.js",   "keyWords": [     "vue",     "vue-cli",     "rxjs",     "vue-rx"   ],   "author": "TianTian",   "license": "MIT", }

现在是时候检查我们的插件如何工作了!为此,我们创建一个由vue-cli支持的简单项目:

vue create test-app

转到项目文件夹,安装我们新创建的插件。

cd test-app npm install --save-dev file:/full/path/to/your/plugin //填写路径

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

vue invoke vue-cli-plugin-rx

现在,如果你试图检查main.js文件,你可以看到它已经改变了。

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

此外,你可以在你的测试应用package.json的devDependencies部分找到你的插件。

用生成器创建一个新组件

当你的插件可以工作的时候,也是时候对它的功能进行一些扩展,使它能够创建一个示例组件。现在是时候扩展其功能并使其能够创建示例组件了。Generator  API为此使用了render方法。

首先,让我们来创建这个示例组件。它应该是一个位于项目src/components文件夹下的.vue文件。在生成器文件夹内创建一个模板文件夹,然后在其中模拟整个结构:

如何构建Vue CLI插件

项目目录

假设一下,你的示例组件应该就是一个Vue的单文件组件 , 篇幅有限,所以这篇文章中深入解释RxJS。

所以创建了一个简单的由RxJS驱动的有两个按钮的点击计数器,如图所示:

如何构建Vue CLI插件

button

现在,我们需要指示插件在调用时呈现此组件。为此,我们将以下代码添加到generator / index.js中:

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

这将呈现整个模板文件夹。现在,当插件被调用时,一个新的RxExample.vue将被添加到src / components文件夹中。

通过提示处理用户选择

如果用户不希望有一个示例组件怎么办?让用户在插件安装过程中决定这一点不是很明智吗?这就是提示存在的原因!

之前我们已经在插件根目录下创建了prompts.js文件。这个文件应该包含一个question数组:每个question都是一个对象,有一定的字段,如名称、信息、选择、类型等。

名称很重要:我们稍后将在生成器中使用它来创建一个渲染示例组件的条件。

提示语可以有不同的类型,但在CLI中最广泛使用的是复选框和确认。我们将使用后者来创建一个有 "是 "的答案的问题。

因此,让我们将提示代码添加到prompts.js中!

module.exports = [   {     name: `addExample`,     type: 'confirm',     message: 'Add example component to components folder?',     default: false,   }, ];

我们有一个addExample提示,询问用户是否要将组件添加到components文件夹。默认答案为“no”。

让我们回到生成器文件中,做一些修正。将api.render的调用改为:

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

我们正在检查addExample是否有一个肯定的答案,如果有,该组件将被渲染。

不要忘了在每次改变后重新安装和测试你的插件!

发布

值得我们去注意点是:

发布插件之前,请检查其名称是否与模式vue-cli-plugin- < YOUR-PLUGIN-NAME > 相匹配。这使您的插件可以通过@  vue / cli-service发现,并可以通过vue add安装。

接下来您需要注册一个npmjs.com,然后按照发包的机制,完成接下来的操作。

当然了要发布插件,请转到插件根文件夹,然后在终端中键入npm publish。

此时,您应该可以使用vue add命令安装插件。尝试一下!

以上就是如何构建Vue CLI插件,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网JavaScript频道。

--结束END--

本文标题: 如何构建Vue CLI插件

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

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

猜你喜欢
  • 如何构建Vue CLI插件
    本篇文章给大家分享的是有关如何构建Vue CLI插件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言如果你正在使用Vue框架,你可能已经知道...
    99+
    2024-04-02
  • 如何构建vue-cli工程
    今天小编给大家分享一下如何构建vue-cli工程的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下...
    99+
    2024-04-02
  • 如何用Vue-cli来构建Vue项目
    这篇文章给大家介绍如何用Vue-cli来构建Vue项目,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。首先需要安装Vue-cli:npm install -g vue-cli全局先安装Vue...
    99+
    2023-06-22
  • vue-cli如何构建vue应用并实现webpack打包
    这篇文章主要介绍vue-cli如何构建vue应用并实现webpack打包,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Vue是什么,是一套构建用户界面的渐进式框架(官网解释),什么叫...
    99+
    2024-04-02
  • 如何在vue-cli 3中使用vue-bootstrap-datetimepicker日期插件
    这期内容当中小编将会给大家带来有关如何在vue-cli 3中使用vue-bootstrap-datetimepicker日期插件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先,需要安装插件的依赖项,包...
    99+
    2023-06-06
  • Vue-cli webpack移动端如何自动化构建rem
    这篇文章给大家分享的是有关Vue-cli webpack移动端如何自动化构建rem的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。相信很多小伙伴想着自己的移动端项目能够自动转换为r...
    99+
    2024-04-02
  • 如何使用vue自定义指令构建拖放插件
    我们都知道html5的拖放特性,利用它可以很方便的实现拖拽和放置功能,比如一些选择类操作的使用场景,让用户去拖拽比鼠标点击更容易接受和理解。今天我们就利用这一特性,结合vue的自定义...
    99+
    2024-04-02
  • Vue如何使用vue-cli创建项目
    这篇文章主要介绍了Vue如何使用vue-cli创建项目,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:vue-cli 是一个官方发布...
    99+
    2024-04-02
  • Vue CLI插件开发的示例分析
    这篇文章主要为大家展示了“Vue CLI插件开发的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue CLI插件开发的示例分析”这篇文章吧。1. 什么...
    99+
    2024-04-02
  • vue-cli构建的项目如何手动添加eslint配置
    目录package.json里配置添加根目录下添加检测配置js文件.eslintrc.js添加忽略检测配置文件.eslintignorewebpack.base.conf.js ru...
    99+
    2024-04-02
  • vue-cli如何快速构建项目以及引入bootstrap、jq
    这篇文章主要介绍vue-cli如何快速构建项目以及引入bootstrap、jq,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!vue-cli脚手架工具快速构建项目架构:。。首先默认了有...
    99+
    2024-04-02
  • 详解Vue-cli来构建Vue项目的步骤
    首先需要安装Vue-cli: npm install -g vue-cli 全局先安装Vue-cli,安装好了Vue-cli。就可以使用它来构建项目 vue init w...
    99+
    2024-04-02
  • 如何利用Vue-cli搭建Vue项目框架
    本篇内容介绍了“如何利用Vue-cli搭建Vue项目框架”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先安装node.js在新建的目录中按...
    99+
    2023-07-05
  • Vue CLI 揭秘:剖析项目构建机制
    1. 项目初始化 使用 vue create 命令创建一个新项目。 CLI 根据项目类型生成一组预定义的文件和目录结构。 默认包含以下文件: package.json src/main.js public/index.html CL...
    99+
    2024-03-13
    Vue CLI 是一个命令行工具 用于快速便捷地创建和管理 Vue.js 项目。它提供了一组预定义的构建工具和脚手架 使开发者可以专注于应用程序逻辑 而无需手动配置复杂的构建过程。以下是对 Vue
  • Vue CLI 独门秘技:优化构建速度
    启用多线程模式可并行处理多个任务,显著提高构建速度。在 package.json 中添加: "vue": { "build": { "parallel": true } } 2. 启用长期缓存 (HMR) 开发期间,热模块...
    99+
    2024-03-13
    1. 使用 Multi-thread 模式
  • JS中MVVM组件如何构建Vue组件
    这篇文章将为大家详细讲解有关JS中MVVM组件如何构建Vue组件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、为什么组件很重要前两天,看到一篇关于 汇总vue开源项目...
    99+
    2024-04-02
  • vue-cli构建Vue项目遇到的问题有哪些
    小编给大家分享一下vue-cli构建Vue项目遇到的问题有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!问题表象和解决方案1、编译后js、css等相对路径和绝对路径。config/in...
    99+
    2024-04-02
  • Vue CLI 武林秘籍:构建 Vue 项目的必杀技
    创建新项目 要创建一个新项目,请在终端中使用以下命令: vue create <project-name> 此命令将引导您完成一个交互式配置过程,其中您可以选择所需的项目功能。该工具将自动创建项目目录结构并安装所有必需的依赖项...
    99+
    2024-03-13
    Vue CLI 是一个命令行工具 可帮助您快速轻松地创建和管理 Vue.js 项目。它提供了丰富的命令和选项 可以简化开发过程并提高开发效率。以下秘笈将指导您驾驭 Vue CLI 的强大功能 构建高
  • Vue CLI 魔法书:掌握 Vue 项目构建的奥秘
    Vue CLI 是一个强大的工具,可帮助你快速轻松地构建和管理 Vue.js 项目。本指南将引导你了解 Vue CLI 的各个方面,帮助你掌握 Vue 项目构建的艺术。 安装和设置 要开始使用 Vue CLI,请在终端中运行以下命令: ...
    99+
    2024-03-13
  • 如何使用vue-cli+webpack搭建vue开发环境
    这篇文章主要介绍了如何使用vue-cli+webpack搭建vue开发环境,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在这里我们需要首先下...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作