首页 > 技术文章 > nextjs 配置

ende93 2020-03-29 22:21 原文

next.js@9.3.1 @zeit/next-sass@1.0.1 postcss@6.0.23 postcss-loader@3.0.0

我本地存在 .postcss.config.js

next-sass & postcss 配置问题

postcss.config

空文件,只是为了让 next-sass 识别。
具体看这里

next.config.js

{
    ...,
    postcssLoaderOptions: {
        parser: 'postcss-scss',
        plugins: {
          plugins: [
            require('postcss-import')({}),
            require('postcss-url')({}),
            require('postcss-flexbugs-fixes')({}),
            require('postcss-preset-env')({
              autoprefixer: {
                // Disable legacy flexbox support
                flexbox: 'no-2009',
              },
              // Enable CSS features that have shipped to the
              // web platform, i.e. in 2+ browsers unflagged.
              stage: 3,
              features: {
                'custom-properties': false,
              },
            }),
          ],
        },
      },
}

使用 sass modules,但是不使用 css modules

next.config.js

{

     webpack(config, options) {
        config.module.rules.forEach(rule => {
          if (rule && rule.test) {
            // .css 不使用 modules
            const rTest = rule.test.toString();
            if (rTest.includes('.css')) {
              rule.use.forEach((useRule, i) => {
                if (useRule.loader && useRule.loader.includes('css-loader')) {
                  rule.use[i] = {
                    ...useRule,
                    options: {
                      ...useRule.options,
                      modules: false,
                    },
                  };
                }
              });
            }
          }
        });
      },    
      cssModules: true,
      cssLoaderOptions: {
        localIdentName: '[local]___[hash:base64:5]',
      },
}

推荐阅读