kk-web

Next.jsのJavaScriptからSASSの変数を取得する方法

2021-06-04

Next.js で SASS の CSS Modules を扱っていると、ときどき JavaScript 側で SASS の変数を扱いたくなったのですが。

app.tsx 上で以下のように書いたら動くのかなーと思っていたのですが、予想に反して空のオブジェクトが返却されました。

import variables from "../../styles/variables.scss";

const MyApp: FC<AppProps> = ({ Component, pageProps }: AppProps) => {
  ...

  // {}
  console.log(variables);

  ...
};

ちなみに SASS 側のコードはこんな感じです。

:export {
  black: #000;
}

で、調べてみたところ以下の Issue が引っかかりました。

SASS :export does not work with built-in SASS support throwing 'Selector ":export" is not pure'

@lipoolock I had to rename my variables.scss to variables.module.scss for this feature to work (from a hint here). That was all!

ということで、ファイルを CSS Modules に合わせたところ無事取得できました。

よくよく考えてみると、JavaScript 側でローダーを介して CSS を変数として扱っているので、CSS Modules に合わせる必要があるのは当たり前だよな、と。

どなたかの参考になれば幸いです。