DEV Community

Cover image for How to Setup Tailwind CSS in Vue 3
Martins Onuoha
Martins Onuoha

Posted on

How to Setup Tailwind CSS in Vue 3

This article was first posted on devjavu.space

Tailwind CSS is one of the newest, and coolest kids on the block. As a Utility library, Tailwind lets you build UI components with ease. Here’s a quick guide on setting up tailwind in your Vue 3 project.

Psst! There’s an official walkthrough in the Tailwind documentation, here.

First, generate a Vue 3 project using the vue-cli:

vue create my-awesome-app
Enter fullscreen mode Exit fullscreen mode

Navigate to the project directory:

cd my-awesome-app
Enter fullscreen mode Exit fullscreen mode

Next, we’d need to install tailwind and its dependencies (PostCSS & auto-prefixer).

npm install -D tailwindcss@latest postcss@latest autoprefixer@latest
Enter fullscreen mode Exit fullscreen mode

Or using yarn:

yarn add --dev tailwindcss@latest postcss@latest autoprefixer@latest
Enter fullscreen mode Exit fullscreen mode

Note: if you’re faced with this error:

> Error: PostCSS plugin tailwindcss requires PostCSS 8.
Enter fullscreen mode Exit fullscreen mode

You would need to install a different build of tailwind that supports PostCSS: 7.

npm uninstall tailwindcss postcss autoprefixer

npm install -D tailwindcss@npm:@tailwindcss/postcss7-compat @tailwindcss/postcss7-compat postcss@^7 autoprefixer@^9
Enter fullscreen mode Exit fullscreen mode

Generate the Tailwind and post CSS configuration files:

npx tailwindcss init -p
Enter fullscreen mode Exit fullscreen mode

This will create two files in your root directory: tailwind.config.js and postcss.config.js. The tailwind config file is where you add in customization and theming for your app. It is also where you tell tailwind what paths to search for your pages and components. It looks something like this:

// tailwind.config.js
module.exports = {
  purge: [],
  darkMode: false, // or 'media' or 'class'
  theme: {
    extend: {},
  },
  variants: {
    extend: {},
  },
  plugins: [],
}
Enter fullscreen mode Exit fullscreen mode

We won’t go into explaining each of those properties, however, we need to update the “purge” property to include the path to our components and pages.

// tailwind.config.js
module.exports = {
  purge: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx}'],
  darkMode: false, // or 'media' or 'class'
  theme: {
    extend: {},
  },
  variants: {
    extend: {},
  },
  plugins: [],
}
Enter fullscreen mode Exit fullscreen mode

Next, create a folder called “styles”, and within that folder, create an entry CSS file (app.css):

mkdir src/styles && touch src/styles/app.css
Enter fullscreen mode Exit fullscreen mode

We’ll import tailwind’s styles using the @tailwind directive within our entry CSS file.

/* ./src/styles/app.css */
@tailwind base;
@tailwind components;
@tailwind utilities;
Enter fullscreen mode Exit fullscreen mode

Finally, import your entry CSS file in your entry Javascript file(main.js):

import { createApp } from 'vue';
import App from './App.vue';
import './styles/app.css'; // Here

createApp(App).mount('#app');
Enter fullscreen mode Exit fullscreen mode

Spin up your server and start using Tailwind’s goodness in your Vue 3 application. Try updating the App.vue component like so:

<template>
  <div class="justify-center flex bg-yellow-300 items-center h-screen">
    <div class="text-4xl">
      Hello 👋🏼
    </div>
  </div>
</template>

<script>
export default {
  name: 'App',
};
</script>
Enter fullscreen mode Exit fullscreen mode

You’ll get this result:

Image description

You can find all of Tailwind’s classes and options in the official documentation.

This walkthrough is also streamlined from the official docs:


Cheers ☕️

Top comments (0)