vue cli3 Generator插件开发教程

定制生成插件

vue cli3提供了扩展定制化插件API。

CLI插件是一个可以为@vue/cli项目添加额外特性的npm包。

它始终包含一个Service插件作为其主要导出,可选包含一个 Generator 和一个 Prompt 文件

当前文档讲述如何编写一个Generator插件。

Generator插件用于向package.json文件注入额外的依赖或字段,并向项目中添加或删除文件。

一个Generator插件的目录解构是这样的:

.
├── README.md
├── generator  # generator 插件的文件夹
    ├── index.js  # generator插件
├── index.js      # service 插件
└── package.json

Generator插件示例代码:

// index.js
module.exports = (api, options, rootOptions, invoking) => {
    const pkg = {
        scripts: {
            test: 'vue-cli-service test'
        },
        dependencies:{
            'vue-router':'^3.0.1',
        }
    }
    // 修改 `package.json` 里的字段
    api.extendPackage(pkg)
    
    // 复制并用 ejs 渲染 `./template` 内所有的文件
    api.render('./template')
    
    // 传入api.render回调函数,可以删除文件或者修改文件,其中render函数依然使用ejs模板
    api.render((files, render) => {
        delete files['src/main.js']
        files['src/main.ts'] = render('./template/main.ts')
    })
​
    if (options.foo) {
        // 有条件地生成文件
    }
})

Generator的渲染模板:

当调用api.render('./template')时,该Generator插件会使用 EJS渲染./template下的所有文件。

还可以使用yaml前置信息继承并替换已有的模板文件的一部分:

---
extend: '@vue/cli-service/generator/template/src/App.vue'   // 继承文件
replace: !!js/regexp /<script>[^]*?<\/script>/              // 替换规则
---
​
<script>
export default {
  // 替换默认脚本
}
</script>

也可以多出替换,你需要将要替换的字符串用<%# REPLACE %><%# END_REPLACE %> 块包裹起来:

---
extend: '@vue/cli-service/generator/template/src/App.vue'
replace:
  - !!js/regexp /欢迎来到你的 Vue\.js 应用/   // 第一个替换规则
  - !!js/regexp /<script>[^]*?<\/script>/  // 第二个替换规则
---
​
<%# REPLACE %>      // 对应第一个替换规则
替换欢迎信息
<%# END_REPLACE %>
​
<%# REPLACE %>     // 对应第二个替换规则
<script>
export default {
  // 替换默认脚本
}
</script>
<%# END_REPLACE %>

{% hint style="warning" %}
注意:如果你想渲染一个以点开头的模板文件(例如:.env),需要把文件名开头的点改为下划线(因为以点开头的文件会在插件发布到npm的时候忽略):

 _env

 # 调用api.render('./_env')后会在项目目录中渲染为:

 .env

当你想渲染以下划线开头的文件时,需要把文件名开头再添加一个下划线:

 __env.less

 # 调用api.render('./__env.less')后会在项目目录中渲染为:

 _env.less

{% endhint %}

发布插件

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

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

使用命令:

vue add <name>

安装命令:

vue invoke <name>

至此完成,vue cli Generator插件已经发布成功并且可以使用了

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在实现 egg + vue 服务端渲染工程化实现之前,我们先来看看前面两篇关于Webpack构建和Egg的文章: ...
    hubcarl阅读 6,159评论 0 19
  • 基于Vue的一些资料 内容 UI组件 开发框架 实用库 服务端 辅助工具 应用实例 Demo示例 element★...
    尝了又尝阅读 1,311评论 0 1
  • Vue.js作为目前最热门最具前景的前端框架之一,其提供了一种帮助我们快速构建并开发前端项目的新的思维模式。本文旨...
    人不中二枉少年阅读 1,456评论 0 19
  • 首先需要引入系统库:LocalAuthentication.framework 在调用的页面引入库的头文件:#im...
    邓布利多教授阅读 495评论 0 1
  • 人啊,就像天气预报一样难伺候,说变就变。上一秒还是笑嘻嘻,下一秒就乌云密布。有时候人就喜欢因为别人的评价而让自己...
    30d52c1e0f38阅读 468评论 0 2

友情链接更多精彩内容