首页 > 其他分享 >vite配置文件语法提示以及开发环境和生产环境区分

vite配置文件语法提示以及开发环境和生产环境区分

时间:2022-10-10 23:45:06浏览次数:64  
标签:配置文件 环境 js export import config vite defineConfig

1.让 vite.config.js 具备语法提示:

方法 1:使用 defineConfig 方法:

vite.config.js 需要导出一个配置对象:

export default {
    ...
}

但是这样是不会具备配置提示能力的,defineConfig 是一个封装了导出类型的配置构建函数,利用其可以让代码具备提示能力:

import { defineConfig } from "vite";

export default defineConfig({
    ...
})

img
除了这种方式,还能利用代码注意,帮助 vscode 编辑器提供代码提示能力:

方法 2: 利用 jsdoc style 的注释

扩展补充内容:

使用 jsDoc 规范的注释,可以使得 vscode 具备代码提示能力,例如如果你注释了某个函数返回的类型和输入参数的类型,可以得到这样的提示:

img

并且对应的输出在被操作时也会有相应的补全提示:

img

因为返回字符串,所以有所有的字符串操作方法的补全提示。

利用 jsdoc style 代码注释,我们也可以让 vite.config.js 中的配置具备代码提示补全能力:

我们先看看 defineConfig 导出的是一个什么类型对象:

img

然后使用 @type 注释需要导出对象的类型,就可以获得代码补全提示的能力了:

2. 条件配置

defineConfig 不仅可以传入一个对象配置,还可以传入一个callback:()=>{} ,它是一个函数,因此可以进行逻辑判断,也就可以条件式的生成不同的配置。

实际上,这个回调函数提供了一个参数接收对象,callback:({command:"build"|"serve"})=>{}, 它能够帮助我们更加方便的判断当前是开发还是生产环境。

// vite.config.js

import { defineConfig } from 'vite';
import prod from './config/vite.prod.config';
import dev from './config/vite.dev.config';

const config = defineConfig(({ command }) => {
  if (command === 'build') {
    // 生产状态
    return prod;
  } else {
    // 开发状态
    return dev;
  }
});

export default config;
// config/vite.dev.config.js
import { defineConfig } from 'vite';

export default defineConfig({
  server: {
    port: 12345,
  },
});
// config/vite.prod.config.js
import { defineConfig } from 'vite';

export default defineConfig({
  build: {
    assetsDir: 'files',
  },
});

3.策略模式

虽然上面提到的条件配置能够满足我们的项目在不同的状态下应用不同的配置对象。 但是 if...else 始终是不够优雅的,这是时候我们可以利用设计模式中的策略模式来优化,也同时提供了另一种思路。

//vite.config.js
import baseConfig from './config/vite.base.config.js';
import devConfig from './config/vite.dev.config.js';
import prodConfig from './config/vite.prod.config.js';

import { defineConfig } from 'vite';

const envResolver = {
  build: () => Object.assign({}, baseConfig, prodConfig),
  serve: () => Object.assign({}, baseConfig, devConfig),
};

export default defineConfig(({ command }) => {
  console.log('[envResolver[command]]: ', envResolver[command]);
  return envResolver[command]();
});
//config/vite.base.config.js
import { defineConfig } from 'vite';

export default defineConfig({
  optimizeDeps: {
    exclude: ['node_modules'],
  },
});
//config/vite.dev.config.js
import { defineConfig } from 'vite';

export default defineConfig({
  server: {
    port: 22334,
  },
});
//config/vite.prod.config.js
import { defineConfig } from 'vite';

export default defineConfig({
  build: {
    assetsDir: 'assets',
  },
});

3.vite 是开箱即用的

想要使用 vite, 最简单的步骤是:

$ touch index.html
$ npm init -y
$ npm i vite -D
$ cat package.json
...
"script":{
	"dev":"vite",
	"build": "vite build" # 打包
}
...
$ npm run dev

这样, vite 就会直接将 index.html serve 了。

标签:配置文件,环境,js,export,import,config,vite,defineConfig
From: https://www.cnblogs.com/jaycethanks/p/16777848.html

相关文章

  • CentOS7 C开发环境搭建
    CentOS7配置阿里yum源sudocp-R/etc/yum.repos.d/etc/yum.repos.d.originsudocurlhttp://mirrors.aliyun.com/repo/Centos-7.repo-o/etc/yum.repos.d/CentOS-Base.......
  • 【原创】2022年linux环境下QT6不支持中文输入法解决方案
    1.配置环境exportPATH="~/目录/Qt/6.x.x/gcc_64/bin":$PATHexportPATH="~/目录/Qt/Tools/Cmake/bin":$PATH“目录”->自己的安装目录“6.x.x”->自己的版......
  • Class 2 基于ECS快速搭建Docker环境
    title:Class2基于ECS快速搭建Docker环境excerpt:云上实践云上成长ECS7天实践训练营tags:[阿里云,在家学习,ECS,docker,进阶班]categories:[学习,阿里......
  • Linux中配置java环境
    本文所需的jdk1.8版本rpm包:链接:​​https://pan.baidu.com/s/146rZKd0hP0851MBT68PnEw​​ 提取码:uqif很多应用的运行需要有Java环境,如tomcat、amoeba等。首先查看......
  • 学习梦想家CMS内容管理系统-环境启动
    ​gitee官网中项目的地址:​编辑 首先准备里面提到的工具​编辑其中JDK8和MySQL5.7我们已经有了,现在需要准备另外的工具。SpringToolSuite4(STS)安装过程......
  • 服务器搭建(CenOS 7 Apache + PHP _Mysql环境(LAMP))
    服务器搭建(CenOS7Apache+PHP_Mysql环境(LAMP))第一步、更换阿里云yum源curl-o/etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo......
  • docker Ubuntu wasm 环境配置
    执行下面命令启动dockerUbuntudockercontainerrun-it-p80:8000ubuntu进入Ubuntu容器中root@6c76b77bfdb4:aptupdateroot@6c76b77bfdb4:aptinstallvimxz-u......
  • 2. 单主机 Elasticsearch 双节点或多节点集群环境部署
    我已经买了一年的腾讯云轻量级服务器,并且安装好了ES,也做了一些系统配置,比如修改vm.max_map_count、修改文件描述符数量同时,也用ES安装目录下的bin/elasticsearch脚本......
  • Linux环境RabbitMQ安装教程new
    在安装RabbitMQ中需要注意:1、RabbitMQ依赖于Erlang,需要先安装Erlang2、Erlang和RabbitMQ版本有对应关系https://www.rabbitmq.com/which-erlang.html一、安装Erlang1.先安......
  • 集成环境:Wamp
    ​​https://share.weiyun.com/sAwBz6RI​​......