1. Installation
  2. Install Tailwind CSS with Symfony
  1. Create your project

    Start by creating a new Symfony project if you don’t have one set up already. The most common approach is to use the Symfony Installer.

    Terminal
    symfony new --webapp my-projectcd my-project
  2. Install Webpack Encore

    Install Webpack Encore, which handles building your assets. See the documentation for more information.

    Terminal
    composer require symfony/webpack-encore-bundle
  3. Install Tailwind CSS

    Using npm, install tailwindcss and its peer dependencies, as well as postcss-loader, and then run the init command to generate both tailwind.config.js and postcss.config.js.

    Terminal
    npm install -D tailwindcss postcss postcss-loader autoprefixernpx tailwindcss init -p
  4. Enable PostCSS support

    In your webpack.config.js file, enable the PostCSS Loader. See the documentation for more information.

    webpack.config.js
    Encore
      // ...
      .enablePostCssLoader()
    ;
    
  5. Configure your template paths

    Add the paths to all of your template files in your tailwind.config.js file.

    tailwind.config.js
    /** @type {import('tailwindcss').Config} */
    module.exports = {
      content: [
        "./assets/**/*.js",
        "./templates/**/*.html.twig",
      ],
      theme: {
        extend: {},
      },
      plugins: [],
    }
    
  6. Add the Tailwind directives to your CSS

    Add the @tailwind directives for each of Tailwind’s layers to your ./assets/styles/app.css file.

    app.css
    @tailwind base;
    @tailwind components;
    @tailwind utilities;
  7. Start your build process

    Run your build process with npm run watch.

    Terminal
    npm run watch
  8. Start using Tailwind in your project

    Make sure your compiled CSS is included in the <head> then start using Tailwind’s utility classes to style your content.

    base.html.twig
    <!doctype html>
    <html>
    <head>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      {% block stylesheets %}
        {{ encore_entry_link_tags('app') }}
      {% endblock %}
    </head>
    <body>
      <h1 class="text-3xl font-bold underline">
        Hello world!
      </h1>
    </body>
    </html>