Next.js: рд╕реАрдПрд╕рдПрд╕ рд╡рд┐рдЦрдВрдбреВ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреА рдЧрдИ рд╢реИрд▓рд┐рдпрд╛рдБ рд╕реНрд░реЛрдд рдХреНрд░рдо рдХреЗ рдореБрджреНрджреЗ рдмрдирд╛рддреА рд╣реИрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 30 рдЕрдкреНрд░реИрд▓ 2020  ┬╖  42рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: vercel/next.js

рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ

рдмрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдЬреЛ рдХрдИ рдкреГрд╖реНрдареЛрдВ рдкрд░ рдПрдХ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЬрдм рдореИрдВ рдЙрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рдШрдЯрдХ рдХреА рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╕реАрдПрд╕рдПрд╕ рдкреГрд╖реНрда рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдпрд╣ рджреГрд╢реНрдп рдХреАрдбрд╝реЗ рдмрдирд╛рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП ( some-component , рдФрд░ initial-page-component-override рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреГрд╖реНрда рдкрд░ DOM рдореЗрдВ рдЙрд╕реА рддрддреНрд╡ рдкрд░ рд▓рд╛рдЧреВ рдХреА рдЧрдИ рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВ):

рдкреНрд░рд╛рд░рдВрднрд┐рдХ-page.chunk.css

// component styles
.some-component { margin-bottom: 10px; }

// page specific override
.initial-page-component-override { margin-bottom: 20px; }

рджреВрд╕рд░реА page.chunk.css

// component styles
.some-component { margin-bottom: 10px; }

рдЬрдм DOM рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реЗ-page.chunk.css рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреГрд╖реНрда рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рд╕реА рднреА рдкреГрд╖реНрда рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдШрдЯрдХ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдУрд╡рд░рд░рд╛рдЗрдб рдЦреЛ рдЧрдП рд╣реИрдВ рдФрд░ рдЧрд▓рдд рдорд╛рд░реНрдЬрд┐рди рдЕрдм рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреГрд╖реНрда рдкрд░ рдШрдЯрдХ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рдПрдирдмреА рдпрд╣ рдХреЗрд╡рд▓ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рджреЗрд╡ рдореЛрдб рдореЗрдВ рдПрдХ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИред

рдкреНрд░рдЬрдирди рдХрд░рдирд╛

рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо, рдХреГрдкрдпрд╛ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдпрд╛ рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкреНрд░рджрд╛рди рдХрд░реЗрдВ:

  1. рдЪреЗрдХрдЖрдЙрдЯ https://github.com/petewarman/nextjs-css-module-issue
  2. npm i , npm run build , npm start
  3. рдЪреВрдиреЗ рдХреЗ рд╣рд░реЗ рдмрдЯрди рдкрд░ рдХрд░реНрд╕рд░ рдШреБрдорд╛рдПрдВ
  4. рджреВрд╕рд░реЗ рдкреГрд╖реНрда рдХреА рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ рдкреНрд░реА рд▓реЛрдб рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдЧреБрд▓рд╛рдмреА рдореЗрдВ рдмрджрд▓реЗрдВ

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░

рд╢реИрд▓реА рдХреА рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ рдореЗрдВ рджреЛрд╣рд░рд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдШрдЯрдХ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдкреГрд╖реНрда рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рдКрдкрд░ (рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЪрдВрдХ рдореЗрдВ) рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкреНрд░рдгрд╛рд▓реА рдХреА рдЬрд╛рдирдХрд╛рд░реА

  • OS: macOS
  • Next.js рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг: 9.3.6
  • Node.js рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг: 10.16.3

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореБрдЭреЗ рдареАрдХ рд╡реИрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ: https://github.com/zeit/next.js/issues/11946#issuecomment -615298112

рд╕рднреА 42 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рдареАрдХ рд╡реИрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ: https://github.com/zeit/next.js/issues/11946#issuecomment -615298112

рдпрд╣рд╛рдБ рднреА рд╡рд╣реА рд╕рдорд╕реНрдпрд╛: рд░реЛрдирд╛:
рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛: https://github.com/zeit/next.js/pull/11901#issuecomment -614644961

рдХреЛрдИ рдкреНрд░рдЧрддрд┐? рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдирд╣реАрдВ рдбрд╛рд▓ рд╕рдХрддрд╛ред
9.3.7-canary.9 рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛

@EduardoPedrosa
рд╕реНрдерд┐рддрд┐: v9.3.7-canary.11 рдФрд░ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдмрдиреА рд╣реБрдИ рд╣реИред

рд╣рдореЗрдВ рдЕрдкрдиреЗ рдореЛрдиреЛрд░рдкреЛ рдореЗрдВ рдПрдХ рд╕рд╛рдЭрд╛ рдШрдЯрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ - рд╣рдорд╛рд░реЗ рдРрдк рдореЗрдВ рдХреЛрдИ рднреА рд╢реИрд▓реА рдЬреЛ рдЙрди рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИ, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╢реИрд▓рд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдУрд╡рд░рд░рд╛рдЗрдб рдХреА рдЬрд╛рддреА рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╣рдорд╛рд░реЗ рдРрдк рдореЗрдВ рд╢реИрд▓рд┐рдпреЛрдВ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рд╕реАрдПрд╕рдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╣реИ рдЙрдЪреНрдЪ рдФрд░ рдЗрд╕рд▓рд┐рдП рдкреВрд░реНрд╡рддрд╛ рд▓реЗрдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рджреЗрд╡ рдореЛрдб рдореЗрдВ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ, рдмрд╕ рдЙрддреНрдкрд╛рджрди рдирд╣реАрдВ :(

(рд╣рдо @zeit/next-sass рд╕рд╛рде SCSS рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ)

image

image

рдЬрдм рдореИрдВ @ zeit / next-sass рдпрд╛ @ zeit / next-css рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рддреЛ рд╕рдм рдХреБрдЫ рдХреНрд░рдо, рд╡рд░реАрдпрддрд╛ рдФрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЗ рдмреАрдЪ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдареАрдХ рдерд╛ред :рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛:

рдореЗрд░реЗ рд▓рд┐рдП рдЕрд╕рд▓реА рд╕рдорд╕реНрдпрд╛ рддрдм рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдЬрдм рдореИрдВрдиреЗ 9.3 рдореЗрдВ рдЕрдЧрд▓реА рдмрд╛рд░ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдФрд░ рд╕реАрдПрд╕рдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред

рдореИрдВрдиреЗ рджреЛрдиреЛрдВ рддрд░реАрдХреЛрдВ (рдЕрдЧрд▓реЗ-рдПрд╕рдПрдПрд╕ рдФрд░ рдмрд┐рд▓реНрдЯ-рдЗрди) рдХреА рдХреЛрд╢рд┐рд╢ рдХреА - рд╕рдорд╕реНрдпрд╛ рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдореМрдЬреВрдж рдереА

рдореЗрд░рд╛ рдвреЗрд░:
1) рд╕реАрдПрд╕рдПрд╕ рдореЙрдбреНрдпреВрд▓
2) рдПрд╕.рд╕реА.рдПрд╕.рдПрд╕.
3) @ рдЖрдпрд╛рдд рдХреЗ рд╕рд╛рде рдбрд╛рд░реНрдЯ-рд╕реИрд╕

рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдХреЛрдИ рд╕реНрдЯрд╛рдЗрд▓ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдирд╣реАрдВ рд╣реИ):

1) package.json:

"@zeit/next-css": "^1.0.1",
"@zeit/next-sass": "^1.0.1",
"next": "9.2.1", (9.4.1 is current)
"node-sass": "npm:[email protected]", (this is dart sass, but can be used default)

2) next.config.js

const path = require('path')
const withSass = require('@zeit/next-sass')
const withCSS = require('@zeit/next-css')
const withBundleAnalyzer = require('@next/bundle-analyzer')({ // Optional, of course
  enabled: process.env.ANALYZE === 'true',
})

module.exports = withBundleAnalyzer(
  withCSS(
    withSass({
      cssModules: true,
      sassLoaderOptions: {
        // Resolving SASS absolute imports
        includePaths: [path.resolve(__dirname, 'src')],
      },
      cssLoaderOptions: {
        importLoaders: 2,
        localIdentName:
          process.env.NODE_ENV === 'production'
            ? '[hash:base64]'
            : '[name]__[local]__[hash:base64:5]',
      },
      webpack(config, options) {
        // Resolving absolute imports
        config.resolve.modules.push(path.join(__dirname, 'src'))

        // Make global styles work
        config.module.rules.forEach(rule => {
          if (rule.test && rule.test.toString().includes('.scss')) {
            rule.rules = rule.use.map(useRule => {
              if (typeof useRule === 'string') {
                return {
                  loader: useRule,
                }
              }

              if (useRule.loader.startsWith('css-loader')) {
                return {
                  oneOf: [
                    {
                      test: new RegExp('.module.scss$'),
                      loader: useRule.loader,
                      options: useRule.options,
                    },
                    {
                      loader: useRule.loader,
                      options: {},
                    },
                  ],
                }
              }
              return useRule
            })
            delete rule.use
          }
        })

        return config
      },
    }),
  ),
)

3) рд╡реИрд╢реНрд╡рд┐рдХ рдЖрдпрд╛рдд (рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ) рд╢реИрд▓рд┐рдпреЛрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ:

index.scss:

...
<strong i="19">@import</strong> '~emoji-mart/css/emoji-mart.css';
...

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдЕрдЧрд░ рдХреЛрдИ рдРрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ:

.other-page__component-override { background: pink; }

рдЗрд╕рдХреЗ рд╕рд╛рде:

.other-page .component-override { background: pink; }

рддреЛ рдкреГрд╖реНрда-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╢реИрд▓рд┐рдпрд╛рдБ рдХреЗрд╡рд▓ рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреГрд╖реНрда рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИрдВ =)ред

рдореБрдЭреЗ рдЗрд╕ рдмрдЧ рд╕реЗ рднреА рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд░рд╣реА рд╣реИред
рдореИрдВрдиреЗ рдЕрдЧрд▓реА рд╕реАрдПрд╕рдПрд╕ рдХреЛ рдмрд┐рд▓реНрдЯ-рдЗрди рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдФрд░ рдпрд╣ рд╣реБрдЖред
рдпрд╣ рд╡рд┐рдХрд╛рд╕ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди CSR рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдпрд╣ рдЙрддреНрдкрд╛рджрди рдореЛрдб рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред SSR рдореЗрдВ, рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред

рдореИрдВ рдЕрдЧрд▓реЗ 9.4.4 рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рд╕реАрдПрд╕рдПрд╕ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдпрд╣ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред

рдЕрдЧрд▓реА 9.4.4 рдкрд░ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдХреЗрд╡рд▓ рдЙрддреНрдкрд╛рджрди рдореЛрдб рдореЗрдВ

рдпрд╣ рд╣рдорд╛рд░реЗ рдЙрддреНрдкрд╛рджрди env рдкрд░ рдЕрдЧрд▓реЗ 9.4.4 рдкрд░ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдХрд┐рд╕реА рддрд░рд╣ рд╣рдо рдПрдХ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ред

node-sass рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдбреЙрдХреНрдЯрд░ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдХреЗ рдПрдХ рдирдпрд╛ sassOptions next.config.js рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ

module.exports = {
  ...,
  sassOptions: {
    outputStyle: 'expanded',
  },
}

рд╕рдВрджрд░реНрдн: outputStyle

next build рдмрд╛рдж css рдХреНрд▓рд╛рд╕рдирд╛рдо рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИред
рдЙрдореНрдореАрдж рд╣реИ рдХреА рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛!

@ Howard86 рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХреЛрд╢рд┐рд╢ рдХреА рдЧрдИ рд▓реЗрдХрд┐рди рдпрд╣ рдпрд╣рд╛рдБ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд╣рдо рдЕрдкрдиреЗ рдмрд┐рд▓реНрдб рдкрд░ рдиреЗрдХреНрд╕реНрдЯ-рд╕реАрдПрд╕рдПрд╕ рдФрд░ рдиреЗрдХреНрд╕реНрдЯ-рд╕реИрд╕ рдХрд╛ рднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рди рдХрд┐ рдмрд┐рд▓реНрдЯ-рдЗрди рд╕реАрдПрд╕рдПрд╕ рд╕рдкреЛрд░реНрдЯ рдЕрдЧрд▓реЗ рд╕реЗ, рдФрд░ рдЗрд╕ рдЗрд╢реНрдпреВ рдореЗрдВ рдмрддрд╛рдИ рдЧрдИ рд╡рд╣реА рдкреНрд░реЙрдмреНрд▓рдо), рдФрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯреЗрд╢рди рд╕реАрдПрд╕рдПрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдкреЛрд░реНрдЯ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдкреНрдпреЛрд░ рд╕реАрдПрд╕рдПрд╕ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реА рдХреНрд▓рд╛рд╕реЗрд╕ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдореЙрдбреНрдпреВрд▓, рдЬреЛ рд╕реИрд╕ рд╢реИрд▓рд┐рдпреЛрдВ рд╕реЗ рдирд╣реАрдВ рдЖрддреЗ рд╣реИрдВ

@ рд╣реЙрд╡рд░реНрдб 86 @ рдЕрд▓реЗрдХреНрдЬреЗрдВрдбрд░-рдорд░реНрдЪрд┐рдирд╛

рдореИрдВ рдЕрдЧрд▓реЗ рдореЗрдВ, рдЕрдЧрд▓реЗ 9.4.4 рд╕реЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд CSS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдиреЗ рднреА рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред :рд░реЛрдирд╛:

рдореИрдВ atd рдФрд░ рдЕрдЧрд▓реЗ рдирд╡реАрдирддрдо same рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ

рд╡рд╣реА рдореБрджреНрджрд╛ ред рджреЗрд╡ рдореЗрдВ рд╕реАрдПрд╕рдПрд╕ рд▓реЛрдб рд╕рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдЙрддреНрдкрд╛рдж рдореЗрдВ рд╕реАрдПрд╕рдПрд╕ рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕рд╛ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ

рдпрд╣рд╛рдБ рднреА рд╡рд╣реА рдореБрджреНрджрд╛ред

рдЕрдЧрд▓реЗ v9.5.1 рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдкрд░ рд╕рдорд╛рди рдореБрджреНрджреЛрдВ рдХрд╛ рдЕрдиреБрднрд╡, рджреЗрд╡ рдмрд┐рд▓реНрдб рдкрд░ рд╢реИрд▓рд┐рдпреЛрдВ рдареАрдХ рд╣реИрдВред

рдпрд╣ рдмрдЧ рдЕрдЧрд▓реЗ рд╕реАрдПрд╕рдПрд╕-рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рднреА рдЬреЛрдбрд╝рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рд╣реИ! рд╢реИрд▓рд┐рдпреЛрдВ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг!)

рдпрд╣ рдмрдЧ рдЕрдЧрд▓реЗ рд╕реАрдПрд╕рдПрд╕-рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рднреА рдЬреЛрдбрд╝рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рд╣реИ! рд╢реИрд▓рд┐рдпреЛрдВ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг!)

рдЖрдк рдореВрд▓ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХреЛ рдЯрдХреНрдХрд░ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдмрдЯрди <- IconButton <- MoreSpecificButton рдХреЗ рд░реВрдк рдореЗрдВ рдШрдЯрдХ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдмрдЯрди рдХреА рдЕрдкрдиреА рд╢реИрд▓рд┐рдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВ рдЬреЛ рджреВрд╕рд░реЗ рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдиреЗ рдкрд░ рдкреБрдирдГ рд▓реЛрдб рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП IconButton рдФрд░ MoreSpecificButton рд╕реЗ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреА рд╣реИрдВред рдпрджрд┐ IconButton рдХреА рдЕрдкрдиреА рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ .className.className рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ MoreSpecificButton рдХреА рд╢реИрд▓реА .className.className рд╣реИ, рддреЛ рдмрдЯрди рдЗрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдФрд░ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ IconButton рдФрд░ MoreSpecificButton рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдХреНрд░рдо css рдореЗрдВ рд╕рд╣реА рд╣реИ MoreSpecificButton рдХреА рд╢реИрд▓рд┐рдпреЛрдВ рд╣рдореЗрд╢рд╛ IconButton рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдЧреА - рдЕрдкреЗрдХреНрд╖рд┐рддред

рдЕрдЧрд▓реЗ v9.5.1 рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдкрд░ рд╕рдорд╛рди рдореБрджреНрджреЛрдВ рдХрд╛ рдЕрдиреБрднрд╡, рджреЗрд╡ рдмрд┐рд▓реНрдб рдкрд░ рд╢реИрд▓рд┐рдпреЛрдВ рдареАрдХ рд╣реИрдВред

рдореИрдВ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдЯреЗрд▓рд╡рд┐рдВрдб, рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХреЗ рд╕рд╛рде +1ред рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╕рднреА рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ _document.js рдореЗрдВ рд▓рд┐рдВрдХ rel рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╣реИред рдЯреЗрд▓рд╡рд┐рдВрдб рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╕реНрдЯрдо рд╕реАрдПрд╕рдПрд╕ рдмрд┐рд▓реНрдб рд╣реИред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдмрд╣реБрдд рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИред

рдореИрдВ рдЯреЗрд▓рд╡рд┐рдВрдб (рд╕рд╛рдорд╛рдиреНрдп рд╡реИрд╢реНрд╡рд┐рдХ рд╕реАрдПрд╕рдПрд╕ рдЖрдпрд╛рдд) рдХреЗ рд╕рд╛рде рд╕реАрдПрд╕рдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред Inlining css рдиреЗ рд▓реЛрдб рдСрд░реНрдбрд░рд┐рдВрдЧ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИред рдЙрддреНрдкрд╛рджрди рдореЗрдВ, рдореИрдВ рдПрдХ рд╢реИрд▓реА рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ред

https://github.com/vercel/next-plugins/issues/238#issuecomment -432211871

рдпрд╣ рдирд╡реАрдирддрдо Next.js рдХреИрдирд░реА рдкрд░ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреГрдкрдпрд╛ next@^9.5.3-canary.7 рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ рдФрд░ рд╣рдореЗрдВ рдмрддрд╛рдПрдВ!

рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рд╛рдЗрди рд╣рд╛рдЗрдЯреНрд╕, рдлреЙрдиреНрдЯ рд╡реЗрдЯ, рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдХрд▓рд░, рдмреЙрд░реНрдбрд░ рджреЗрд╡ рдФрд░ рдкреНрд░реЛрдбрдХреНрдЯреНрд╕ рдореЗрдВ рдЕрд▓рдЧ рд╣реИрдВред

@talaikis рдХреГрдкрдпрд╛ рдлрд┐рд░ рд╕реЗ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдбреЗрдореЛ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВ! рдореИрдВрдиреЗ рдЗрд╕ рдкреНрд░рдЬрдирди рдореЗрдВ рджрд┐рдП рдЧрдП рд╕рдЯреАрдХ рдХреЛрдб рдФрд░ canary рдЕрдм рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

рдореБрдЭреЗ рдареАрдХ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдФрд░ рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм рдореИрдВ Router.push( рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЗрд╡рд▓ рд╣реИрд╢ url рдмрджрд▓рддрд╛ рд╣реВрдВ ) coming from рд╕реНрдерд╛рдиреАрдпрд╣реЛрд╕реНрдЯ: 3000 `рд╕рднреА рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ рдлрд┐рд░ рд╕реЗ рд╕реНрдХреНрд░реАрди рдмреНрд▓рд┐рдВрдХ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ 9.5.3-canary.9 рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@ рдЯрд┐рдорд░ npm i рдЪрд▓ рд░рд╣рд╛ рд╣реИ:

image

рдореИрдВ 9.5.3-canary.9 рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдЕрднреА рднреА рд╣реИрд╢ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдмрдиреА рд╣реБрдИ рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ 9.5.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЬрдм рдореИрдВрдиреЗ 9.5.3-canary.6 рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд┐рдпрд╛ рдерд╛ рддреЛ рдКрдкрд░ рджрд┐рдП рдЧрдП рд╣реИрд╢ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╛рдЙрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ devtools рдХрдВрд╕реЛрд▓ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рднреА рд╣реИред
рд╕рдорд╕реНрдпрд╛ 9.5.3-canary.5 рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред

image

@fabinppk рдХреГрдкрдпрд╛ рдкреНрд░рдЬрдирди рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВ!

рдмрд╕ рдореВрд▓ рдореБрджреНрджреЗ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ 9.5.3-canary.9 рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд▓рдЧрддрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж @Timer

@Petewarman рдХреА рдкреБрд╖реНрдЯрд┐ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

@ рдЯрд╛рдЗрдорд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдпрд╣ рдареАрдХ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ devtools рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред
рдзрдиреНрдпрд╡рд╛рджред : +1:

рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЕрднреА рднреА 9.5.6-canary.11 рд╕рд╛рде рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд╡рд░реНрдЧреЛрдВ рдХреЛ рд╡рд┐рдЦрдВрдбреВ рдореЗрдВ рджреЛрд╣рд░рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЧрдИ @glottonous рдЯрд╛рдЗрдорд░ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХреА рдЧрдИ рдереАред

Ps: рдореИрдВ 9.5.5 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред ЁЯСМЁЯСМ

@fabinppk рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрднреА рднреА 9.5.6-canary.11 рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдмрди рд░рд╣рд╛ рд╣реИред

@ рд▓реЗрдЧрд┐рдВрдЧреЛрдиреЛрд╕рд╕ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ 9.5.6-canary.11 рд╕рд╛рде рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдФрд░ рдореБрдЭреЗ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реБрдИред

рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ, рддреЛ рдЗрд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдХреЗ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВред : +1:

рдЕрдЧрд▓реА 10 рдореЗрдВ, рд╡рд╣реА рдореБрджреНрджреЗ

рд╡рд╣реА рдореБрджреНрджреЛрдВ 10.0.1

рдореИрдВрдиреЗ # 19055 рдХреЛ рдПрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдбреЗрдореЛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕