Files
wxt/docs/guide/directory-structure/app-config.md
T

1.6 KiB

<srcDir>/app.config.ts

:::warning Nuxt Users If you're familiar with Nuxt, this file is meant to be a direct equivalent to Nuxt's app.config.ts file.

However, some of Nuxt's features, like overriding the app config based on a .env file or automatically generating the config's types, are not implemented. They are planned, just not implemented yet. Feel free to open a PR! :::

Overview

Define runtime configuration in a single place.

// <srcDir>/app.config.ts
import { defineAppConfig } from 'wxt/sandbox';

// Define types for your config
declare module 'wxt/sandbox' {
  export interface WxtAppConfig {
    theme?: 'light' | 'dark';
  }
}

export default defineAppConfig({
  theme: 'dark',
});

Then access the config in your extension by calling useAppConfig:

console.log(useAppConfig()); // { theme: "dark" }

Environment Variables

If you have a .env file, you can access any variables defined in it here. You can convert them to better types (like booleans), add types for them, or leave them as is.

# .env
VITE_BUG_REPORTING_DISABLED=true
VITE_API_KEY=...
// <srcDir>/app.config.ts

declare module 'wxt/sandbox' {
  export interface WxtAppConfig {
    bugReportingDisabled: boolean;
    apiKey?: string;
  }
}

export default defineAppConfig({
  bugReportingDisabled: process.env.VITE_BUG_REPORTING_DISABLED === 'true',
  apiKey: process.env.VITE_API_KEY,
});

You don't have to do this, you can use process.env.VITE_* anywhere in your runtime code, but putting them here consolidates them to one place and defines what variables are expected.