DEV Community

Antoine for Itself Tools

Posted on • Edited on

Enhancing Next.js Projects with CSS Support Using '@zeit/next-css'

At itselftools.com, we have leveraged the power of Next.js in conjunction with Firebase to develop over 30 dynamic, scalable web applications. Our extensive experience has taught us numerous best practices and optimization techniques, one of which includes integrating traditional CSS into Next.js projects for enhanced styling capabilities. This article will dive deep into how the 'next.config.js' configuration can be optimized to support CSS files using the '@zeit/next-css' plugin.

Understanding the Code

const withCSS = require('@zeit/next-css');
module.exports = withCSS({
  webpack(config, options) {
    config.module.rules.push({
      test: /\.css$/,
      use: ['style-loader', 'css-loader', 'postcss-loader']
    });
    return config;
  }
});
Enter fullscreen mode Exit fullscreen mode

This code snippet is a critical component for enabling traditional CSS in your Next.js projects. '@zeit/next/css' simplifies the integration of CSS files into your Next.js build. Here's a breakdown of each part of the code:

  • require('@zeit/next-css'): This imports the necessary package to handle CSS in Next.js projects.

  • module.exports = withCSS({...}): This function wraps your Next.js configuration with additional settings to handle CSS files, effectively enhancing the build process.

  • webpack(config, options): It is a function that modifies the default Webpack configuration used by Next.js. This function is crucial for specifying how CSS files should be handled during the build process.

  • config.module.rules.push(...): This part adds a new rule to the Webpack configuration. The rule targets files ending in '.css' with the specified loaders.

    • test: /\.css$/: This regular expression matches all .css files within your project.
    • use: ['style-loader', 'css-loader', 'postlog-loader']: These loaders are essential for processing CSS files. Here’s what each does:
      • style-loader: Injects CSS into the DOM via a <style> tag.
      • css-loader: Interprets @import and url() like import/require() and will resolve them.
      • postcss-loader: Processes CSS with PostCSS, a tool for transforming styles with JS plugins.

Benefits of Using '@zeit/next-css'

  1. Simplified Configuration: Streamlines the integration of CSS into your Next.js projects.

  2. Enhanced Styling Capabilities: Allows for more complex styling frameworks and pre-processors alongside your application logic.

  3. Optimized Build Process: Improves the handling of static assets which boosts performance and efficiency.

Conclusion

Incorporating CSS into Next.js using '@zeit/next-css' not only simplifies the development process but also enhances the project's styling flexibility. For those interested in seeing these configurations in action, feel free to visit some of our applications like optimize your images, extract files easily, and manage disposable emails which utilize complex configurations effectively.

SurveyJS custom survey software

Simplify data collection in your JS app with a fully integrated form management platform. Includes support for custom question types, skip logic, integrated CCS editor, PDF export, real-time analytics & more. Integrates with any backend system, giving you full control over your data and no user limits.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs