Skip to content

Using Tailwind with Vue.js 2

This article explains how to set up Tailwind for usage in a Vue CLI 3 project

Tailwind is a pretty cool CSS framework.

In this post I’m going to show you how to use Tailwind (v1.0.5) on a Vue app.

It’s 4 simple steps:

In this post I assume the project you want to use Tailwind on is based on Vue CLI 3.

Install Tailwind

First step is to install Tailwind, using npm or yarn:

# Using npm
npm install tailwindcss --save-dev

# Using Yarn
yarn add tailwindcss --dev

Create a configuration file

Next, use the Tailwind command that is provided to create a configuration file.

./node_modules/.bin/tailwind init tailwind.js

This will create a tailwind.js file in the root of your project, adding the basic Tailwind configuration. The file is very long, and I won’t paste it here, but it contains lots of presets that will be very useful later.

Configure PostCSS

Now you need to tweak the PostCSS configuration to make sure Tailwind runs. Add:

module.exports = {
  "plugins": [
    require('tailwindcss')('tailwind.js'),
    require('autoprefixer')(),
  ]
}

to your postcss.config.js. Create one if it does not exist.

Note: if you set Vue CLI to store the configuration in package.json, make sure no PostCSS configuration lies in that file. By default Vue CLI adds these lines:

  "postcss": {
    "plugins": {
      "autoprefixer": {}
    }
  },

remove them, or the postcss.config.js file won’t be read.

Create a CSS file

Now create a CSS file in src/assets/css/tailwind.css and add

@tailwind base;
@tailwind components;
@tailwind utilities;

Import the file in your Vue app

Import tailwind in main.js:

import '@/assets/css/tailwind.css'

(@ in vue points to src/)

That’s it! Now restart your Vue CLI project and it should all work fine.

Testing it works fine

You won’t notice anything unless you add Tailwind-specific classes.

Try for example adding this HTML in one of your templates:

<div class="bg-purple text-white sm:bg-green md:bg-blue md:text-yellow lg:bg-red xl:bg-orange ...">
  Test
</div>

That should create a colored box.


→ Here's my latest YouTube video

→ Get my Vue.js 2 Handbook

→ I wrote 17 books to help you become a better developer, download them all at $0 cost by joining my newsletter

JOIN MY CODING BOOTCAMP, an amazing cohort course that will be a huge step up in your coding career - covering React, Next.js - next edition February 2025

Bootcamp 2025

Join the waiting list