CSS / LESS / SASS / CssModules in Next.js
npm install @grampelberg/next-styles---
This module allows you to use css (+ optional [less, sass, modules]) all in one package.
It uses the latest modules available css-loader, less-loader, sass-loader, postcss. Check out the sources, its dead simple.
Because I found it cumbersome to deal with the official packages from next-plugins to setup css + less + sass + modules.
So I created this one. It has everything I need for my project, most projects, I believe.
``sh`
npm install @webdeb/next-styles
`js
// next.config.js
const withStyles = require('@webdeb/next-styles')
module.exports = withStyles({
less: true, // use .less files
sass: true, // use .scss files
modules: true, // style.(m|module).css & style.(m|module).scss for module files
lessLoaderOptions: {
javascriptEnabled: true,
},
sassLoaderOptions: {
sassOptions: {
includePaths: ["src/styles"], // @import 'variables'; # loads (src/styles/varialbes.scss), you got it..
},
},
cssLoaderOptions: {...},
postcssLoaderOptions: {...},
miniCssExtractOptions: {...} // ignoreOrder:true for https://github.com/webpack-contrib/mini-css-extract-plugin/issues/250#issuecomment-544898772
})
`
_Hint: Look at the source of truth: withStyles.js_
This project inherits a known next-css problem. https://github.com/zeit/next-plugins/issues/282
If your pages where you are importing css are not working, you are probably facing exactly this problem. The workaround is to load a css/scss file (can be even empty) into your \_app.js.
`js
import "../styles/global.scss"
export default function MyApp({ Component, pageProps }) {
return
}
`
1. fork the project ~mastergit clone https/ssh github link to your fork
1. locally clone the project in your machine ( )git checkout -b your/branch/name
1. create a new branch in your fork ( )npm install
1. run in your local clone of the repoCHANGELOG.md
1. apply your code changes ( keep and the README.md file up to date, also modify package.json version as fit!)npm pack
1. run in your local clone of the reponpm install --save path/to/local/repo/{version}.tgz
1. test your changes against a next.js project that uses your local repo ( use to test your locally changed code)
1. if your code work as expected, remove the packed tgz file from the repo and commit to your fork
1. create a PR to apply your fork in this repository
Most of the code was taken from the official next-css & next-sass` package.