Socket
Socket
Sign inDemoInstall

next-less-v2

Package Overview
Dependencies
349
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    next-less-v2

Import `.less` files in your Next.js project


Version published
Maintainers
1
Install size
5.12 MB
Created

Readme

Source

next-less-v2

Import .less files in your Next.js project

Installation

npm install --save @zeit/next-less less

or

yarn add @zeit/next-less less

Usage

The stylesheet is compiled to .next/static/css. Next.js will automatically add the css file to the HTML. In production a chunk hash is added so that styles are updated when a new version of the stylesheet is deployed.

Without CSS modules

Create a next.config.js in your project

// next.config.js
const withLess = require('@zeit/next-less')
module.exports = withLess()

Create a Less file styles.less

@font-size: 50px;
.example {
  font-size: @font-size;
}

Create a page file pages/index.js

import "../styles.less"

export default () => <div className="example">Hello World!</div>

With CSS modules

// next.config.js
const withLess = require('@zeit/next-less')
module.exports = withLess({
  cssModules: true
})

Create a Less file styles.less

@font-size: 50px;
.example {
  font-size: @font-size;
}

Create a page file pages/index.js

import css from "../styles.less"

export default () => <div className={css.example}>Hello World!</div>

With CSS modules and options

You can also pass a list of options to the css-loader by passing an object called cssLoaderOptions.

For instance, to enable locally scoped CSS modules, you can write:

// next.config.js
const withLess = require('@zeit/next-less')
module.exports = withLess({
  cssModules: true,
  cssLoaderOptions: {
    importLoaders: 1,
    localIdentName: "[local]___[hash:base64:5]",
  }
})

Create a CSS file styles.css

.example {
  font-size: 50px;
}

Create a page file pages/index.js that imports your stylesheet and uses the hashed class name from the stylesheet

import css from "../style.css"

const Component = props => {
  return (
    <div className={css.backdrop}>
      ...
    </div>
  )
}

export default Component

Your exported HTML will then reflect locally scoped CSS class names.

For a list of supported options, refer to the webpack css-loader README.

PostCSS plugins

Create a next.config.js in your project

// next.config.js
const withLess = require('@zeit/next-less')
module.exports = withLess()

Create a postcss.config.js

module.exports = {
  plugins: {
    // Illustrational
    'postcss-css-variables': {}
  }
}

Create a CSS file styles.scss the CSS here is using the css-variables postcss plugin.

:root {
  --some-color: red;
}

.example {
  /* red */
  color: var(--some-color);
}

When postcss.config.js is not found postcss-loader will not be added and will not cause overhead.

You can also pass a list of options to the postcss-loader by passing an object called postcssLoaderOptions.

For example, to pass theme env variables to postcss-loader, you can write:

// next.config.js
const withLess = require('@zeit/next-less')
module.exports = withLess({
  postcssLoaderOptions: {
    parser: true,
    config: {
      ctx: {
        theme: JSON.stringify(process.env.REACT_APP_THEME)
      }
    }
  }
})

Configuring Next.js

Optionally you can add your custom Next.js configuration as parameter

// next.config.js
const withLess = require('@zeit/next-less')
module.exports = withLess({
  webpack(config, options) {
    return config
  }
})

FAQs

Last updated on 29 May 2019

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc