19
How to Setup Tailwind with PurgeCSS and PostCSS?
We have to install tailwind via npm or yarn:
npm init -y
npm install tailwindcss
We have to create a configuration for a tailwind to use:
npx tailwind init
This will create a file named tailwind.config.js in the root location of our project folder.
Tailwind needs PostCSS (PostCSS is a software development tool that uses JavaScript-based plugins to automate routine CSS operations) and autoprefixer (Autoprefixer will use the data based on current browser popularity and property support to apply prefixes for you) to work. So we need to apply that in the postcss.config.js file:
module.exports = {
plugins: [
require('tailwindcss'),
require('autoprefixer')
]
}
Note: If the postcss.config.js doesn’t exist, we have to create one.
We need to install PostCSS and autoprefixer from npm too:
npm install autoprefixer
npm install -g postcss-cli
Now, we will create a CSS file (style.css)
and add these lines at the top:
@tailwind base;
@tailwind components;
@tailwind utilities;
We need to specify a build command that will help us to generate the actual CSS file after compiling with PostCSS and autoprefixer. For that, we need to add the command to the package.json
file at scripts like:
"scripts": {
"build:css": "postcss src/tailwind.css -o static/dist/tailwind.css"
}
For building the final CSS file we need to run the command npm run build
in the root of the project folder.
The resulting file is in static/dist/tailwind.css
There is a great npm package that will compile our CSS in real-time without running the build command every time after edits. For that we need to install the watch using the command:
npm install watch
Then we need to edit the package.json
file at scripts like:
"scripts": {
"build:css": "postcss src/tailwind.css -o static/dist/tailwind.css",
"watch": "watch 'npm run build:css' ./layouts"
}
Now for running we simply need to execute the command npm run watch
and it’s all good.
If we check the final CSS file i.e after building, we can see that it’s huge in size. That large file is never appropriate for web pages. For that, we can actually trim the file to make it smaller than the original.
We need to install two more npm packages:
npm install cssnano
npm install @fullhuman/postcss-purgecss
PurgeCSS is a development tool used for removing the unused CSS in a Project. It is the default library to control the Tailwind CSS Bundle Sizes. It removes unused styles and optimizes CSS Build Sizes.
To remove unused CSS we use the following code. Then we add this to our PostCSS configuration file postcss.config.js
:
const purgecss = require('@fullhuman/postcss-purgecss')
const cssnano = require('cssnano')
module.exports = {
plugins: [
require('tailwindcss'),
require('autoprefixer'),
cssnano({
preset: 'default'
}),
purgecss({
content: ['./layouts/**/*.html', './src/**/*.vue', './src/**/*.jsx'],
defaultExtractor: content => content.match(/[\w-/:]+(?<!:)/g) || []
})
]
}
In development, we can use this just to add prefixes and remove comments. We need to edit the postcss.config.js
like:
const purgecss = require('@fullhuman/postcss-purgecss')
const cssnano = require('cssnano')
module.exports = {
plugins: [
require('tailwindcss'),
process.env.NODE_ENV === 'production' ? require('autoprefixer') : null,
process.env.NODE_ENV === 'production'
? cssnano({ preset: 'default' })
: null,
purgecss({
content: ['./layouts/**/*.html', './src/**/*.vue', './src/**/*.jsx'],
defaultExtractor: content => content.match(/[\w-/:]+(?<!:)/g) || []
})
]
}
19