Skip to main content
Version: Canary

Vite Configuration

Redwood uses Vite. One of Redwood's tenets is convention over configuration.

Vite is an awesome build tool, but we don't want it to be something that you have to be familiar with to be productive. So it's worth repeating that you don't have to do any of this, because we configure everything you will need out of the box with a Redwood Vite plugin.

Regardless, there'll probably come a time when you have to configure Vite. All the Vite configuration for your web side sits in web/vite.config.ts, and can be configured the same as any other Vite project. Let's take a peek!

import dns from 'dns';
import { defineConfig } from 'vite';
import redwood from '@redwoodjs/vite';

dns.setDefaultResultOrder('verbatim');

const viteConfig = {
plugins: [
// 👇 this is the RedwoodJS Vite plugin, that houses all the default configuration
redwood()
// ... add any custom Vite plugins you would like here
],
// You can override built in configuration like server, optimizeDeps, etc. here
};
export default defineConfig(viteConfig);

Checkout Vite's docs on configuration

Sass and Tailwind CSS​

Redwood is already configured to use Sass, if the packages are there:

yarn workspace web add -D sass sass-loader

And if you want to use Tailwind CSS, just run the setup command:

yarn rw setup ui tailwindcss

Vite Dev Server​

Redwood uses Vite's preview server for local development. When you run yarn rw dev, keys in your redwood.toml's [web] table—like port and apiUrl—are used as vite preview server options (in this case, preview.port and preview.proxy respectively).

You can peek at all the out-of-the-box configuration for your Vite preview server in the RedwoodJS Vite plugin

Using --forward​

While you can configure Vite using web/vite.config.js, it's often simpler to use yarn rw dev's --forward option.

For example, if you want to force optimise your Vite dependencies again, you can run:

yarn rw dev --fwd="--force"

You can also use --forward to override keys in your redwood.toml. For example, the following starts your app on port 1234 and disables automatic browser opening:

yarn rw dev --forward="--port 1234 --no-open"