DEV Community

Cover image for How to fix the @apply and @tailwind warning in VSCode when using TailwindCSS
fujiwara.cj
fujiwara.cj

Posted on • Originally published at jaycedotbin.me

How to fix the @apply and @tailwind warning in VSCode when using TailwindCSS

You bootstrap a new project with TailwindCSS and VSCode hits you with the line saying that the @apply and @tailwind rule doesn't exist.

There are two ways to fix this warning.

You can associate the global stylesheet that contains the @apply and @tailwind rule with tailwindcss using the files.associations property in your settings.json

{
    // ... Rest of your config
    "files.associations": {
        "*.css": "tailwindcss"
    }
    // ... Rest of your config
}
Enter fullscreen mode Exit fullscreen mode

This was a solution provided by a discussion in the tailwindcss repository

Add this to your .vscode/settings.json:

{
  "css.customData": [".vscode/tailwind.json"]
}
Enter fullscreen mode Exit fullscreen mode

Paste this in .vscode/tailwind.json:

{
  "version": 1.1,
  "atDirectives": [
    {
      "name": "@tailwind",
      "description": "Use the `@tailwind` directive to insert Tailwind's `base`, `components`, `utilities` and `screens` styles into your CSS.",
      "references": [
        {
          "name": "Tailwind Documentation",
          "url": "https://tailwindcss.com/docs/functions-and-directives#tailwind"
        }
      ]
    },
    {
      "name": "@apply",
      "description": "Use the `@apply` directive to inline any existing utility classes into your own custom CSS. This is useful when you find a common utility pattern in your HTML that you’d like to extract to a new component.",
      "references": [
        {
          "name": "Tailwind Documentation",
          "url": "https://tailwindcss.com/docs/functions-and-directives#apply"
        }
      ]
    },
    {
      "name": "@responsive",
      "description": "You can generate responsive variants of your own classes by wrapping their definitions in the `@responsive` directive:\n```

css\n@responsive {\n  .alert {\n    background-color: #E53E3E;\n  }\n}\n

```\n",
      "references": [
        {
          "name": "Tailwind Documentation",
          "url": "https://tailwindcss.com/docs/functions-and-directives#responsive"
        }
      ]
    },
    {
      "name": "@screen",
      "description": "The `@screen` directive allows you to create media queries that reference your breakpoints by **name** instead of duplicating their values in your own CSS:\n```

css\n@screen sm {\n  /* ... */\n}\n

```\n…gets transformed into this:\n```

css\n@media (min-width: 640px) {\n  /* ... */\n}\n

```\n",
      "references": [
        {
          "name": "Tailwind Documentation",
          "url": "https://tailwindcss.com/docs/functions-and-directives#screen"
        }
      ]
    },
    {
      "name": "@variants",
      "description": "Generate `hover`, `focus`, `active` and other **variants** of your own utilities by wrapping their definitions in the `@variants` directive:\n```

css\n@variants hover, focus {\n   .btn-brand {\n    background-color: #3182CE;\n  }\n}\n

```\n",
      "references": [
        {
          "name": "Tailwind Documentation",
          "url": "https://tailwindcss.com/docs/functions-and-directives#variants"
        }
      ]
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

Thats it! Those were the two ways to fix the unknown rule when using TailwindCSS, hope it helped!

Top comments (0)