返回

超级简单!vite.config.js 中使用process 获取环境变量

前端

在 Vite + Vue + TS 项目中获取 process 对象

前言

在 Vite、Vue 和 TypeScript 结合构建的项目中,获取 process 对象可能会成为一个挑战。本文将通过一个简单的多环境配置来解决这个问题,帮助你轻松获取 process 中的内容。

获取 process 对象的步骤

第一步:导出一个带有参数的函数

vite.config.js 文件中,将导出函数设置为接收参数:

export default ({ mode }) => {
  // mode 为开发模式(development)或生产模式(production)
  console.log(mode);
};

第二步:使用 process.env 获取环境变量

导入 defineConfigresolve 模块,并使用 process.env 获取环境变量:

import { defineConfig } from 'vite';
import { resolve } from 'path';

// Define the config
export default defineConfig({
  plugins: [],
  // Use the process.env variable here to get the environment variables
  define: {
    'process.env': process.env,
  },
  // Add the environment variable to Vite's config
  envDir: './.env',
  // Add the Vite config to the root directory
  root: resolve(__dirname),
});

第三步:在 TypeScript 文件中输出环境变量

在你的 .ts 文件中,输出 process.env 中的环境变量:

// In your .ts file
console.log(process.env.NODE_ENV); // Outputs "development" or "production"

注意事项:

  • 要在 JavaScript 中使用,可以用 global.process.env 来获取。
  • 这个方法也可以获取其他环境变量,如 NODE_ENVBASE_URL

代码示例

vite.config.js

import { defineConfig } from 'vite';
import { resolve } from 'path';

export default defineConfig({
  plugins: [],
  define: {
    'process.env': process.env,
  },
  envDir: './.env',
  root: resolve(__dirname),
});

.env

NODE_ENV=development
BASE_URL=http://localhost:3000

main.ts

import { createApp } from 'vue';

createApp({
  data() {
    return {
      env: process.env.NODE_ENV,
      baseUrl: process.env.BASE_URL,
    };
  },
}).mount('#app');

常见问题解答

1. 为什么需要在 Vite 中使用这个方法来获取 process?

Vite 中不再支持直接访问 process 对象,因为它是一个客户端打包工具,不运行在 Node.js 环境中。

2. 这个方法是否适用于其他环境变量?

是的,这个方法可以获取任何在 .env 文件中定义的环境变量。

3. 如何在 JavaScript 中获取 process 对象?

可以使用 global.process.env 来获取。

4. 这个方法是否可以用于其他框架,如 React 或 Svelte?

否,这个方法特定于 Vue + TypeScript + Vite 项目。

5. 如何在其他文件(如测试文件)中使用 process 对象?

在其他文件中,可以使用 import.meta.env 来获取环境变量。

结论

通过使用本文中介绍的方法,你可以轻松地在 Vite + Vue + TS 项目中获取 process 对象和环境变量。通过遵循这些步骤,你可以充分利用 Vite 的多环境配置功能,从而创建健壮且可配置的应用程序。