Введение/Руководства/Sass

Использование Sass

Next.js имеет встроенную поддержку интеграции с Sass после установки пакета, используя расширения .scss и .sass. Вы можете использовать Sass на уровне компонентов через CSS Modules с расширениями .module.scss или .module.sass.

Сначала установите sass:

Terminal
npm install --save-dev sass

Полезно знать:

Sass поддерживает два разных синтаксиса, каждый со своим расширением. Расширение .scss требует использования SCSS синтаксиса, в то время как расширение .sass требует использования индентного синтаксиса ("Sass").

Если вы не уверены, что выбрать, начните с расширения .scss, которое является надмножеством CSS и не требует изучения индентного синтаксиса ("Sass").

Настройка параметров Sass

Если вы хотите настроить параметры Sass, используйте sassOptions в next.config.

import type { NextConfig } from 'next'

const nextConfig: NextConfig = {
  sassOptions: {
    additionalData: `$var: red;`,
  },
}

export default nextConfig
/** @type {import('next').NextConfig} */

const nextConfig = {
  sassOptions: {
    additionalData: `$var: red;`,
  },
}

module.exports = nextConfig

Реализация

Вы можете использовать свойство implementation для указания реализации Sass. По умолчанию Next.js использует пакет sass.

import type { NextConfig } from 'next'

const nextConfig: NextConfig = {
  sassOptions: {
    implementation: 'sass-embedded',
  },
}

export default nextConfig
/** @type {import('next').NextConfig} */

const nextConfig = {
  sassOptions: {
    implementation: 'sass-embedded',
  },
}

module.exports = nextConfig

Переменные Sass

Next.js поддерживает переменные Sass, экспортированные из файлов CSS Module.

Например, использование экспортированной переменной Sass primaryColor:

app/variables.module.scss
$primary-color: #64ff00;

:export {
  primaryColor: $primary-color;
}
app/page.js
// соответствует корневому URL `/`

import variables from './variables.module.scss'

export default function Page() {
  return <h1 style={{ color: variables.primaryColor }}>Hello, Next.js!</h1>
}