Vue 插件和Preset
插件和Preset
插件
Vue CLI 使用了一套基于插件的架构
Vue CLI 使用了一套基于插件的架构。如果你查阅一个新创建项目的 package.json,就会发现依赖都是以 @vue/cli-plugin- 开头的。插件可以修改 webpack 的内部配置,也可以向 vue-cli-service 注入命令。在项目创建的过程中,绝大部分列出的特性都是通过插件来实现的。
基于plugin的架构是的Vue CLI 灵活且可扩展。
TIP
可以通过 vue ui 命令使用GUI install 和 manage plugin
在现有的项目中安装插件:vue add
vue add @vue/eslint
hint(提示)
vue add 的设计意图是为了安装和调用Vue CLI插件 .这不意味着替换掉普通的npm包。
对于这些普通的npm包,你任然需要选用包管理器
warn(警告):
我们推荐在运行 vue add 之前将项目的最新状态提交,因为该命令可能调用插件的文件生成器
并且很有可能更改你现有的file
这个命令将 @vue/eslint 解析为完整的包名 @vue/cli-plugin-eslint,然后从 npm 安装它,调用它的生成器
#等价之前的用法
vue add @vue/cli-plugin-eslint
如果不带 @vue 前缀,该命令会换做解析一个unscoped的包。
例如以下命令会安装第三方插件 vue-cli-plugin-apollo:
#安装并调用 vue-cli-plugin-apollo
vue add apollo
你也可以基于一个指定的 scope 使用第三方插件。例如如果一个插件名为 @foo/vue-cli-plugin-bar,你可以这样添加它:
vue add @foo/bar
你可以向安装的插件传递生成器选项(这样做会跳过命令提示):
vue add @vue/eslint --config airbnb --lintOn save
vue-router 和 vuex 的情况比较特殊--他们并没有自己的插件。但是你任然可以这样添加他们
vue add router
vue add vuex
如果一个插件插件语句被安装,你可以使用 vue invoke 命令跳过安装过程,只调用他的生产器。
这个命令会接收和vue add 相同的参数
hint
如果出于一些原因你的插件列在了该项目之外的其它 package.json 文件里,你可以在自己项目的
package.json 里设置 vuePlugins.resolveFrom 选项指向包含其它 package.json 的文件夹
Sample: 如果你有一个 .config/package.json file
{
"vuePlugins":{
"resolveFrom":".config"
}
}
project local plugins
如果你需要在project里直接访问plugin API 而不需要create一个完整的plugin,
你可以在package.json 文件中使用:vuPlugins.service选项
{
"vuePlugins":{
"service":["my-commands.js"]
}
}
每个文件都需要暴露一个函数,接受插件 API 作为第一个参数。关于插件 API 的更多信息可以查阅插件开发指南。
你也可以通过 vuePlugins.ui 选项添加像 UI 插件一样工作的文件:
{
"VuePlugins":{
"ui":{"my-ui.js"}
}
}
Preset
一个Vue CLI preset 是一个包含create new project所需preset option 和 plugins 的JSON对象,让用户
无需再命令提示中选择他们。
在vue create 过程中save的preset 会被放在你的home folder下的一个配置文件中(~/.vuerc)你可以
通过直接edit这个file来调整、add、delete保持好的preset
Sample :
{
"userConfigFiles":true,
"router":true,
"vuex":true,
"cssPrepreocessor":"sass",
"plugins":{
"@vue/cli-plugin-babel":{},
"@vue/cli-plugin-eslint":{
"config":"airbnb",
"lintOn":["save","commit"]
}
}
}
Preset的数据会被插件生成器用来生产相应的project file.
除了上述这些字段,你也可以为集成工具添加配置:
{
"userConfigFiles":true,
"plugins":{...},
"configs":{
"vue":{...},
"postcss":{...},
"eslintConfig":{...},
"jest":{}
}
}
这些额外的config将会根据 useConfigFiles的value被合并到 package.json 或相应的config file中
sample,当"useConfigFiles":true 的时候,config 的value 将会被合并到 vue.config.js中
Preset plugins 的Version manage
你可以显式地指定用到的plugin的version
{
"plugins":{
"@vue/cli-plugin-eslint":{
"version":"^3.0.0",
//该plugin的其它options
}
}
}
注意对于官方插件来说这不是必须的——当被忽略时,CLI 会自动使用 registry 中最新的版本。不过我们推荐为 preset 列出的所有第三方插件提供显式的版本范围。
允许插件的命令提示:
每个插件在项目创建的过程中都可以注入它自己的命令提示,不过当你使用了一个 preset,这些命令提示就会被跳过,因为 Vue CLI 假设所有的插件选项都已经在 preset 中声明过了。
在有些情况下你可能希望 preset 只声明需要的插件,同时让用户通过插件注入的命令提示来保留一些灵活性。
对于这种场景你可以在插件选项中指定 "prompts": true 来允许注入命令提示:
{
"plugins":{
"@vue/cli-plugin-eslint":{
//让用户选取他们自己的ESLint config
"prompts":true
}
}
}
远程Preset
你可以通过发布git repo 将一个preset 分享给其它开发者。这个 repo 应该包含一个包含了 preset 数据的 preset.json 文件。然后你就可以在创建项目的时候通过 --preset 选项使用这个远程的 preset 了:
#从GitHub repo 使用preset
vue create --preset username/repo my-project
GitLab 和 BitBucket 也是支持的,如果要从私有repo获取请确保使用 --clone 选项:
vue create --preset gitlab:username/repo --clone my-project
vue create --preset bitbucket:username/repo --clone my-project
加载文件系统中的Preset
当开发一个远程Preset的时候,你必须不耐其烦的向远程repo 发出push 进行反复测试. 为了简化流程
--preset 标记也支持本地的 .json 文件:
vue create --preset local.json my-project
插件和Preset
Vue 插件和Preset的更多相关文章
- vue插件编写与实战
关于 微信公众号:前端呼啦圈(Love-FED) 我的博客:劳卜的博客 知乎专栏:前端呼啦圈 前言 热爱vue开发的同学肯定知道awesome-vue 这个github地址,里面包含了数以千计的vue ...
- 第一个Vue插件从封装到发布
前言 这是我封装的第一个Vue插件,实现的功能是滑动选择省市区,虽然只是一个简单的插件,但还是挺开心的,记录一下步骤. 插件地址:https://github.com/leichangchun/vue ...
- 手把手教你写vue插件并发布(二)
前记:上一篇 https://www.cnblogs.com/adouwt/p/9211003.html, 说到了一个完整的vue插件开发.发布的流程,总结下来就讲了这么一个事,如何注入vue, 如果 ...
- VUE插件大总结
UI组件 element - 饿了么出品的Vue2的web UI工具套件 Vux - 基于Vue和WeUI的组件库 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开 ...
- vue插件大全汇总
Vue是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件特别整理了常用的vue插件,来了个大汇总,方便查找使用,便于工作 ...
- VUE插件总结
亲们支持我的新博客哦==>地址(以后更新会尽量在新博客更新,欢迎大家访问加入我的后宫w) ) UI组件 element - 饿了么出品的Vue2的web UI工具套件 Vux - 基于Vue和W ...
- Vue插件plugins的基本操作
前面的话 本文将详细介绍Vue插件plugins的基本操作 开发插件 插件通常会为 Vue 添加全局功能.插件的范围没有限制——一般有下面几种: 1.添加全局方法或者属性,如: vue-custom- ...
- 把axios封装为vue插件使用
前言 自从Vue2.0推荐大家使用 axios 开始,axios 被越来越多的人所了解.使用axios发起一个请求对大家来说是比较简单的事情,但是axios没有进行封装复用,项目越来越大,引起的代码冗 ...
- Vue插件写、用详解(附demo)
出处http://blog.csdn.net/qq20004604 Vue插件 1.概述 简单来说,插件就是指对Vue的功能的增强或补充. 比如说,让你在每个单页面的组件里,都可以调用某个方法,或者共 ...
随机推荐
- openwrt用WEB刷固件型号不对问题强行处理
参照这里:https://blog.csdn.net/caoshunxin01/article/details/79355602 原机是一块mt7620A的通板,之前刷了一个叫WE826型号的固件,发 ...
- jQuery+php实现二级联动
public function liandong(){ $arr = Db::table("city")->where("pid=0")->sele ...
- js 遍历行和列
]; //遍历列 ; i < table.rows[].cells.length; i++) { console.log(table.rows[].cells[i].innerText); ]. ...
- web.xml中的load-on-startup
1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法). 2)它的值必须是一个整数,表示servlet应该被载入的顺序 2)当值为0或 ...
- linux 基本操作centos7
基于centos7 ,很多都跟6不同 Centos 7 firewall 命令: 查看已经开放的端口:firewall-cmd --list-ports 开启端口firewall-cmd --zon ...
- ABAP 自定义排序的思想(不用系统标准的SORT语句)
不用ABAP的标准SORT语句,你能将下面这个数组按从小到大(或从大到小)的顺序重新排列,并计算其算法复杂度吗? 现在假设有一个数组:A = [10,66,52,102,-65,85,99,1,56, ...
- JMeter学习(一)工具简单介绍(转载)
转载自 http://www.cnblogs.com/yangxia-test 一.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的 ...
- HTML图片热区map area的用法(转)
<area>标记主要用于图像地图,通过该标记可以在图像地图中设定作用区域(又称为热点),这样当用户的鼠标移到指定的作用区域点击时,会自动链接到预先设定好的页面.其基本语法结构如下: 1 & ...
- Centos 7 下 Zabbix 3.4.x 服务搭建
一.zabbix 介绍 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让 ...
- NumPy 高级索引
NumPy 高级索引 NumPy 比一般的 Python 序列提供更多的索引方式.除了之前看到的用整数和切片的索引外,数组可以由整数数组索引.布尔索引及花式索引. 整数数组索引 以下实例获取数组中(0 ...