In my current NextJS project, I am using Tailwind as a CSS framework. When I run yarn dev
, everything works fine, but whenever I run yarn build
followed by a yarn start
, all of my CSS seems to be purged as the layout of my page is completely different.
Before:
After:
My tailwind.config.js file:
/* eslint-disable global-require */
const defaultTheme = require('tailwindcss/defaultTheme');
module.exports = {
purge: ['./pages/**/*.{js,ts,jsx,tsx}', './components/**/*.{js,ts,jsx,tsx}'],
darkMode: false, // or 'media' or 'class'
theme: {
screens: {
sm: '640px',
md: '768px',
max_md: { max: '767px' },
lg: '1024px',
xl: '1536px',
},
colors: {
primary: '#f2a53f',
white: '#fff',
},
fontFamily: {
title: ['Dancing Script', 'Times New Roman', 'sans-serif'],
sans: ['Roboto', ...defaultTheme.fontFamily.sans],
},
textShadow: {
default: '1px 1px 3px #000',
},
zIndex: {
1: -1,
},
extend: {
height: {
128: '32rem',
},
margin: {},
},
},
variants: {
extend: {},
},
plugins: [require('tailwindcss-textshadow')],
};
postcss.config.js file:
const purgecss = [
'@fullhuman/postcss-purgecss',
{
content: [
'./pages/**/*.{js,jsx,ts,tsx}',
'./components/**/*.{js,jsx,ts,tsx}',
],
defaultExtractor: (content) => content.match(/[\w-/:]+(?<!:)/g) || [],
},
];
module.exports = {
plugins: [
'tailwindcss',
process.env.NODE_ENV === 'production' ? purgecss : undefined,
],
};
_app.tsx:
import Head from 'next/head';
import { ApolloProvider } from '@apollo/client';
import { AppProps } from 'next/app';
import { useApollo } from '../../apollo/client';
import '../styles/globals.css';
const MyApp = ({ Component, pageProps }: AppProps) => (
<ApolloProvider client={useApollo(pageProps.initialApolloState)}>
<Component {...pageProps} />
</ApolloProvider>
);
export default MyApp;
globals.css:
@tailwind base;
@tailwind components;
@tailwind utilities;
@font-face {
font-family: 'Dancing Script';
font-style: medium;
font-weight: 500;
font-display: swap;
src: local('Dancing Script'),
url(/fonts/DancingScript-Medium.tff) format('tff');
}
body {
margin: 0 !important;
}
package.json dependencies:
"dependencies": {
"@apollo/client": "3.3.12",
"@apollo/react-hooks": "4.0.0",
"@contentful/rich-text-react-renderer": "14.1.2",
"@contentful/rich-text-types": "14.1.2",
"apollo-cache-inmemory": "1.6.6",
"apollo-client": "2.6.10",
"apollo-link-http": "1.5.17",
"autoprefixer": "10.2.5",
"clsx": "1.1.1",
"contentful": "8.2.0",
"graphql": "15.5.0",
"graphql-tag": "2.11.0",
"next": "10.0.9",
"next-with-apollo": "5.1.1",
"postcss": "8.2.8",
"react": "17.0.1",
"react-dom": "17.0.1",
"react-icons": "4.2.0",
"tailwindcss": "2.0.4",
"tailwindcss-textshadow": "2.1.3"
},
"devDependencies": {
"@commitlint/cli": "12.0.1",
"@commitlint/config-conventional": "12.0.1",
"@fullhuman/postcss-purgecss": "4.0.3",
"@types/node": "14.14.35",
"@types/react": "17.0.3",
"@types/react-dom": "17.0.2",
"@typescript-eslint/eslint-plugin": "4.18.0",
"@typescript-eslint/parser": "4.18.0",
"add": "2.0.6",
"commitizen": "4.2.3",
"cz-conventional-changelog": "3.3.0",
"eslint": "7.22.0",
"eslint-config-airbnb": "18.2.1",
"eslint-config-prettier": "8.1.0",
"eslint-import-resolver-typescript": "2.4.0",
"eslint-plugin-import": "2.22.1",
"eslint-plugin-jsx-a11y": "6.4.1",
"eslint-plugin-prettier": "3.3.1",
"eslint-plugin-react": "7.22.0",
"eslint-plugin-react-hooks": "4.2.0",
"husky": "5.1.3",
"lint-staged": "10.5.4",
"postcss-preset-env": "6.7.0",
"prettier": "2.2.1",
"typescript": "4.2.3",
"yarn": "1.22.10"
},
"config": {
"commitizen": {
"path": "cz-conventional-changelog"
}
}
If there is anything that seems off, feel free to let me know. I have looked at other issues online but did not find and solution to my problem.
Double check the paths in tailwind.config.js
. If your components are not in the components
directory, then you need to update the purge
paths to reflect this.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With