Migrate from Tailwind
Start with the Shim
The easiest way to migrate your existing Tailwind app to Twind is by using the Shim.
The Shim will automagically convert all of your Tailwind classes to Twind, and even pick up on your custom Tailwind theme configuration simply by importing the shim into your project:
import 'twind/shim'
Example: class="text-blue-500 font-bold"
becomes class={tw`text-blue-500 font-bold`}
While the shim is a good starting point, it is recommended that you eventually move your project away from using the shim. In order to do so, you will need to do a few things:
Migrate your Tailwind theme configuration
If your Tailwind project uses a custom theme configuration (tailwind.config.js
), you will want to move things like your custom colors to your Twind configuration using the setup
function. The setup
function accepts a configuration object that looks very similiar to a Tailwind config with a few differences.
Here is a example of a Tailwind configuration file and it's Twind equivalent:
Tailwind
const colors = require('tailwindcss/colors')
module.exports = {
theme: {
colors: {
gray: colors.coolGray,
blue: colors.lightBlue,
red: colors.rose,
pink: colors.fuchsia,
},
fontFamily: {
sans: ['Graphik', 'sans-serif'],
serif: ['Merriweather', 'serif'],
},
extend: {
spacing: {
128: '32rem',
144: '36rem',
},
borderRadius: {
'4xl': '2rem',
},
},
},
variants: {
extend: {
borderColor: ['focus-visible'],
opacity: ['disabled'],
},
},
}
Twind
import { setup } from 'twind'
import * as colors from 'twind/colors'
setup({
theme: {
colors: {
gray: colors.coolGray,
blue: colors.lightBlue,
red: colors.rose,
pink: colors.fuchsia,
},
fontFamily: {
sans: ['Graphik', 'sans-serif'],
serif: ['Merriweather', 'serif'],
},
extend: {
spacing: {
128: '32rem',
144: '36rem',
},
borderRadius: {
'4xl': '2rem',
},
},
},
// There is no need to include the variants section Twind supports all variants plus more with no additional configuration required
})
Check out the docs on the setup
function for more configuration options like preflight, dark mode, and hashing.
tw
calls
Wrap your classes in Example: class="text-blue-500 font-bold"
becomes class=`${tw`text-blue-500 font-bold"`}
Move away from PostCSS
Your project might be using a custom PostCSS configuration if you are either:
- using an older version of Tailwind
- Using PostCSS plugins like purge or autoprefixer
Once you've converted all your existing Tailwind to Twind, you can remove all things PostCSS. Seriously, you don't need PostCSS or any PostCSS plugins with Twind. Since styles are generated at runtime, there is nothing to purge and Twind takes care of autoprefixing.