Next.js 9.3 ビルトインsass autoprefixer メモ
ビルトインSassサポート
Next.js 9.3 でビルトインSassがサポートされたようです。
https://nextjs.org/blog/next-9-3#built-in-sass-support-for-global-stylesheets
既存のBuilt-in CSSと同じ感じで、
グローバルのスタイルに加え、CSS Moduleとしても利用できるようになりました。
ビルトインなので設定なしで使用できますが、sassモジュールはインストールしましょう。
yarn add sass
# or
npm install sass
テンプレートのgit を作ったのでこちらからどうぞ。
https://github.com/itomise/next-template
sass以外のところは以下の記事を参考にしています。
https://qiita.com/syuji-higa/items/931e44046c17f53b432b
Global styles
グローバルで利用したいスタイルは、_app.tsxで~.scss
のようなファイル名でインポートします。
// global style - - -
import 'sanitize.css'
import '../styles/common.scss'
class MyApp extends App {
render(): JSX.Element {
const { Component, pageProps }: AppProps = this.props
return (
<Provider store={store}>
<Component {...pageProps} />
</Provider>
)
}
}
export default MyApp
グローバルのスタイルは_app.tsxでしか適用できないようです。
Module
CSS Moduleとして使用するには、ファイル名を~.module.scss
or~.module.sass
にして、以下のように記述します。
import style from '../../styles/layout/Header.module.scss'
const Header: NextComponentType = () => {
return (
<>
<div className={style.l_header}>
<p>Header</p>
</div>
</>
)
}
実際のクラス名は以下のようになりました。
自動で名前を変えてくれるので名前の競合もなくなりますね。
post cssで autoprefixer適用
ルートにpostcss.config.json
を置くだけでautoprefixerが適用されます。
以下のように記述すれば大丈夫なようです。
{
"plugins": [
"postcss-flexbugs-fixes",
[
"postcss-preset-env",
{
"autoprefixer": {
"grid": true
},
"stage": 3,
"features": {
"custom-properties": false
}
}
]
]
}
Author And Source
この問題について(Next.js 9.3 ビルトインsass autoprefixer メモ), 我々は、より多くの情報をここで見つけました https://qiita.com/itomise/items/dd6ad4374c510e500890著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .