cross-env
2023年12月19日
一、认识
cross-env
用来设置node
环境的process.env.NODE_ENV
。注意: 浏览器环境是不会识别的。
二、命令
三、文件
3.1 .env
语法: 如果某个环境变量要在 Vite
中通过 import.meta.env
访问,那么它必须以 VITE_
开头(除了本身自带的)
NODE_ENV=development // 本身自带
VITE_IMG_BASE_URL=https://my-image-cdn.com // 额外新增
优先级:
-
开发环境优先级:
.env.development
>.env
-
生产环境优先级:
.env.production
>.env
3.2 .env.development
3.3 .env.production
四、用法
4.1 替换全局 base
替换全局 base
适用于替换所有位于项目中的静态资源地址, 配置如下:
vite.config.ts
配置
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react-swc';
const baseMap: { [key: string]: string} = {
development: '/',
production: 'https://my-cdn.com'
}
export default defineConfig({
base: baseMap[process.env.NODE_ENV],
plugins: [react()],
});
注意: 在 vite.config.ts
中访问不到 .env
中配置的属性
4.2 替换指定 base
替换指定 base
适用于在 Vite
项目中, 替换相应的环境变量
-
新增
.env
、.env.development
、.env.production
环境变量文件.env.developmentVITE_BASE_URL=/
VITE_IMG_BASE_URL=https://my-image-cdn.com.env.productionVITE_BASE_URL=https://my-cdn.com
VITE_IMG_BASE_URL=https://my-image-cdn.com -
替换
img
语法如下:function App() {
return <div className="">
<img src={new URL('./assets/img.png', import.meta.env.VITE_IMG_BASE_URL).href}/>
</div>;
}
export default App; -
配置
vite-env.d.ts
, 增加env
类型声明/// <reference types="vite/client" />
interface ImportMetaEnv {
readonly VITE_APP_TITLE: string;
readonly VITE_IMG_BASE_URL: string;
}
interface ImportMeta {
readonly env: ImportMetaEnv;
}