Next.js: рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЗ рдЕрдВрджрд░ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 9 рдЬрдире░ 2017  ┬╖  103рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: vercel/next.js

рдЕрдм рд╣рдо рдореЗрдВ рд╕реЗ рдХреБрдЫ рд▓реЛрдЧ ES2015 рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП NPM рдкреИрдХреЗрдЬ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдШрдЯрдХ) рдХреЛ рдмрд┐рдирд╛ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓ рдХрд┐рдП рд╢рд┐рдк рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрджрд┐ рд╡реЗ Next.js рдпрд╛ CRA (рдЬреЛ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИ) рдЬреИрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВред рд╡реЗ рд▓рд╛рдн рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ:

  • рдПрдирдкреАрдПрдо рдХреЛ рд╢рд┐рдкрд┐рдВрдЧ рд╕реЗ рдкрд╣рд▓реЗ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
  • рд╡реЗрдмрдкреИрдХ 2 рдХреЗ рдЯреНрд░реА-рд╢реЗрдХрд┐рдВрдЧ рдХрд╛ рд▓рд╛рдн рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЗ рдЕрдВрджрд░ рдХреА рд╣рд░ рдЪреАрдЬ рдХреЛ рдмреИрдмреЗрд▓ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд┐рдВрдЧ рд╕реЗ рдмрд╛рд╣рд░ рдХрд░

рддреЛ, рдпрд╣рд╛рдБ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реИред

рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ next.config.js рдореЗрдВ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╣реИ рдЬрд┐рд╕реЗ рдмреЗрдмреЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рджреЗрдЦреЛ:

module.exports = {
   transpileModules: [
     "my-component",
     "redux/src"
   ]
}
story feature request

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

рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ next.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдореЙрдбреНрдпреВрд▓ рдХреА рдПрдХ рд╕рдореГрджреНрдз рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реВрдВ, рдЙрддрдирд╛ рд╣реА рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рдЬрд╛рддреА рд╣реИред рдпрд╣ рдореЗрд░реЗ рдЖрдВрддрд░рд┐рдХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдмреЗрдмреЗрд▓ рд╕рдВрдХрд▓рди рдЪрд░рдг рдХреА рдирдХрд▓ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд┐рдЯрд╛ рдмрди рд░рд╣рд╛ рд╣реИред

рдореИрдВ

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

  • рдпрд╣ webpack() рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ?
  • transpileModules рдмреЗрд╣рддрд░ рд▓рдЧрддрд╛ рд╣реИ
  • рдХреНрдпрд╛ рд╣рдо рд░реЗрдЧреЗрдХреНрд╕рдкреНрд╕ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВрдЧреЗ?

рдпрд╣ рд╡реЗрдмрдкреИрдХ () рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ?

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдорддрд▓рдм рдХрд╕реНрдЯрдо рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИред рдпрд╣ рд╕рд╛рдзреНрдп рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдореМрдЬреВрджрд╛ рд▓реЛрдбрд░ рдореЗрдВ рдмреИрдарддрд╛ рд╣реИред рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдХреБрдЫ рдХрдард┐рди рд╣реИред

transpileModules рдмреЗрд╣рддрд░ рд▓рдЧрддрд╛ рд╣реИ

рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ред рдореИрдВ рдЕрдкрдбреЗрдЯ рдХрд░реВрдВрдЧрд╛ред

рдХреНрдпрд╛ рд╣рдо рд░реЗрдЧреЗрдХреНрд╕рдкреНрд╕ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВрдЧреЗ?
рд╣рд╛рдВред рдЬрд╝рд░реВрд░ред

рдЕрд░реЗ,

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЕрдкрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рд▓рд░реНрди/рдиреЗрдХреНрд╕реНрдЯ/рд╕реНрдЯрд╛рдЗрд▓ рдЬреИрд╕реА рдирдИ рддрдХрдиреАрдХреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ ... рдФрд░ рдЗрд╕ рдкрд░ рд╢реБрд░реБрдЖрддреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

рдореИрдВрдиреЗ рдПрдХ рдбреБрдкреНрд▓реАрдХреЗрдЯ рдореБрджреНрджрд╛ рдЦреЛрд▓рд╛ рд╣реИ рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдиреЗрдХреНрд╕реНрдЯрдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рд╕реАрдЖрд░рдП-рдЖрдзрд╛рд░рд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЖрдпрд╛рдд/рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓реЗрд╢рди рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдпреЛрдЧреНрдп рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ)

рдореИрдВрдиреЗ рдпрд╣ рднреА рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдмреЗрдмреЗрд▓, рдЬреЛ рд▓рд░реНрди рдкрд░ рднреА рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рдмреЗрд╣рддрд░ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ @arunoda рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдРрдк рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд┐рдВрдЧ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред

рдореИрдВ рдЕрдкрдиреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рдВрдЧрд▓ рдмреЗрдмреЗрд▓ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЙрд╕ рдХреЙрдиреНрдлрд┐рдЧ рдХреЛ рдЕрдкрдиреЗ рд╕рднреА рдбрд┐рдХреЙрдЙрд▓реНрдб рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдпрд╣ рд╢рд╛рдпрдж рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдЕрдЧрд░ рдореИрдВ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдиреЗрдХреНрд╕реНрдЯ рд░рдирд░ рдХреЗ рдмрд╛рд╣рд░ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ

рдореЗрд░реА рд╡рд░реНрддрдорд╛рди рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдпрд╣рд╛рдВ рд╣реИ: https://github.com/slorber/playground/ рдЬреИрд╕реЗ рд╣реА рдХреЛрдИ рдХрд╛рдВрдЯрд╛/рдкреАрдЖрд░ рд╣реЛрдЧрд╛, рдореИрдВ рдЗрд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред @arunoda рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

@slorber рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо 2.0 рд░рд┐рд▓реАрдЬ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╣рдо рд╕рд╛рдорд╛рди рдХреЛ рдареАрдХ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗ рдмрдЧ рдвреВрдВрдв рд░рд╣реЗ рд╣реИрдВред

рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдХрд╛рдо рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ 2.0 рдХреЗ рдмрд╛рдж рд╣реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдареАрдХ рд╣реИ рддреЛ рдореИрдВ рдПрдХ рдХрд╛рдВрдЯрд╛ рдмрдирд╛ рджреЗрддрд╛ рд╣реВрдБред рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 2.0.0 рдмреАрдЯрд╛ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡реЗрдмрд╕рд╛рдЗрдЯ рдирд╣реАрдВ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╡реЗрдмрдкреИрдХ 1.13 рдХрд░рддрд╛ рд╣реИ: рдореБрдЦреНрдп/рдореЙрдбреНрдпреВрд▓ рдлрд╝реАрд▓реНрдбред

рдореИрдВ рдПрдХ рдмрдВрдбрд▓рд░ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдкреИрдХреЗрдЬ рдХреЗ "рдореЙрдбреНрдпреВрд▓" рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред рдЬреЗрд╕рди рдирд╣реАрдВ? рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ "рдореБрдЦреНрдп" рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд╛рд░рджрд░реНрд╢реА рдХреЛрдб рдХреЗ рд▓рд┐рдП рд▓рдЧрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓реЗрд╢рди рдХреЛ рд╢рд╛рдорд┐рд▓/рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред рдореИрдВ рдХрд┐рди 3 рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдЗрд╕ рдкрд░ рдХреЛрдИ рд╕рд┐рдлрд╛рд░рд┐рд╢?

@slorber рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ main рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо рдЕрдкрдиреЗ next.conf.js . рдореЗрдВ exclude рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдлрд╝рд╛рдЗрд▓рдкрде рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рд╣рдореНрдо рдореИрдВрдиреЗ рдиреЗрдХреНрд╕реНрдЯ 2.x рдХреЗ рдЦрд┐рд▓рд╛рдл рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдЬреЛ рджреЗрдЦрд╛ рд╣реИ рдЙрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдореИрдВрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛рдо рджреЗрдЦрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рд░рдирдЯрд╛рдЗрдо рдкрд░ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдЬрдмрдХрд┐ рдЬреЗрдПрд╕рдиреЗрдХреНрд╕реНрдЯ: рдореБрдЦреНрдп рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ (рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореБрдЭреЗ рдпрд╛рдж рд╣реИ)ред рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛

рд╡реИрд╕реЗ рднреА, рдЬреЗрдПрд╕рдиреЗрдХреНрд╕реНрдЯ: рдореБрдЦреНрдп рдпрд╛ рдореЙрдбреНрдпреВрд▓ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрдВрдкрдиреА-рдЖрдВрддрд░рд┐рдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓реЗрд╢рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╢рд╛рдпрдж рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ

рд╕рдореБрджрд╛рдп рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ рдирд╛? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ react-youtube рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдореИрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдорд╛рди рд░рд╣рд╛ рд╣реВрдВ?

рд╕рдВрджрд░реНрдн: https://github.com/rauchg/blog/blob/master/components/post/youtube.js

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

рд▓реЗрдХрд┐рди рдХрдВрдкрдиреА рдХреЗ рдЖрдВрддрд░рд┐рдХ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП, рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓реЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрдИ рдкреНрд░реЛрдЬреЗрдХреНрдЯ (рдЬреИрд╕реЗ рдмреИрдмреЗрд▓ рдкреНрд░реАрд╕реЗрдЯ) рдореЗрдВ рд╕рдорд╛рди рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдВрдбрд▓рд░ рдХреЛ рд╕рднреА рдХрдВрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдкрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ

@slorber рд╕реЗ рдмрд╣реБрдд рд╕рд╣рдордд рд╣реИрдВ - рдпрд╣ рдЖрдВрддрд░рд┐рдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рддреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗ рдЪреАрдЬреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдФрд░ @rauchg / @arunoda RegExp рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ NPM org рдирд╛рдорд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдВрдкрдиреА рдХреЗ рд╕рднреА рдЖрдВрддрд░рд┐рдХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкрдХрдбрд╝рддреА рд╣реИ:

// next.config.js
module.exports = {
  transpileModules: [
    /^\@my-npm-org\/.*/
  ]
}

рд╕реБрдВрджрд░ рд╕реБрдЭрд╛рд╡ @philcockfield

рдЕрд░реЗ рд╢рд╛рдпрдж рдпрд╣ рдХреБрдЫ рдкреНрд░реАрд╕реЗрдЯ рджреЗрдиреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдХрд░рдг (рд▓рд░реНрди/рдПрдирдкреАрдПрдо рд▓рд┐рдВрдХ ...) рд╕рд┐рдореНрд▓рд┐рдВрдХ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рд╕рд░рд▓ рдХреНрдпреЛрдВ рдирд╣реАрдВ:

```рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ
рдореЙрдбреНрдпреВрд▓.рдПрдХреНрд╕рдкреЛрд░реНрдЯ = {
transpileModules: ["рд╕рд┐рдореНрд▓рд┐рдВрдХ"]
}
````

рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ next.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдореЙрдбреНрдпреВрд▓ рдХреА рдПрдХ рд╕рдореГрджреНрдз рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реВрдВ, рдЙрддрдирд╛ рд╣реА рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рдЬрд╛рддреА рд╣реИред рдпрд╣ рдореЗрд░реЗ рдЖрдВрддрд░рд┐рдХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдмреЗрдмреЗрд▓ рд╕рдВрдХрд▓рди рдЪрд░рдг рдХреА рдирдХрд▓ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд┐рдЯрд╛ рдмрди рд░рд╣рд╛ рд╣реИред

рдореИрдВ

рдореИрдВ рдЖрдЬ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдБ :)

@philcockfield рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдВ: https://github.com/zeit/next.js/pull/749

рдзрдиреНрдпрд╡рд╛рдж @ рдЕрд░реБрдгреЛрджрд╛

рддреЛ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдХреЗ рдкреАрдЖрд░ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЧрдИ рд╣реИ рдпрджрд┐ рдпрд╣ рд╕рд┐рдореНрд▓рд┐рдВрдХ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рддреЛ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдереЛрдбрд╝реА рд╕реАрдорд┐рдд рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдирдкреАрдПрдо рд▓рд┐рдВрдХ рдпрд╛ рд▓рд░реНрдирд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреА, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдирдкреАрдПрдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓реНрдб рдирд╣реАрдВ рд╣реИрдВ (рджрд╛рдПрдВ? рдореБрдЭреЗ рдХреЛрдИ рдЕрдиреНрдп рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ рдЬрдм рддрдХ рдЖрдк /node_modules рдЕрдВрджрд░ рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддрдм рддрдХ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ)

рд╕рд┐рдореНрд▓рд┐рдВрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХреНрдпреЛрдВ рдирд╣реАрдВ? рдХреНрдпрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдХрдард┐рди рд╣реИ?

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВ рдЕрдкрдиреЗ рдРрдк рдкрд░ рдЖрдкрдХреА рд╢рд╛рдЦрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рдЬреНрдЮрд╛рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рд╢рд╛рдЦрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдкрд░реАрдХреНрд╖рдХ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рджрд░реНрджрдирд╛рдХ рдирд╣реАрдВ рд╣реИ? рдореИрдВрдиреЗ рдХреБрдЫ рд╕рд╛рдорд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдЬреИрд╕реЗ:

  • npm https://github.com/arunoda/next.js.git#add -706 рд╕реНрдерд╛рдкрд┐рдд
  • /рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЗ рдЕрдВрджрд░ рдХрд╛рдВрдЯреЗ рдХрд╛ рдЧрд┐рдЯ рдХреНрд▓реЛрди: рдЬреНрдпрд╛рджрд╛ рд╕рдлрд▓рддрд╛ рдирд╣реАрдВ (рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓рд░реНрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд╛рдВрдЯреЗ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ?

рдпрджрд┐ рдЖрдк рдЗрд╕реЗ next.config.js : module.exports = { webpack: (config , рддреЛ config.module.rules рдореЗрдВ рдХреБрдЫ рдЪреАрдЬреЗрдВ рд╣реИрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдирд┐рдпрдо рдХреЛ рдмрджрд▓рдиреЗ рдпрд╛ рдПрдХ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? :

  { loader: 'babel-loader',
    include: '/Users/me/gh/guide/node_modules/next/dist/pages',
    options: 
     { babelrc: false,
       cacheDirectory: true,
       sourceMaps: 'both',
       plugins: [Object] } },
  { test: /\.js(\?[^?]*)?$/,
    loader: 'babel-loader',
    include: 
     [ '/Users/me/gh/guide',
       '/Users/me/gh/guide/node_modules/next/dist/pages' ],
    exclude: [Function: exclude],
    query: 
     { babelrc: true,
       cacheDirectory: true,
       sourceMaps: 'both',
       presets: [] } } ]

рд╕реБрдЭрд╛рдП рдЧрдП рд╕рд░рд▓ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдореЗрд░реА рдЕрдЬреНрдЮрд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдореИрдВ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХреНрдпрд╛ рд╣реИ? рд╣рдо рдЕрдкрдиреЗ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ es6 рдЖрдпрд╛рдд рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ, рд╣рдореЗрдВ рдЯреНрд░реА-рд╢реЗрдХрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЗрд╕ рдкрд░ рдХреЛрдИ рдЬрдирд╕рдВрдкрд░реНрдХ рд╣реИ?

@andrewmclagan рдпрд╣ рдореБрджреНрджрд╛ рдЕрднреА рднреА рдЦреБрд▓рд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдПрдХ рд╕рдВрдмрдВрдзрд┐рдд рдкреАрдЖрд░ рд╣реИ рдЬреЛ рд╢рд╛рдпрдж рд╕рднреА рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ (рдЬреИрд╕реЗ LernaJS рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛)

рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ node_modules рд╕реЗ рдЖрдпрд╛рдд рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓рд╛ рд╡реЗрдмрдкреИрдХ рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдиреНрдп рддрд░реАрдХрд╛ рд╣реИ?

@slorber рдореИрдВ рдкреАрдЖрд░ рдкрд░ рдПрдХ рдирдЬрд╝рд░

рдореБрдЭреЗ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред get-urls рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИред dev рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ uglify рд╕реЗ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА

...
{ Error: commons.js from UglifyJs
...

рдХреГрдкрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЙрдкрд╛рдп рд╣реИ?

рдЕрд░реБрдгреЛрджрд╛ рдпрд╣рд╛рдВ рдХрднреА рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░реЗрдВрдЧреАред рд╡рд╣ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ #749 . рдореЗрдВ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ

рдореБрдЭреЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред рдЬреИрд╕рд╛ рдХрд┐ @philcockfield рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдирд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рджреГрд╢реНрдп рд╣реИ рдЬреЛ Next.js рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓реЗрд╢рди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдмреАрдЪ рдШрдЯрдХреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдпрд╣ рди рдХреЗрд╡рд▓ рдкреЗрдбрд╝ рдХреЛ рд╣рд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред styled-jsx рдЬреИрд╕реЗ рдмреЗрдмреЗрд▓ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд▓рд┐рдП рднреАред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдореЙрдбреНрдпреВрд▓ (рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рддрд░рд╣) рд╣реИ рдЬреЛ рдПрдХ рдмреЗрдмрд▓ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рддреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди ES6 рд╕реНрд░реЛрдд рдХреЛрдб рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдЕрдкрдиреЗ рдРрдк рдХреЛ рдЗрд╕реЗ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рд╕реЗ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рд╣реИред рдмреЗрд╢рдХ рдЕрдЧрд▓рд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ styled-jsx рд╣реИред

рдпрд╣рд╛рдБ рдореИрдВрдиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛

// next.config.js
exports.webpack = config => (config.module.rules = config.module.rules.map(({exclude, ...rest}) => ({
  exclude: Object.prototype.toString.call(exclude) === '[object Function]' ? (str => !/mycomponents/.test(str) && exclude(str)) : exclude,
  ...rest
})), config);

рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ exclude рдХреЛ рдПрдХ рдХрд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ред
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред
рдореБрдЭреЗ node_modules/mycomponents рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ Next.js . рджреНрд╡рд╛рд░рд╛ рднреА рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдпрд╣ рддрдм рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрдм рдореИрдВ рдПрдХ рдЦрд╛рд▓реА рд╕рд░рдгреА рдХреЗ рд╕рд╛рде рд╕рднреА рдмрд╣рд┐рд╖реНрдХрд░рдгреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реВрдВ

exports.webpack = config => (config.module.rules = config.module.rules.map(({exclude, ...rest}) => ({
  exclude: [],
  ...rest
})), config);

рдХреГрдкрдпрд╛ рдореЗрд░реА рдорджрдж рдХрд░реЗрдВ :)
рдзрдиреНрдпрд╡рд╛рдж

рдЕрд░реЗ рджреЛрд╕реНрддреЛрдВ ( @thealjey ) рдореИрдВ рдорд╣реАрдиреЛрдВ рд╕реЗ jsnext:main рд╕рдВрдЪрд╛рд▓рд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

  • рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
    https://github.com/damianobarbati/react-app/blob/master/config/webpack.config.js#L66
    https://github.com/damianobarbati/react-app/blob/master/config/webpack.config.js#L203
    рдореВрд▓ рд░реВрдк рд╕реЗ рдпрд╣ рдХрд╣рддрд╛ рд╣реИ: рдпрджрд┐ jsnext:main package.json рдореЗрдВ рд╣реИ рддреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛ рдЬреЛ main рдореЗрдВ рд╣реИ рдЙрд╕реЗ рдЖрдпрд╛рдд рдХрд░реЗрдВ
  • рдПрдирдкреАрдПрдо рд╕реЗ рдЬреБрдбрд╝реЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорджрдж рдорд┐рд▓реЗрдЧреА:
    https://github.com/damianobarbati/react-app/blob/master/config/webpack.config.js#L168

рдореИрдВ next.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИред

@damianobarati рдирд╣реАрдВ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рдирд╣реАрдВ рд╣реИ
рдЬреЛ рдХреБрдЫ рднреА рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ рдЙрд╕реЗ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рд╡реЗрдмрдкреИрдХ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдХрд╛рдо рдХреЛ Next.js рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

рд╣реЗ рд╕рдм, рдХрд┐рд╕реА рдХреЛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ?

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдерд╛рдиреАрдп ES6 рд▓рд┐рдВрдХреНрдб рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЬрд┐рд╕реЗ рдореБрдЭреЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡реЗрдмрдкреИрдХ рд╡реВрдбреВ рд╕рд╣реА рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ!

рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдирд┐рд░реНрдорд╛рдг рдкрд░ рдмреЗрдмреЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдм рдХреБрдЫ рдЪрд▓рд╛рддреЗ рд╣реИрдВ:

next build && babel .next/*.js --out-dir . --presets=es2015,react

рдХреНрдпрд╛ рдпрд╣ рдорд░ рдЧрдпрд╛? рдореИрдВ рдПрдХ рдХрд╕реНрдЯрдо рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдвреВрдВрдв рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред

@mattfelten рдпрд╣ v5 . рдХреЗ рд░реЛрдбрдореИрдк рдкрд░ рд╣реИ

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рдордХрд╛рдЬ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ?

@timneutkens рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдордпрд░реЗрдЦрд╛ рд╣реИ? рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдЕрдХреНрд╕рд░ рдПрдХ рдЕрд╕рдВрднрд╡ рдкреНрд░рд╢реНрди рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЕрднреА рдХрд╛рдо рдкрд░ рдЕрдкрдиреЗ рдвреЗрд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдЕрд╡рд░реЛрдзрдХ рд╣реИ! :)

рд╕рдорд╛рдзрд╛рди рд╕реБрдЭрд╛рд╡ рднреА рдорд╛рдиреНрдп рд╣реИрдВред

@thealjey рдХреЛ рдПрд╣рд╕рд╛рд╕ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдкреБрд░рд╛рдиреА рдЯрд┐рдкреНрдкрдгреА рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рд╢рд╛рдпрдж рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ include рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ рдЬрд┐рд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЕрджреНрдпрддрди: рдЗрд╕ рд░рдгрдиреАрддрд┐ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЧрд▓реЗ.рдЬреЗрдПрд╕ рдХреЗ рдЖрдВрддрд░рд┐рдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рднреАрддрд░ рд╡рд┐рднрд┐рдиреНрди рдореЙрдбреНрдпреВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЛрдбрд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рд╕рдордЭрджрд╛рд░ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@chrisui рдореЗрд░рд╛ (рдЕрд╕реНрдерд╛рдпреА) рд╕рдорд╛рдзрд╛рди -рдкреНрд▓рдЧрдЗрди-рдореЙрдбреНрдпреВрд▓-рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛, рдЗрд╕ рддрд░рд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ - "plugins": [["module-resolver", {"root": ["./"]}]]
рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдПрдХ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди, рдЪреВрдВрдХрд┐ рдмрд╛рдХреА рд╕рдм рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдЕрднреА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдХрд┐ рдореБрдЭреЗ рдкреНрд░рддреНрдпреЗрдХ рдЖрдпрд╛рдд рдХреЗ рд╕рд╛рде ../ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

@thealjey рдХреНрдпрд╛ рдЖрдк рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗ рд╕рдХрддреЗ рд╣реИрдВ?
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрдЕрдк рд╣реИ рдЬрд╣рд╛рдВ рдореИрдВ рдЗрд╕реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд▓рд╛рдн рдХреЗ рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ ...
https://github.com/jamesgorrie/nappy

рдореИрдВ рдЦреБрд╢реА-рдЦреБрд╢реА рдПрдХ рдкреАрдЖрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рд╣рдорд╛рд░рд╛ рдЬреАрд╡рди рдЗрддрдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╕рд╡рд╛рд▓ рд╣реИрдВ рдЬреИрд╕реЗ: рдХреНрдпрд╛ next.js рдХреБрдЫ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдпрд╣ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рддрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди next.js рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХрд╛ рдЕрдзрд┐рдХ рд╕рдЦреНрддреА рд╕реЗ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИред next.js рд▓рд┐рдП рдирдП рдХреЗ рд░реВрдк рдореЗрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕рд╕реЗ рдкреВрдЫрдирд╛ рд╣реИ рдпрд╛ рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИред

рдпрд╣ v5 . рдХреЗ рд░реЛрдбрдореИрдк рдкрд░ рд╣реИ

@timneutkens рдиреЗ рдЗрд╕реЗ v5 рдореЗрдВ рдмрдирд╛рдпрд╛?

рдЬрд╛рдирдХрд░ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛ рд░рд╣рд╛ рд╣реИред

рдЬрд░рд╛ рджреЗрдЦрд┐рдП рдХрд┐ рдЗрд╕рдХрд╛ рд╡рд┐рд▓рдп рдХрд╣рд╛рдВ рд╣реБрдЖ рд╣реИред рдЗрд╕реЗ 8 рджрд┐рди рдкрд╣рд▓реЗ рдорд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред 5.0.0 2 рджрд┐рди рдкрд╣рд▓реЗ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреИрдирд░реА рд╢рд╛рдЦрд╛ рд╕реЗ рдЬрд╣рд╛рдВ рдЗрд╕реЗ рд╡рд┐рд▓рдп рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ...

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдЬреИрд╕рд╛ рдКрдкрд░ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

module.exports = {
    transpileModules: ['my-npm-module']
}

рдпрд╛ рдпрд╣ рдЕрд▓рдЧ рджрд┐рдЦрддрд╛ рд╣реИ?

рдореИрдВ рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдВред @timneutkens рдЙрдкрд░реЛрдХреНрдд рд▓рд┐рдВрдХ рдПрдХ рдкреАрдЖрд░ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдЕрднреА рднреА рдЦреБрд▓рд╛ рд╣реИред рдХреНрдпрд╛ рдЗрд╕реЗ рдЕрднреА рддрдХ v5 рдореЗрдВ рдорд░реНрдЬ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдкреАрдЖрд░ рд╣реИред

рдпрд╣ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЛ рдмрд┐рдирд╛ рдорд░реНрдЬ рдХрд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред transpileModules рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╣рдо рдмрд╛рдж рдореЗрдВ рдирд┐рдкрдЯреЗрдВрдЧреЗред

рдЕрдВрдЧреВрдареЗ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ: рдЬрдм рдХреЛрдИ рдореБрджреНрджрд╛ рдЦреБрд▓рд╛ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдЙрд╕реЗ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

@brianyingling рдореИрдВрдиреЗ рдПрдХ рдЕрдВрддрд░рд┐рдо рд╕рдорд╛рдзрд╛рди (рдХреЗрд╡рд▓ v5) рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред
рдпрд╣ рдЗрд╕ рд╕рдордп рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдЕрдзрд┐рдХ рдордЬрдмреВрдд, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ред

https://www.npmjs.com/package/@weco/next -plugin-transpile-modules

рдореБрдЭреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред

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

рдпрд╣рд╛рдБ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд░реЗрдкреНрд░реЛ рд╣реИ: https://github.com/statico/nextjs-with-async-lib

// pages/index.js
import { foo } from '../lib/test'
export default () => <div>hello {String(typeof foo)}</div>

// lib/test.js
async function foo () {}
module.exports = { foo }

@timneutkens рдореБрдЭреЗ рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╕рд╛рдЭрд╛ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ async/await рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди async/рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЛ рд╣рдЯрд╛рдирд╛ рдФрд░ рд╕рдм рдХреБрдЫ .then() -рд╕реНрдЯрд╛рдЗрд▓ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдареАрдХ рд╣реИ, рдореБрдЭреЗ рдПрдХ рдлрд┐рдХреНрд╕ рдорд┐рд▓рд╛ рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ config.resolve.symlinks = false рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рдЕрдкрдиреЗ next.config.js рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рддрд┐ https://github.com/zeit/next.js/issues/3018#issuecomment -380879576 рдореЗрдВ рдЬреЛрдбрд╝рд╛

// next.config.js
webpack: (config, { dev }) => {
  config.resolve.symlinks = false
  return config
}

рдлрд┐рд░ рдореИрдВрдиреЗ рдЕрдкрдиреА рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА - рдПрдХ .js рдлрд╝рд╛рдЗрд▓ рдЬреЛ рдХреЙрдордирдЬреЗрдПрд╕ рдирд┐рд░реНрдпрд╛рдд рдФрд░ async / await рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ - рдХреЛ shared рдирд╛рдордХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЙрдкрджрд┐рд░ рдореЗрдВ рд░рдЦрд╛:

// shared/index.js
async function foo () {}
module.exports = { foo }
// shared/package.json
{
  "name": "@myapp/shared",
  "version": "1.0.0",
  "main": "index.js",
  "license": "UNLICENSED",
  "private": true,
  "dependencies": { ... }
}

рдФрд░ рдЕрдВрдд рдореЗрдВ рдореИрдВрдиреЗ рдПрдХ postinstall рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЬрдм рдХреЛрдИ рднреА рдореБрдЦреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ yarn install рдХрд░рддрд╛ рд╣реИ:

// package.json
{
  ...
  "scripts": {
    "postinstall": "cd shared ; yarn -s unlink ; yarn link && yarn && cd .. && yarn link @myapp/shared",
   ...

рдЕрдм рдореЗрд░рд╛ рдореЛрдЪрд╛ рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ рдХреА рддрд░рдл рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ, рдореЗрд░рд╛ рдХрд╕реНрдЯрдо рдХреЛрдЖ рд╕рд░реНрд╡рд░ рдареАрдХ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдореЗрд░реЗ рдиреЗрдХреНрд╕реНрдЯрдЬреЗрдПрд╕ рдкреГрд╖реНрдареЛрдВ рдореЗрдВ рдХреЛрдИ рдФрд░ рдЕрдзрд┐рдХ рдкрд╛рдЧрд▓ Cannot assign to read only property 'exports' of object '#<Object>' рд╣реИред

рдиреЗрдХреНрд╕реНрдЯрдЬреЗрдПрд╕ 5.1.0 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереАред рдЕрдЧрд▓реЗ рдореЗрдВ рдПрдХ рдпрд╛ рджреЛ рдиреЛрдб рдореЙрдбреНрдпреВрд▓ IE11 рдореЗрдВ рд╡рд╕рд╛ рддреАрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рдереЗ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдлреЗрдВрдХ рд░рд╣реЗ рдереЗред рдореИрдВ рдкрд╣рд▓реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рд╕реЗрдЯ рдХрд░ рдЪреБрдХрд╛ рдерд╛ рдФрд░ рдЕрдВрдд рдореЗрдВ рдореИрдВрдиреЗ рдЕрдкрдиреЗ next.config.js рдЙрди рдореЙрдбреНрдпреВрд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ babel-polyfill рд╕рд╛рде рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛:

module.exports = {
  webpack: (config, { dev }) => {
    const polyfill = new Promise((resolve, reject) => {
      const originalEntry = config.entry

      originalEntry().then(entries => {
        if (entries['main.js']) {
          entries['main.js'].unshift('./client/polyfills.js')
          entries['main.js'].unshift('babel-polyfill')
        }
        config.entry = entries

        resolve()
      })
    })

    config.module.rules.push(
     {
        test: path.resolve('./node_modules/next/node_modules/'),
        loader: 'babel-loader',
        options: {
          babelrc: false,
          cacheDirectory: false,
          presets: ['es2015']  
        }
      }
    )

    return polyfill.then(() => { return config })
  }
}

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИред

рдИрдПрд╕рдПрдо рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

index.js рдореЗрдВ рдПрдХ рдХрд╕реНрдЯрдо рдиреЗрдХреНрд╕реНрдЯ.js рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде, рдореИрдВ рд╕рд░реНрд╡рд░ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ esm рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, Lerna-symlinked рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреИрдХреЗрдЬ рдореЗрдВ ES рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

node -r esm index.js

@ рдХрд░рди рдХреВрд▓, рдХреНрдпрд╛ рдпрд╣

@curran рдореИрдВ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ

@рдмреНрд▓реИрдХрдмрд┐рдВрдЧ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ред

@thealjey рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИ?

рдЕрдЧрд░ рдХреЛрдИ рддреНрд╡рд░рд┐рдд рдФрд░ рдЖрд╕рд╛рди рд╕рдорд╛рдзрд╛рди рдвреВрдВрдв рд░рд╣рд╛ рд╣реИ, рддреЛ рдореИрдВрдиреЗ рдпрд╣ рдХрд┐рдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдПрдХ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдИ, shared/ , рдХрд┐рд╕реА рднреА рдХреЛрдб рдХреЗ рд╕рд╛рде рд╣рдо рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдиреЛрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЗрдХреНрд╕реНрдЯрдЬреЗрдПрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреИрдХрдПрдВрдб рдкрд░ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдЕрдкрдирд╛ package.json рдФрд░ рдЗрд╕рдХрд╛ рдирд╛рдо @myproject/shared рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдлрд┐рд░, рдореБрдЦреНрдп (рдкреИрд░реЗрдВрдЯ) рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ, рдореИрдВрдиреЗ package.json рдПрдХ рдкреЛрд╕реНрдЯрдЗрдВрд╕реНрдЯреЙрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЗрд╕ рддрд░рд╣ рдЬреЛрдбрд╝рд╛: cd shared && yarn -s unlink >/dev/null 2>&1 ; yarn -s link && yarn -s && yarn link @myproject/shared - рдлрд┐рд░ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмрд╛рд░ yarn рдЪрд▓рд╛рдПрдВ, рдФрд░ рдЕрдкрдиреЗ рдЖрдпрд╛рдд рдХреЛ import { whatever } from '@myproject/shared/somefile' рдмрджрд▓реЗрдВ

рдЗрд╕ рддрд░рд╣ рд╕рд╛рдЭрд╛ рдХреЛрдб рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкрд╛рдЧрд▓ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓реЗрд╢рди рдЪрд░рдгреЛрдВ рдХреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЖрдкрдХреЛ yarn / npm рд╣рд░ рдмрд╛рд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ yarn link рдПрдХ рдмрдирд╛рддрд╛ рд╣реИ рд╕рд┐рдорд▓рд┐рдВрдХ

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, @weco/next-plugin-transpile-modules рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВрдиреЗ рдиреЗрдХреНрд╕реНрдЯ рдХреЗ withTypescript рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдВрдЯрд╛ рдмрдирд╛рдпрд╛: https://github.com/KeitIG/next-plugin-transpile-modules

рдореБрдЭреЗ рдЕрднреА рднреА рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдХреЛрдб рд╣реЛрдиреЗ рдкрд░ рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдареАрдХ рд╕реЗ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдЗрд╕ рдкрд░ рдХреЛрдИ рднреА рд╕рдорд╛рдЪрд╛рд░?

@bogdansoare рдореИрдВ https://github.com/KeitIG/next-plugin-transpile-modules рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

рдФрд░ рдлрд┐рд░ рднреА рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдФрд░, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рд░ рдореЗрдВред рдпрд╣ рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдФрд░ @scope рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рднреА рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред https://gist.github.com/trusktr/44400d0d016c506629b4f914799dc9cd

рдореИрдВрдиреЗ рдмрд╕ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХрд╛рдордХрд╛рдЬреА рдЙрджрд╛рд╣рд░рдг рд░рдЦрд╛ рд╣реИ рдЬреЛ esm рдФрд░ lerna

https://github.com/curran/nextjs-esm-example

/рд╕реАрд╕реА @jdalton

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд next.config.js рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ:

module.exports = {
  webpack: (config, options) => {
    config.module.rules.push({
      test: /\.js$/,
      include: /node_modules/,
      use: [
        options.defaultLoaders.babel
      ]
    })

    return config
  }
}

рдпрд╣ node_modules рдореЗрдВ рд╕рдм рдХреБрдЫ рдмреЗрдмреЗрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдИрдИ 11 рд╕рдВрдЧрддрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХ рдерд╛ ...

рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рднреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЧреИрд░-рдкрд╛рд░рджрд░реНрд╢реА рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдЕрднреА рдХреЗ рд▓рд┐рдП рд╡рд┐рдХреНрд░реЗрддрд╛ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдкрдбрд╝рд╛ :(
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧреБрд╕реНрд╕реЗ рд╡рд╛рд▓рд╛

@ Bel0v рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА next-plugin-transpile-modules рд╕рд╛рде рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред cc/ @timneutkens

рдореИрдВ рдЕрднреА рднреА рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЬреЗрдореА рдиреЗ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╡рд┐рд╕реНрддреГрдд рд╕реВрддреНрд░ рд▓рд┐рдЦрд╛: https://twitter.com/jamiebuilds/status/1080840492525350912

рдореИрдВрдиреЗ рдЬреЗрдореА рдХреЗ рд╕реВрддреНрд░ рдХреЛ рдкрдврд╝рд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдФрд░ рд╕рдорд╛рдзрд╛рди рдкрд░ рд╣реЗрдирд░реА рдЭреВ рдФрд░ рдмреЗрдмреЗрд▓ рдХреА рд░рд╛рдп рднреА рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
https://babeljs.io/blog/2018/06/26/on- Consumer-and-publishing-es2015+-packages

(рдЯрд┐рдо рдХреЗ рд╕рд╛рде рдЕрд╕рд╣рдордд рдирд╣реАрдВ, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдореИрдВ рдХрдИ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖реЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛ред рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдореЗрдВ рдЯрд┐рдо рдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ)

рд╣рд╛рдБ, рд╣рдо рдкрд┐рдЫрд▓реЗ рдЖрдзреЗ рд╕рд╛рд▓ рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдИ рд▓реЛрдЧреЛрдВ рд╕реЗ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╣реЗрдирд░реА . рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ

рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдпреЗ рдЪрд┐рдВрддрд╛рдПрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ

@dcalhoun рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореБрдЭреЗ рдЕрднреА рднреА рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЯреЛрдХрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдкрд░ рдПрдХ рдЦреБрд▓рд╛ рдЕрдЧрд▓рд╛ 7 рдореБрджреНрджрд╛ рд╣реИ рдЬреЛ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

@bel0v

рдЖрдкрдХреЛ рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди рдкрдврд╝рдиреЗ рдЪрд╛рд╣рд┐рдП;) рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ: https://github.com/martpie/next-plugin-transpile-modules#i -have-trouble-making-it-work-with-nextjs-7

рдореИрдВ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд▓рд╛ 7 рдЕрдВрдХ рдЕрдЬреАрдм рд╣реИ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдиреЗрдХреНрд╕реНрдЯ рдпрд╛ рдмреИрдмреЗрд▓ рд╕реЗ рдЖ рд░рд╣рд╛ рд╣реИ, рдореИрдВрдиреЗ рд╡реИрд╕реЗ рднреА рдпрд╣рд╛рдВ рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓рд╛: https://github.com/zeit/next.js/issues/5393

@martpie рд╣рд╛рдБ, рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ .. рд╡реИрд╕реЗ рднреА рдореИрдВ рдЗрд╕реЗ рдПрдХ рдФрд░ рдХреЛрд╢рд┐рд╢ рджреВрдВрдЧрд╛

@martpie рд╣рдордиреЗ рдПрдХ рд╕реБрд╕рдВрдЧрдд babel.config.js, рдФрд░ рдпрд╛рд░реНрди рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдХреЗ рд╕рд╛рде next7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг рд╕реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдореВрд▓ рдЙрджрд╛рд╣рд░рдг рдлреЛрд░реНрдХ рдХрд┐рдпрд╛ рд╣реИ
https://github.com/bel0v/learnnextjs-demo
рдЗрд╕рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдирд┐рд░реНрднрд░рддрд╛ (рд╡рд╛рдпрд░реНрдб-рдПрд▓рд┐рдореЗрдВрдЯреНрд╕) рд╕реНрдерд╛рдкрд┐рдд рдХреА, рдПрдХ рдмрд┐рд▓реНрдб рддреНрд░реБрдЯрд┐ Unhandled Rejection (SyntaxError): Unexpected token { рдорд┐рд▓реА рдФрд░ рдЗрд╕реЗ рд╕реБрдЭрд╛рдП рдЧрдП рддрд░реАрдХреЗ рд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред
рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдБ рдХрд┐ рд╢рд╛рдпрдж рдореБрдЭреЗ рдЗрд╕рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдмреЗрдмреЗрд▓ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ..

@ bel0v рдПрдлрдПрдХреНрдпреВ рдореЗрдВ рдлрд┐рд░ рд╕реЗ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рд╣реИ рдХрд┐ рд▓рд░реНрди рд╕реЗрдЯрдЕрдк рдХреНрдпреЛрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЯреАрдПрд▓, рдбреАрдЖрд░; рдЖрдк рд╢рд╛рдпрдж рдЧрд▓рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ)

@martpie рдЖрд╣, рд╕рдордЭ рдЧрдпрд╛! рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рд▓рд░реНрдирд╛ рдХреЗ рд╕рд╛рде рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреИрдХреЗрдЬ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА рдЧрдИ рдереАред рдзрдиреНрдпрд╡рд╛рдж

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ https://twitter.com/jamiebuilds рдХреЛ рдирд┐рд▓рдВрдмрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдм рд╡рд╣рд╛рдВ рдзрд╛рдЧрд╛ рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддрд╛ред #3018 рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реАрдХреЛрдВ рдкрд░ рдХреНрдпрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ?
рдХреНрдпрд╛ рдпреЗ рдЗрди рдпреВрдЬ-рдХреЗрд╕ рдПрдЯреАрдПрдо рдХреЗ рд▓рд┐рдП рдЕрддреНрдпрд╛рдзреБрдирд┐рдХ/рдиреЗрдХреНрд╕реНрдЯ.рдЬреЗрдПрд╕ рдХреА рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ?
https://github.com/curran/nextjs-esm-example
https://github.com/wellcometrust/next-plugin-transpile-modules
https://github.com/martpie/next-transpile-modules
https://github.com/zeit/next.js/tree/canary/examples/with-yarn-workspaces

рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк, рдореЗрд░реА рддрд░рд╣, рдПрдХ рдРрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕реЗ IE11 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рднреА рдХреЛрдб рдХреЛ node_modules/ рдХреЗ рдЕрдВрджрд░ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред Next.js 7.x рдореЗрдВ рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯрдЕрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рдЬрд┐рд╕рдиреЗ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕рдиреЗ рдиреЗрдХреНрд╕реНрдЯ.js 8.x рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣реЗ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдирд╣реАрдВ рдерд╛ред рдореИрдВ рддреЛ Next.js 8.x рдХреЗ рд▓рд┐рдП config рдиреАрдЪреЗ рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ рдореЗрдВ рдХреЛрдб transpiles рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛ node_modules/ рдХреЗ рд╕рд╛рде @babel/preset-env , рдФрд░ рдХреЛрдИ рдЕрдиреНрдп рдкреНрд▓рдЧ-рдЗрдиред

рдпрд╣ рдореЗрд░реА browserlist рд╕рдВрдкрддреНрддрд┐ рдХреЛ package.json рд╕реЗрдЯ рдХрд░рдХреЗ рд╕рдВрдпреБрдХреНрдд рд╣реИ:

  "browserslist": "defaults, IE >= 11, EDGE >= 14, Safari >= 11, Chrome >= 41, Firefox >= 52",

рдЕрдЧрд▓рд╛ 7.x

next.config.js

module.exports = {
  webpack: (config, options) => {
    config.module.rules.push({
      test: /\.js$/,
      include: /node_modules/,
      use: [
        options.defaultLoaders.babel,
      ],
    })

    return config
  },
}

рдЕрдЧрд▓рд╛.рдЬреЗрдПрд╕ 8.x

next.config.js

module.exports = {
  webpack: (config, options) => {
    config.module.rules.push({
      test: /\.js$/,
      include: /node_modules/,
      use: {
        loader: 'babel-loader',
        options: {
          presets: ['@babel/preset-env'],
          plugins: ['@babel/plugin-syntax-dynamic-import'],
        },
      },
    })

    return config
  },
}

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЭреЗ рдЕрднреА рддрдХ рдЗрд╕ рд╕реЗрдЯрдЕрдк рдХреЗ рд╕рд╛рде @babel/plugin-transform-runtime рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╢рд╛рдпрдж рдХреЛрдб рдореЗрдВ рдХреБрдЫ рд╕рд╣рд╛рдпрдХреЛрдВ рдХреЛ рдереВрдХ рджреЗрдЧрд╛ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ gzip рдЗрд╕рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦреЗрдЧрд╛


рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдпрд╣ рднрдпрд╛рдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ Next.js рд╣рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ transpile рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рджреЗ рд╕рдХрддрд╛ рд╣реИ node_modules/ рдЬреЛ рдХреБрдЫ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП browserlist рдЖрдкрдХреЗ рдкрд╛рд╕ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕реА рдХреЛрдИ рднреА рдмрдбрд╝реА рд╕рд╛рдЗрдЯ, рдЬрд┐рдирдореЗрдВ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВ, рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЛ рдареАрдХ рд╕реЗ рд╕рдорд░реНрдерди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВред

next-transpile-modules (@jamesgorrie рдХреЗ рд╢рд╛рдирджрд╛рд░ рдХрд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рдХреЗ рдЕрдиреБрд░рдХреНрд╖рдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдореБрдЭреЗ рдпрд╣рд╛рдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреА рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИред

рдореИрдВ рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рдкреЗрд╢реЗрд╡рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдПрдХ рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдЕрдм рддрдХ рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЦреЗрд▓рд╛ рд╣реИред

Next.js рд╕реЗ рдореВрд▓ рд╕рдорд░реНрдерди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╣реЛрдЧрд╛ рдФрд░ рдореБрдЭреЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ next рдкреИрдХреЗрдЬ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЯрд┐рдо рдХреЗ рдкрд╛рд╕ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рдереЗ рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд╣ рдЖрдЬрдорд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреАред

рдЪреАрдпрд░реНрд╕!

@martpie рдореИрдВрдиреЗ рдЬрд▓реНрджреА рд╕реЗ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рджреЗрдЦрд╛, рд▓реЗрдХрд┐рди _all_ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддреНрд╡рд░рд┐рдд рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛, рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ? я╕П

рд╕рд╛рде рд╣реА, рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдк options.defaultLoaders.babel рдЪреБрди рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдмреЗрдмреЗрд▓ рд▓реЛрдбрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред Next.js 8.x рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛ рдереА рдХрд┐ рдХреБрдЫ рдореЙрдбреНрдпреВрд▓ рдЙрд╕рдХреЗ рдмрд╛рдж CJS рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдареАрдХ рд╕реЗ рдкрд╣рдЪрд╛рдиреЗ рдЬрд╛рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рдЕрдиреНрдп libs рдЙрдиреНрд╣реЗрдВ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рдЙрджрд╛рд╣рд░рдг:

./pages/_glamor.js
Attempted import error: 'css' is not exported from 'glamor'.

./components/project-selector.js
Attempted import error: 'react-select/lib/Async' does not contain a default export (imported as 'AsyncSelect').

./node_modules/react-select/dist/react-select.esm.js
Attempted import error: 'react-input-autosize' does not contain a default export (imported as 'AutosizeInput').

./pages/signup/full.js
Attempted import error: 'react-select/lib/Creatable' does not contain a default export (imported as 'CreatableSelect').

./components/markdown-editor.js
Attempted import error: 'react-simplemde-editor' does not contain a default export (imported as 'SimpleMDEEditor').

./components/pagination.js
Attempted import error: 'react-js-pagination' does not contain a default export (imported as 'UpstreamPagination').

./node_modules/react-google-recaptcha/lib/es/recaptcha-wrapper.js
Attempted import error: 'react-async-script' does not contain a default export (imported as 'makeAsyncScriptLoader').

./pages/_glamor.js
Attempted import error: 'rehydrate' is not exported from 'glamor'.

рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ node_modules/ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рдмреЗрдмреЗрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛, рдЬреЛ рдХреЗрд╡рд▓ preset-env рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ Next.js- рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдЖрдк рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ?

рдЪреАрдпрд░реНрд╕

@LinusU рд╢рд╛рдпрдж transpileModules: ['(.*?)'] рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдФрд░ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рднрд╡рд┐рд╖реНрдп рдХреА рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдХрд╛рдо рди рдХрд░ рд░рд╣рд╛ рд╣реЛ, рдЗрд╕рд▓рд┐рдП рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВред

рдЕрдзрд┐рдХ рдЖрдо рддреМрд░ рдкрд░, рдореИрдВ рдкреВрд░реЗ node_modules рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ ("рдЕрддреНрдпрдзрд┐рдХ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд" рдкрдврд╝реЗрдВ), рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд╕рдордп рд▓рдЧреЗрдЧрд╛ рдФрд░ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ ES3-рд╕рдВрдЧрдд рдХреЛрдб (рдЗрд╕рд▓рд┐рдП IE11 рд╕рдВрдЧрдд) рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреЗрд╡рд▓ рдЙрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░реЗрдВ рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ! (рдЬреИрд╕реЗ lodash-es , рд╕реНрдерд╛рдиреАрдп рдореЙрдбреНрдпреВрд▓ рдЖрджрд┐...)

рд╕рдВрдХреБрд▓ рдХреЛ ES3-рд╕рдВрдЧрдд рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЗрд╕рд▓рд┐рдП IE11 рд╕рдВрдЧрдд)ред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ, рдФрд░ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рд╕реЗ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реВрдВред рдореЙрдбреНрдпреВрд▓ рд▓реЗрдЦрдХ рдХрднреА рдирд╣реАрдВ рдЬрд╛рди рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдореИрдВ рдХрд┐рди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдпрджрд┐ рд╡реЗ рдкреБрд░рд╛рдиреЗ рдХреЛрдб рднреЗрдЬрддреЗ рд╣реИрдВ рддреЛ рд╡реЗ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рджрдВрдбрд┐рдд рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд▓рдЧ рдЬрд╛рдПрдЧрд╛

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдереЛрдбрд╝рд╛ рдзреАрдорд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕рдХреЗ рдмрд╛рдж, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреГрд╖реНрда рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рддрддреНрдХрд╛рд▓ рдкреБрдирдГ рд▓реЛрдб рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред

рдХреЗрд╡рд▓ рдЙрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░реЗрдВ рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ!

рдЗрд╕рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдХреМрди рд╕реЗ рдкреИрдХреЗрдЬ IE11 рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИрдВ рдФрд░ рдХреМрди рд╕реЗ рдирд╣реАрдВ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдХрд┐рд╕реА рднреА рдирд┐рд░реНрднрд░рддрд╛ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдХреНрд╖рдгрд┐рдХ рдирд┐рд░реНрднрд░рддрд╛) рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕рдордп рдЕрджреНрдпрддрд┐рдд рд░рдЦрддреЗ рд╣реИрдВред рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рд╣реИ

рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ ESM рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдЬреЛ package.json module рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд╡реЗ рдЖрдорддреМрд░ рдкрд░ ES5 рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ ES6 рдЖрдпрд╛рдд/рдкреЗрдбрд╝ рд╣рд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдпрд╛рдд рд╣реЛрддрд╛ рд╣реИред рддреЛ рдпрд╣ рдПрдХ рдмрдВрдбрд▓рд░ (рд╡реЗрдмрдкреИрдХ) рдХрд╛ рдХрд╛рдо рд╣реИ, рди рдХрд┐ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ (рдмреЗрдмреЗрд▓) рдХреЗ рд▓рд┐рдП, рдЬрдм рддрдХ рдХрд┐ рдЕрдиреНрдпрдерд╛ рди рдХрд╣рд╛ рдЧрдпрд╛ рд╣реЛред рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА ESM рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП redux/es Redux рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ OP рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдпрджрд┐ рдЖрдк рдЗрд╕реЗ next.config.js : module.exports = { webpack: (config , рддреЛ config.module.rules рдореЗрдВ рдХреБрдЫ рдЪреАрдЬреЗрдВ рд╣реИрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдирд┐рдпрдо рдХреЛ рдмрджрд▓рдиреЗ рдпрд╛ рдПрдХ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? :

  { loader: 'babel-loader',
    include: '/Users/me/gh/guide/node_modules/next/dist/pages',
    options: 
     { babelrc: false,
       cacheDirectory: true,
       sourceMaps: 'both',
       plugins: [Object] } },
  { test: /\.js(\?[^?]*)?$/,
    loader: 'babel-loader',
    include: 
     [ '/Users/me/gh/guide',
       '/Users/me/gh/guide/node_modules/next/dist/pages' ],
    exclude: [Function: exclude],
    query: 
     { babelrc: true,
       cacheDirectory: true,
       sourceMaps: 'both',
       presets: [] } } ]

рд╕реБрдЭрд╛рдП рдЧрдП рд╕рд░рд▓ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

{
    test: /\.js(\?[^?]*)?$/,
    loader: 'babel-loader',
    include: [
        path.resolve(__dirname, './node_modules/next/dist/pages'),
    ],
    query: {
        cacheDirectory: true,
        sourceMaps: 'both',
        presets: ['@babel/preset-env'],
        plugins: ['@babel/plugin-proposal-object-rest-spread']
    }
},

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

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рдФрд░ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕рдорд╛рдзрд╛рди рдпрд╣рд╛рдВ рдЫреЛрдбрд╝рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд▓рд░реНрди рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

рд╕рд╛рдЭрд╛ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрд╡-рдкреНрд░рдХрд╛рд╢рд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдПрдВ рдЬреЛ рд╕реНрд░реЛрдд рдХреЛ рдПрдХ рдбрд┐рд╕реНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд▓рд┐рдВрдХ рдХрд░рддреЗ рд╕рдордп рд▓рд░реНрдирд╛ рдХреЛ рдбрд┐рд╕реНрдЯрд░реНрдм рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ:

// package.json
"main": "dist",
"scripts": {
  // I'm using the react-app preset because it's easy
  "prepublish": "babel --presets react-app --plugins @babel/plugin-transform-modules-commonjs src --out-dir dist"
},
// This instructs Lerna to use dist when symlinking
"publishConfig": {
  "directory": "dist"
}

рдЕрдм рдЬрдм рдЖрдк lerna bootstrap рдпрд╣ рдкреВрд░реНрд╡рдкреНрд░рдХрд╛рд╢рд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдЧрд╛ рдФрд░ рд╕реНрд░реЛрдд рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░реЗрдЧрд╛ рддрд╛рдХрд┐ рдЕрдЧрд▓рд╛ рдЗрд╕рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░ рд╕рдХреЗред

рдпрджрд┐ рдЖрдк lerna рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдк рдиреЗрдХреНрд╕реНрдЯ-рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓-рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдореНрд▓рд┐рдВрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрд╕ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ lerna рдХреЗ рд╕рд╛рде рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рдиреАрдЪреЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред

NextJs рдРрдкреНрд╕ рдореЗрдВ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░реЗ рдореЛрдиреЛ рд░реЗрдкреЛ рдореЗрдВ рдПрдХрд╛рдзрд┐рдХ рдиреЗрдХреНрд╕реНрдЯрдЬреЗ рдРрдкреНрд╕ рдХреЗ рдмреАрдЪ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рдФрд░ рдмрд░реНрддрдиреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп

// next.config.js
const aliasPathsToResolve = [
    { name: 'components', path: path.resolve(__dirname, './components') },
    { name: 'Common', path: path.resolve(__dirname, '../../common/react/') },
]
module.exports = () => {
    return  {
        webpack(config, { defaultLoaders }) {
            config.module.rules.push({
            test: /\.(js|jsx)$/,
            include: [path.resolve(__dirname, '../../common/react/')],
            use: [defaultLoaders.babel],
        })

            /** Resolve aliases */
        aliasPathsToResolve.forEach((module) => {
            config.resolve.alias[module.name] = module.path
        })
        }
    }
}

рдореИрдВ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЗ рд╕рдордп рдиреЗрдХреНрд╕реНрдЯрдЬреЗ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@ Lwdthe1 рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдХреЛрдб рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА:

TypeError: Cannot read property 'then' of undefined
    at getBaseWebpackConfig (/c2/wiz-frontend/packages/pipeline-view/node_modules/next/dist/build/webpack-config.js:85:25)
    at async Promise.all (index 0)
    at async HotReloader.start (/c2/wiz-frontend/packages/pipeline-view/node_modules/next/dist/server/hot-reloader.js:14:1675)
    at async DevServer.prepare (/c2/wiz-frontend/packages/pipeline-view/node_modules/next/dist/server/next-dev-server.js:7:223)
    at async /c2/wiz-frontend/packages/pipeline-view/node_modules/next/dist/cli/next-dev.js:22:359

рдХреБрдЫ рдЯреНрд╡рд┐рдХрд┐рдВрдЧ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдЖ:

const path = require("path");

const libPath = "../components/src"
const aliasPathsToResolve = [
  { name: "Common", path: path.resolve(__dirname, libPath) }
];

module.exports = {
  webpack: (config, { defaultLoaders }) => {
    config.module.rules.push({
      test: /\.(js|jsx)$/,
      include: [path.resolve(__dirname, libPath)],
      use: [defaultLoaders.babel]
    });

    /** Resolve aliases */
    aliasPathsToResolve.forEach(module => {
      config.resolve.alias[module.name] = module.path;
    });
    return config
  }
};

рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рддреНрд░реБрдЯрд┐ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛:

export { default as NavBar } from "./NavBar/NavBar"
^^^^^^

SyntaxError: Unexpected token 'export'
    at wrapSafe (internal/modules/cjs/loader.js:1055:16)
    at Module._compile (internal/modules/cjs/loader.js:1103:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1159:10)
....

рдЬрд┐рд╕рдХрд╛ рд╕рд╛рдордирд╛ рдкрд╣рд▓реЗ #2850 рдФрд░ #883 рдореЗрдВ рд╣реЛ рдЪреБрдХрд╛ рд╣реИред

рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рд╣реИ: https://github.com/martpie/next-transpile-modules#but -i-really-need-to-make-it-work-with-lerna

рдореИрдВрдиреЗ рдЬреЛ рд╕реБрдирд╛ рд╣реИ, рдЙрд╕рдореЗрдВ рд╕реЗ RFC рдЬрд▓реНрдж рд╣реА рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ Next.js рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдЗрд╕реЗ рдЕрднреА рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдореИрдВрдиреЗ https://github.com/ рд╕реЗ рдЕрдкрдирд╛ рд╕рдорд╛рдзрд╛рди npm рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рд╣реИред

    "next": "npm:@sheerun/[email protected]",

рдФрд░ next.config.js рдХреЗ рдмрд╛рдж:

  babelIncludeRegexes: [/turf/],

(рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореБрдЭреЗ рдмреИрдмреЗрд▓ рдХреЗ рд╕рд╛рде рдкреВрд░реНрд╡-рд╕рдВрдХрд▓рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЯрд░реНрдл рдлрд╛рдЗрд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА)

рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рд╣реБрдИ рд╣реИ?

рдореИрдВ next.js 9.2.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди babelIncludeRegexes рд╡рд┐рдХрд▓реНрдк рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ

рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рд╣реБрдИ рд╣реИ?

next-transpile-modules рд▓рдХреНрд╖реНрдп рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рд╕реЗ рд╣рд▓ рдХрд░рдирд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕реЗ рдЖрдЬрдорд╛рдпрд╛?

рд╣рд╛рдп @martpie ,

рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди .babelrc рдлрд╝рд╛рдЗрд▓ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВред рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реВрдВ

рдзрдиреНрдпрд╡рд╛рдж

@martpie рдореИрдВ next-transpile-modules рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдЬрдм рдореИрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдиреАрдЪреЗ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред рдореИрдВ рд╕рд╛рдЭрд╛ рдХреЛрдбрдмреЗрд╕ рдХреЗ рд╕рд╛рде рдореЛрдиреЛрд░реЗрдкреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред '@myapp/shared/components/componentname.js' рдЬреИрд╕реЗ рд╕рд╛рдЭрд╛ рд╕реЗ рдШрдЯрдХреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВ nextjs 9.x рдФрд░ рдХрд╕реНрдЯрдо next.config.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рддреНрд░реБрдЯрд┐
`
рдореЙрдбреНрдпреВрд▓ рдкрд╛рд░реНрд╕ рд╡рд┐рдлрд▓: рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдЯреЛрдХрди (12:4)
рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рдЙрдкрдпреБрдХреНрдд рд▓реЛрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд▓реЛрдбрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рджреЗрдЦреЗрдВ https://webpack.js.org/concepts#loaders
| рдХреЙрдиреНрд╕реНрдЯ рд╕реНрдкрд┐рдирд░ = рдкреНрд░реЙрдкреНрд╕ => {
| рдХреЙрдиреНрд╕ рд░реЗрдВрдбрд░рдбрд┐рдлреЙрд▓реНрдЯрд╕реНрдкрд┐рдирд░ = (рд╕реНрдкрд┐рдирд░ рдХреНрд▓рд╛рд╕, {...рдЕрдиреНрдп}) => (
>


| );
|

рдирд┐рд░реНрдорд╛рдг рддреНрд░реБрдЯрд┐ рд╣реБрдИ
рддреНрд░реБрдЯрд┐: > рд╡реЗрдмрдкреИрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рдирд┐рд░реНрдорд╛рдг рд╡рд┐рдлрд▓ рд░рд╣рд╛
`

рдЕрдЧрд▓рд╛.config.js
const withTM = require('next-transpile-modules')(['<strong i="26">@myapp</strong>']); module.exports = withPlugins([withTM, withBundleAnalyzer], { ... }

рдХреГрдкрдпрд╛ рдорджрдж рдХрд░реЗрдВ рдХрд┐ рдореИрдВ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБред

@ raghav1086 рдХреНрдпрд╛ рдЖрдк рд░реЗрдкреЛ рдкрд░ рдХреЛрдИ рдореБрджреНрджрд╛ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ? ;) рдпрд╣ рдпрд╣рд╛рдВ рдХреЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╢реЛрд░ рд╕реЗ рдмрдЪ рдЬрд╛рдПрдЧрд╛ред

+1

рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП src/ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИ рдФрд░ рд╕реНрдЯрд╛рд░реНрдЯрд░ рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП lib/ рдЬреЛ рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рдмрд░реНрддрдиреЛрдВ/рд░реИрдкрд░реЛрдВ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдХреБрдЫ рдЕрд▓рдЧ рдЕрдЧрд▓реЗ рдРрдкреНрд╕ (рдореЗрд░рд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ) рдореЗрдВ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

рдЬрдм рдореИрдВ рджреЗрд╡ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ lib рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИред lib рд╕реЗ рдХреЛрдИ рднреА рдШрдЯрдХ/рд▓реЛрдбрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ

рдореИрдВрдиреЗ рдЙрдкрд░реЛрдХреНрдд рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ src рдФрд░ lib рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @ Lwdthe1 рдХреЗ рд╕рдорд╛рдзрд╛рди (https://github.com/zeit/next.js/issues/706#issuecomment-569041997) рдХреА рднрд┐рдиреНрдирддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рд╣реА рдЪреАрдЬрд╝ aliasPathsToResolve рд╕рд░рдгреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реВрдкрд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп config.resolve.modules рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред

  webpack: (config, options) => {
    config.resolve.modules = [
      './src/',
      './lib/',
      'node_modules'
    ];

    config.module.rules.push({
      test: /\.(js|jsx)$/,
      include: [path.resolve(__dirname, './lib/')],
      use: [options.defaultLoaders.babel],
    });

рдЗрди рджрд┐рдиреЛрдВ рд▓рд░реНрди, рдиреЗрдХреНрд╕реНрдЯрдЬ рдФрд░ рдмреЗрдмреЗрд▓ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рдХреНрдпрд╛ рд╣реИ?

рдореИрдВ рдЖрдпрд╛рдд рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдкреВрд░реНрд╡-рдкрд╛рд░рджрд░реНрд╢реА рд╕реЗ рдмрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рд╣рд░ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рдИрдВрдЯ рдХреА рджреАрд╡рд╛рд░ рдорд╛рд░рд╛ рд╣реИред рдпрд╣рд╛рдБ рд╡рд╣ рд╣реИ рдЬреЛ рдореИрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛:

  • next-transpile-modules ред
  • рдкреНрд░реАрд╕реЗрдЯ-рдПрдирд╡реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдирд╛ред
  • рдХреНрд░рдорд╢рдГ рдкрд╛рд╕/рдЕрд╕рдлрд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП next-babel-loader include рдФрд░ exclude рдирд┐рдпрдореЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ред

@mikestopcontinues next-transpile-modules рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд┐рдпрд╛ред

@calebmpeterson рдФрд░ @martpie (рдореИрдВ рддреБрдореНрд╣реЗрдВ рджреЗрдЦрддрд╛ рд╣реВрдБ! )ред рдореИрдВрдиреЗ рдкреНрд▓рдЧ рдкрд░ рд╡рд╛рдкрд╕ рдЪрдХреНрдХрд░ рд▓рдЧрд╛рдпрд╛, рдФрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ рдХрд┐ рдЙрдк-рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреИрдЯрд░реНрди '@ рдореЛрдиреЛ/рдШрдЯрдХ' '@ рдореЛрдиреЛ/рдШрдЯрдХ/рдбрд┐рд╡' рдпрд╛ рдЬреЛ рдХреБрдЫ рднреА рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдФрд░ рдкреИрдЯрд░реНрди рдХреЗ рд░реВрдк рдореЗрдВ '@ рдореЛрдиреЛ/рдШрдЯрдХ/рдбрд┐рд╡' рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдпрд╛ рддреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ... рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕рд╛рдЭрд╛ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдореИрдЪ рдкреИрдЯрд░реНрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЗрдЧреЗрдХреНрд╕ рдкреАрдврд╝реА рдХреЛ рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХрд░рдиреЗ рдХреА рднреА рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ рдЬрдм рдЖрдЙрдЯрдкреБрдЯ рд░реЗрдЧреЗрдХреНрд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдХреБрдЫ рдФрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИред

рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдореИрдВ рд╣рд░ рдЪреАрдЬ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП '@mono' рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдФрд░ рдЕрдкрдиреЗ package.json рдХреЛ рд╕рдЪреНрдЪрд╛рдИ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕реНрд░реЛрдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛, рдЬрд┐рд╕ рдкрд░ рдореЗрд░рд╛ рдкреНрд░рддреНрдпреЗрдХ рдРрдк рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕реА рддрд░рд╣, рдореИрдВ рдЗрдВрдбреЗрдХреНрд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рд╕рдм-рдореЙрдбреНрдпреВрд▓ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкреНрд░рддреНрдпреЗрдХ lib рдореЗрдВ рд╕рдмрдХреБрдЫ рдЖрдпрд╛рдд/рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВред

рд╡рд╛рдкрд╕ рд╕рд░реНрдХрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдореМрдЬреВрджрд╛ рдореБрджреНрджреЗ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ rootMode: 'upward' рдХреЛ next-babel-loader рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдерд╛, рддрд╛рдХрд┐ рдмреЗрдмреЗрд▓ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд┐рдВрдЧ рддрд░реНрдХ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХреЗред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдиреНрдп рдиреЗрдХреНрд╕реНрдЯ-рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ рдХреЛ рдЦреЛрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдХреА рдЬрдбрд╝ рдЕрд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ рдЕрдЧрд▓рд╛ рд╡реЗрдмрдкреИрдХ рдФрд░ рдмреЗрдмреЗрд▓ рдореЗрдВ рдЙрд▓рдЭрд╛ рд╣реБрдЖ рд╣реИред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, babel-loader рдХреЛ рдиреЗрдХреНрд╕реНрдЯ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ рд╕реЗ рдЕрд▓рдЧ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

next-transpile-modules рдореЛрд░реНрдЪреЗ рдкрд░ рдмрд╕ рдПрдХ рдЕрдкрдбреЗрдЯред рдореИрдВрдиреЗ рддреНрд░реБрдЯрд┐ рдХрд╛ рдЧрд▓рдд рдирд┐рджрд╛рди рдХрд┐рдпрд╛ рдерд╛ред рдпрджрд┐ рдЖрдкрдХреЛ рдХрд╕реНрдЯрдо .babelrc рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдЗрд╕ рд╡рд┐рдзрд┐ (рдЗрдВрдбреЗрдХреНрд╕ рдпрд╛ рд╕рдмрдореЙрдбреНрдпреВрд▓) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдИ рдЖрдпрд╛рдд рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХрд╕реНрдЯрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред рдпрд╣ рдлрд┐рд░ рд╕реЗ рдПрдХ rootMode: 'upward' рдореБрджреНрджрд╛ рд╣реИред

@mikestopcontinues рдЖрдкрдХреЛ babel.config.js (рд╡реИрд╢реНрд╡рд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди) рдХрд╛ рдЙрдкрдпреЛрдЧ next-transpile-modules , рди рдХрд┐ .babelrc (рд╕реНрдерд╛рдиреАрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди), рдпрд╣ рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди рдореЗрдВ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ;)

@martpie рдЖрдкрдХреЛ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореИрдВ рдХрд┐рддрдирд╛ рд╢рд░реНрдорд┐рдВрджрд╛ рд╣реВрдВред рдореБрдЭреЗ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╣рдлреНрддреЛрдВ рдореЗрдВ рдЙрд╕ рдкрдВрдХреНрддрд┐ рдХреЛ рдПрдХ рджрд░реНрдЬрди рдмрд╛рд░ рдкрдврд╝рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрднреА рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рд╣реБрдЖред рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ред рдзрдиреНрдпрд╡рд╛рдж!

рдиреЗрдХреНрд╕реНрдЯ-рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓-рдореЙрдбреНрдпреВрд▓ рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдХреЛ рддреЛрдбрд╝ рджрд┐рдпрд╛ред рдпрд╣ рдЕрдм рдлреЗрдВрдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдорд╛рдиреНрдп рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЬрдмрдХрд┐ рдореИрдВрдиреЗ рддреАрди рдЙрджрд╛рд╣рд░рдг рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ

рдХреНрдпрд╛ рдХреЛрдИ рдкреБрди: рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓реЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреНрдпрд╛ рд╣реИред рдореБрдЭреЗ рд╡рд╣ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рдЬреЛ рдореБрдЭреЗ babel.config.js . рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╣реИ

@masbaehr рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рд┐рд░реНрдл next-transpile-modules рдХреЛ рдЕрдкрдиреЗ next.config рд╕реЗрдЯрдЕрдк рдореЗрдВ рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ

рдПрдХрдорд╛рддреНрд░ рдореБрджреНрджрд╛ next-transpile-modules рдпрд╛рд░реНрди 2 рдкреАрдПрдирдкреА рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

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

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

olifante picture olifante  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jesselee34 picture jesselee34  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kenji4569 picture kenji4569  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

irrigator picture irrigator  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

formula349 picture formula349  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ