рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдФрд░ рдмрдврд╝рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╕рдордп рднреА рдмрдврд╝рддрд╛ рд╣реИ - рд╡рд┐рдХрд╛рд╕ рдореЛрдб рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рджреМрд░рд╛рди "рдардВрдб" рдЙрддреНрдкрд╛рджрди рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рджреМрд░рд╛рди рджрд╕рд┐рдпреЛрдВ рдорд┐рдирдЯред рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред рд╣рдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдмрдВрдбрд▓ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддреЗ рд╕рдордп рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдЖрд╡реЗрджрди рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдЖрдИрдбреАрдИ рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордпред
рдЗрд╕реЗ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдП? рдмрд┐рд▓реНрдб рдЯрд╛рдЗрдо рдХреЛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдпрд╣ рдЖрд▓реЗрдЦ рд╡реЗрдмрдкреИрдХ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдореЗрдВ рд╡рд┐рдзрд╛рдирд╕рднрд╛, рдЙрдирдХреЗ рдЕрдиреБрднрд╡ рдФрд░ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЕрд╡рд▓реЛрдХрди рд╣реИред
рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдФрд░ рдЖрд╡реЗрджрди рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдирд╣реАрдВ рдорд╛рдирд╛ рдЧрдпрд╛ рд╣реИред
рдкрд░рд┐рдпреЛрдЬрдирд╛, рдЬрд┐рд╕рдХреЗ рд╕рдВрджрд░реНрдн рдкрд╛рда рдореЗрдВ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреА рдЧрддрд┐ рдХрд╛ рдорд╛рдкрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЗрдПрд╕ + рдлреНрд▓реЛ + рд░рд┐рдПрдХреНрдЯ + рд░реЗрдбрдПрдХреНрд╕ рд╕реНрдЯреИрдХ рдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡реЗрдмрдкреИрдХ, рдмреИрдмреЗрд▓, рдкреЛрд╕реНрдЯрд╕реАрдПрд╕рдПрд╕, рд╕реИрд╕, рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд▓рдЧрднрдЧ 30 рд╣рдЬрд╛рд░ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред рдХреЛрдб рдФрд░ 1,500 рдореЙрдбреНрдпреВрд▓ рдХреА рд▓рд╛рдЗрдиреЗрдВред рдЕрдкреНрд░реИрд▓ 2019 рддрдХ рдирд┐рд░реНрднрд░рддрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЪрд╛рд▓реВ рд╣реИрдВред
рдЕрдзреНрдпрдпрди рд╡рд┐рдВрдбреЛрдЬ 10, Node.js 8, 4-рдХреЛрд░ рдкреНрд░реЛрд╕реЗрд╕рд░, 8 рдЬреАрдмреА рдореЗрдореЛрд░реА рдФрд░ рдПрд╕рдПрд╕рдбреА рдХреЗ рд╕рд╛рде рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдХрд┐рдП рдЧрдП рдереЗред
рд╢рдмреНрджрд╛рд╡рд▓реА
- рдЕрд╕реЗрдВрдмрд▓реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕рд╛рде рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВред
- рджреЗрд╡-рдореЛрдб - рд╡рд┐рдХрд▓реНрдк
mode: 'development'
рд╕рд╛рде рдЕрд╕реЗрдВрдмрд▓реА mode: 'development'
, рдЖрдорддреМрд░ рдкрд░ рд╡реЗрдмрдкреИрдХ-рджреЗрд╡-рд╕рд░реНрд╡рд░ рдФрд░ рд╡реЙрдЪ-рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдПред mode: 'production'
-рдореЛрдб - рдЕрд╕реЗрдВрдмрд▓реА рд╡рд┐рде рдСрдкреНрд╢рди mode: 'production'
, рдЖрдорддреМрд░ рдкрд░ рдмрдВрдбрд▓ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕реЗрдЯ рдХреЗ рд╕рд╛рдеред- рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдирд┐рд░реНрдорд╛рдг - рджреЗрд╡-рдореЛрдб рдореЗрдВ: рдХреЗрд╡рд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред
- "рдХреЛрд▓реНрдб" рдмрд┐рд▓реНрдб - рдЦрд░реЛрдВрдЪ рд╕реЗ рдирд┐рд░реНрдорд╛рдг, рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХреИрд╢ рдХреЗ, рд▓реЗрдХрд┐рди рд╕реНрдерд╛рдкрд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рдеред
рдХреИрд╢рд┐рдВрдЧ
рдХреИрд╢рд┐рдВрдЧ рдЖрдкрдХреЛ рдЖрдЧреЗ рдХреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЧрдгрдирд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдХреИрд╢рд┐рдВрдЧ рдХреЗ рдУрд╡рд░рд╣реЗрдб рдХреЗ рдХрд╛рд░рдг рдкрд╣рд▓реА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕рд╛рдорд╛рдиреНрдп рд╕реЗ рдереЛрдбрд╝реА рдзреАрдореА рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг рдмрд╛рдж рд╡рд╛рд▓реЗ рдмрд╣реБрдд рддреЗрдЬ рд╣реЛрдВрдЧреЗред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╡реЙрдЪ рдореЛрдб рдореЗрдВ рд╡реЗрдмрдкреИрдХ рдЗрди-рдореЗрдореЛрд░реА рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдмрд┐рд▓реНрдб рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╣рд░ рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рде рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЗрдХрдЯреНрдард╛ рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдмрд┐рд▓реНрдб (рд╡реЙрдЪ рдореЛрдб рдореЗрдВ рдирд╣реАрдВ) рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕реЗрдЯрд┐рдВрдЧ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддреА рд╣реИред рдЖрдк рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдЦреЛрдЬ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╢ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХрд╛ рднреА рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рд╕реЗрдЯрд┐рдВрдЧ рдХрд╛ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдкреНрд░рднрд╛рд╡ рд╣реИ рдпрд╛ рдирд╣реАрдВред
рд╡реЗрдмрдкреИрдХ рдореЗрдВ рдХреЛрдИ рдирд┐рд░рдВрддрд░ (рдбрд┐рд╕реНрдХ рдпрд╛ рдЕрдиреНрдп рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рд▓рд┐рдП рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛) рдХреИрд╢ рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рдЗрд╕реЗ рд╕рдВрд╕реНрдХрд░рдг 5 рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддреЗ рд╣реИрдВ ред рдЗрд╕ рдмреАрдЪ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- TerserWebpackPlugin рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдХреИрд╢рд┐рдВрдЧ
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдоред рдЕрдХреЗрд▓реЗ рднреА рдЗрд╕рдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИ: 60.7 s тЖТ 39 s (-36%), рдЕрдиреНрдп рдХреИрд╢рд┐рдВрдЧ рдЯреВрд▓ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:
optimization: { minimizer: [ new TerserJsPlugin({ terserOptions: { ... }, cache: true }) ] }
- рдХреИрд╢ рд▓реЛрдбрд░
рдХреИрд╢-рд▓реЛрдбрд░ рдХреЛ рд▓реЛрдбрд░ рдХреА рдХрд┐рд╕реА рднреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкрд┐рдЫрд▓реЗ рд▓реЛрдбрд░ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдХреИрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рдХреИрд╢ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдореЗрдВ .cache-рд▓реЛрдбрд░ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рд╣реЗрдЬрддрд╛ рд╣реИред рд▓реЛрдбрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ cacheDirectory
рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдкрде рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:
{ test: /\.js$/, use: [ { loader: 'cache-loader', options: { cacheDirectory: path.resolve( __dirname, 'node_modules/.cache/cache-loader' ), }, }, 'babel-loader' ] }
рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рдорд╛рдзрд╛рдиред рдпрд╣ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рд▓реЛрдбрд░ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдмреЗрдмрд▓-рд▓реЛрдбрд░, рдЯреАрдПрд╕-рд▓реЛрдбрд░), рд╢реИрд▓рд┐рдпреЛрдВ (рдПрд╕рд╕реАрдПрд╕-, рдХрдо-, рдкреЛрд╕реНрдЯрд╕реНрдХреИрд╕-, рд╕реАрдПрд╕рдПрд╕-рд▓реЛрдбрд░), рдЫрд╡рд┐рдпреЛрдВ рдФрд░ рдлреЛрдВрдЯ (рдЫрд╡рд┐-рд╡реЗрдмрдкреИрдХ-рд▓реЛрдбрд░, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдПрд╕рд╡реАрдЬреА) рдХреЗ рд▓рд┐рдП рд▓реЛрдбрд░, рдлрд╝рд╛рдЗрд▓-рд▓реЛрдбрд░), рдЖрджрд┐ред
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ:
- рд╕реНрдЯрд╛рдЗрд▓-рд▓реЛрдбрд░ рдпрд╛ MiniCssExtractPlugin.loader рдХреЗ рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдХреИрд╢-рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЗрд╕реЗ рдЙрдирдХреЗ рдмрд╛рдж рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
['style-loader', 'cache-loader', 'css-loader', ...]
ред - рдХреЗрд╡рд▓ рд╢реНрд░рдорд╕рд╛рдзреНрдп рдЧрдгрдирд╛рдУрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ "рд▓рд╛рдЗрдЯрд░" рд▓реЛрдбрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд▓реЗрдХрд┐рди рдФрд╕рдд рджрд░реНрдЬреЗ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИ - рдЖрдкрдХреЛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдФрд░ рдорд╛рдкрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдо:
- рджреЗрд╡: рейрел.рел s тЖТ (рдХреИрд╢-рд▓реЛрдбрд░ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ) тЖТ рейрем.реи рдПрд╕ (+ реи%) тЖТ (reassembly) тЖТ 7.9 рдПрд╕ (-78%)
- рдареЗрд╕: 60.6 s тЖТ (рдХреИрд╢-рд▓реЛрдбрд░ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ) тЖТ 61.5 s (+ 1.5%) тЖТ (reassembly) тЖТ 30.6 s (-49%) тЖТ тЖТ (Terser рдХреЗ рд▓рд┐рдП рдХреИрд╢ рдЪрд╛рд▓реВ рдХрд░реЗрдВ) тЖТ 15 4 s (-75%)
- рд╣рд╛рд░реНрдбрд╕реЛрд░реНрд╕рд╡реЗрдмрдкреИрдХ рд▓реБрдЧрд┐рди
рд▓реЛрдбрд░ рдХреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХреЗ рдмрдЬрд╛рдп рд╕рдВрдкреВрд░реНрдг рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕реНрддрд░ рдкрд░ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд╛рд▓ рдФрд░ "рд╕реНрдорд╛рд░реНрдЯ" рд╕рдорд╛рдзрд╛рдиред рдореВрд▓ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдкреНрд▓рдЧрдЗрди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ рдЬреЛ рдЕрдзрд┐рдХрддрдо рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рд╕реЗ рдбрд░рддреЗ рдирд╣реАрдВ рд╣реИрдВред
plugins: [ ..., new HardSourceWebpackPlugin() ]
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЙрдиреНрдирдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рд╕рдВрднрд╡ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпреБрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рдкреНрд▓рдЧ-рдЗрди рдСрдкрд░реЗрд╢рди рдХреЛ рдЪрд╛рд▓реВ рдЖрдзрд╛рд░ рдкрд░ рд░рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдФрд░ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдореЛрдб рдореЗрдВ рдЗрд╕рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред
рдкрд░рд┐рдгрд╛рдо:
- рджреЗрд╡: рейрел.рел s тЖТ (рдкреНрд▓рдЧрдЗрди рд╕рдХреНрд╖рдо рдХрд░реЗрдВ) тЖТ рейрем.рел s (+ рей%) тЖТ (reassembly) тЖТ 3.7 рдПрд╕ (-90%)
- рдареЗрд╕: 60.6 s тЖТ (рдкреНрд▓рдЧрдЗрди рдЪрд╛рд▓реВ рдХрд░реЗрдВ) тЖТ 69.5 s (+ 15%) тЖТ (reassembly) тЖТ 25 s (-59%) тЖТ (рдЯрд╕рд░ рдХреЗ рд▓рд┐рдП рдХреИрд╢ рдЪрд╛рд▓реВ рдХрд░реЗрдВ) тЖТ 10 s (-83%)
рдкреЗрд╢реЗрд╡рд░реЛрдВ:
- рдХреИрд╢-рд▓реЛрдбрд░ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдореЗрдВ, рдпрд╣ рдлрд┐рд░ рд╕реЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЛ рднреА рддреЗрдЬ рдХрд░рддрд╛ рд╣реИ;
- рдЗрд╕реЗ рдХреИрд╢-рд▓реЛрдбрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдШреЛрд╖рдгрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рд╡рд┐рдкрдХреНрд╖:
- рдХреИрд╢-рд▓реЛрдбрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдпрд╣ рдкрд╣рд▓реЗ рдмрд┐рд▓реНрдб рдХреЛ рдЕрдзрд┐рдХ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИ (рдЬрдм рдХреЛрдИ рдбрд┐рд╕реНрдХ рдХреИрд╢ рдирд╣реАрдВ рд╣реИ);
- рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рдордп рдХреЛ рдереЛрдбрд╝рд╛ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ;
- рд╡реЗрдмрдкреИрдХ-рджреЗрд╡-рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рдХреИрд╢ рдкреГрдердХреНрдХрд░рдг рдФрд░ рдЕрдорд╛рдиреНрдпрдХрд░рдг ( рдкреНрд░рд▓реЗрдЦрди рджреЗрдЦреЗрдВ) рдХреЗ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ;
- GitHub рдкрд░ рдмрдЧ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдореБрджреНрджреЗ ред
- рдХреЛрд▓рд╛рд╣рд▓-рд▓реЛрдбрд░ рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдХреИрд╢рд┐рдВрдЧ ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдоред рдкреНрд░рднрд╛рд╡ рдХреИрд╢-рд▓реЛрдбрд░ рд╕реЗ рдХрдИ рдкреНрд░рддрд┐рд╢рдд рдЕрдзрд┐рдХ рдЦрд░рд╛рдм рд╣реИред
- рдПрд╕реНрд▓рд┐рдВрдЯ-рд▓реЛрдбрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдХреИрд╢рд┐рдВрдЧ ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдоред рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреИрд╢ рдЖрдкрдХреЛ reassembly рдХреЗ рджреМрд░рд╛рди рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрд╕реНрддрд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдХреИрд╢-рд▓реЛрдбрд░ рдпрд╛ рд╣рд╛рд░реНрдбрд╕реЛрд░реНрд╕рд╡реЗрдмрдкреИрдХрд▓реБрдЧрд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЕрдиреНрдп рдкреНрд▓рдЧрдЗрдиреНрд╕ рдпрд╛ рд▓реЛрдбрд░реЛрдВ рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреИрд╢рд┐рдВрдЧ рддрдВрддреНрд░ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдЯрд░реНрд╕рд░рд╡реЗрдмрдкреИрдХрд▓реБрдЧрд┐рди рдХреЛ рдЫреЛрдбрд╝рдХрд░), рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдмрд╛рд░-рдмрд╛рд░ рдФрд░ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдмрд┐рд▓реНрдб рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ "рдардВрдбрд╛" рд╡рд╛рд▓реЗ рднреА рдзреАрдорд╛ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдЕрдЧрд░ рдХреИрд╢рд╕реНрд╡рд░реНрдмрдкреИрдХрдкреНрд▓рдЧрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╣реИ, рддреЛ рдпрд╣ рдХреИрд╢-рд▓реЛрдбрд░ рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред
рдХреИрд╢рд┐рдВрдЧ рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╢реНрди рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:
рдХреИрд╢рд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдХрд╣рд╛рдБ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?
node_modules/.cache/<_>/
рдЖрдорддреМрд░ рдкрд░ node_modules/.cache/<_>/
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдХрд░рдг рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕ рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЖрдк рдХреИрд╢ рдХреЛ рдХрд╣реАрдВ рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЗрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
рдХреИрд╢ рдХреЛ рдХрдм рдФрд░ рдХреИрд╕реЗ рдЕрдорд╛рдиреНрдп рдХрд░рдирд╛ рд╣реИ?
рдмрд┐рд▓реНрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдХреИрд╢ рдХреЛ рдлреНрд▓рд╢ рдХрд░рдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЬреЛ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣рд╛рдирд┐рдХрд╛рд░рдХ рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рдЕрдЬреНрдЮрд╛рдд рдкреНрд░рдХреГрддрд┐ рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред
рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░рдХ:
- рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдЙрдирдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рд╕реВрдЪреА: package.json, package-lock.json, рдпрд╛рд░реНрди .lock, .yarn-рдЕрдЦрдВрдбрддрд╛;
- рд╡реЗрдмрдкреИрдХ, рдмреИрдмреЗрд▓, рдкреЛрд╕реНрдЯрд╕реАрдПрд╕рдПрд╕, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реВрдЪреА рдФрд░ рдЕрдиреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдЬреЛ рд▓реЛрдбрд░ рдФрд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИрдВред
рдпрджрд┐ рдЖрдк рдХреИрд╢-рд▓реЛрдбрд░ рдпрд╛ рд╣рд╛рд░реНрдбрд╕реНрд╕реЛрд░реНрд╕рд╡реЗрдмрдкреИрдХ рд▓реБрдЧрд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрддреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рддреЛ рдПрдирдкреАрдПрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛ рдирд┐рд░реНрднрд░рддрд╛, рдЕрджреНрдпрддрди, рдпрд╛ рд╣рдЯрд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди рдХреИрд╢ рдХреЛ рд╕рд╛рдл рдХрд░рддреА рд╣реИрдВ, рдЖрдкрдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдорджрдж рдХрд░реЗрдЧреА:
"prunecaches": "rimraf ./node_modules/.cache/", "postinstall": "npm run prunecaches", "postuninstall": "npm run prunecaches"
рдХреИрд╢ рдХреЛ рдЦрд╛рд▓реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдиреЛрдбрдмреЙрди рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдкрд░ рд╡реЗрдмрдкреИрдХ -рджреЗрд╡-рд╕рд░реНрд╡рд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рднреА рдорджрдж рдХрд░реЗрдЧрд╛:
"start": "cross-env NODE_ENV=development nodemon --exec \"webpack-dev-server --config webpack.config.dev.js\""
nodemon.json
{ "watch": [ "webpack.config.dev.js", "babel.config.js", "more configs...", ], "events": { "restart": "yarn prunecaches" } }
рдХреНрдпрд╛ рдореБрдЭреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдХреИрд╢ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
рдЪреВрдВрдХрд┐ рдХреИрд╢ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рдЕрд╕реЗрдВрдмрд▓реА рдЖрд░реНрдЯрд╡рд░реНрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдиреЛрдб_рдореЙрдбреНрдпреВрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдЕрдВрджрд░ рдХреИрд╢ рдХрд╛ рд╕реНрдерд╛рди, рдЬреЛ, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, .ignignore рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЗрд╕рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░реЗрдЧрд╛ред
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЕрдЧрд░ рдХреЛрдИ рдХреИрд╢рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдерд╛, рдЬреЛ рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреИрд╢ рдХреА рд╡реИрдзрддрд╛ рдХреЛ рдордЬрд╝рдмреВрддреА рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ Node.js рдХрд╛ OS рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдмрджрд▓рдирд╛ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ, рддреЛ рдХреИрд╢ рдХреЛ рд╡рд┐рдХрд╛рд╕ рдорд╢реАрдиреЛрдВ рдпрд╛ CI рдХреЗ рдмреАрдЪ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдмрд╣реБрдд рдкрд╣рд▓реЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рднреА рд╕рдордп рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рджреЗрдЧрд╛ рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ред
рдХрд┐рд╕ рдмрд┐рд▓реНрдб рдореЛрдб рдореЗрдВ рдпрд╣ рдореВрд▓реНрдп рд╣реИ рдФрд░ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИ?
рдпрд╣рд╛рдВ рдХреЛрдИ рдирд┐рд╢реНрдЪрд┐рдд рдЬрд╡рд╛рдм рдирд╣реАрдВ рд╣реИ: рдпрд╣ рд╕рдм рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдХрд┐рддрдиреА рддреАрд╡реНрд░рддрд╛ рд╕реЗ рджреЗрд╡ рдФрд░ рдареЗрд╕-рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХреБрдЫ рднреА рд╣рд░ рдЬрдЧрд╣ рдХреИрд╢рд┐рдВрдЧ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдкрд╣рд▓реЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИред CI рдореЗрдВ, рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдПрдХ "рдХреНрд▓реАрди" рдмрд┐рд▓реНрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреИрд╢рд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╡реЗрдмрдкреИрдХ рдореЗрдВ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд░реЛрдЪрдХ рд╕рд╛рдордЧреНрд░реА:
рд╕рд╛рде рдореЗрдВ рдЪрд▓рд╛рдирд╛
рд╕рдорд╛рдирд╛рдВрддрд░рдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рд╕рднреА рдЙрдкрд▓рдмреНрдз рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдВрддрд┐рдо рдкреНрд░рднрд╛рд╡ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрддрд╛ рд╣реИред
рд╡реИрд╕реЗ, рдпрд╣рд╛рдВ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЙрдкрд▓рдмреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдиреЛрдб рдХреЛрдб рд╣реИред рдпрд╣ рдиреАрдЪреЗ рд╕реВрдЪреАрдмрджреНрдз рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп рдХрд╛рдо рдореЗрдВ рдЖ рд╕рдХрддрд╛ рд╣реИ):
const os = require('os'); const cores = os.cpus().length;
- TerserWebpackPlugin рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░рдХрд░рдг
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдоред рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЛ рдЧрддрд┐ рджреЗрддрд╛ рд╣реИред
optimization: { minimizer: [ new TerserJsPlugin({ terserOptions: { ... }, parallel: true }) ] }
- рдереНрд░реЗрдб-рд▓реЛрдбрд░
рдереНрд░реЗрдб-рд▓реЛрдбрд░ рдХреЛ рд▓реЛрдбрд░реЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рднрд╛рд░реА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдкрд┐рдЫрд▓реЗ рд▓реЛрдбрд░ Node.js (рдкреНрд░реЛрд╕реЗрд╕рд░) рдЙрдкрдкреНрд░рдХрд╛рд░ рдкреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рдЗрд╕рдореЗрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рдкреВрд▓ рдХреЗ рдХрд╛рдо рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмреБрдирд┐рдпрд╛рджреА рдореВрд▓реНрдп рдХрд╛рдлреА рдкрд░реНрдпрд╛рдкреНрдд рджрд┐рдЦрддреЗ рд╣реИрдВред poolTimeout
рдФрд░ workers
рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВ - рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред
рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╢-рд▓реЛрдбрд░ рдХреЗ рд╕рд╛рде рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЖрджреЗрд╢ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ): ['cache-loader', 'thread-loader', 'babel-loader']
ред рдпрджрд┐ рдереНрд░реЗрдб-рд▓реЛрдбрд░ рдХреЗ рд▓рд┐рдП рд╡рд╛рд░реНрдордЕрдк рд╕рдХреНрд╖рдо рд╣реИ, рддреЛ рдЖрдкрдХреЛ рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЕрд╕реЗрдВрдмрд▓реА рдХреА рд╕реНрдерд┐рд░рддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - рд╡реЗрдмрдкреИрдХ рдЕрд╕реЗрдВрдмрд▓реА рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрд╕ рд╡рд╛рд░реНрдордЕрдк рдмрдВрдж рдХрд░ рджреЗрдВред
рдпрджрд┐ рдЖрдк Sass- рд╢реИрд▓реА рд╕рдВрдХрд▓рди рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдереНрд░реЗрдб-рд▓реЛрдбрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдмрд┐рд▓реНрдб рд╣реИрдВрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЯрд┐рдк рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИред
- рд╣реИрдкреНрдкреАрдкреИрдХ
рдПрдХ рдкреНрд▓рдЧрдЗрди рдЬреЛ рд▓реЛрдбрд░ рдХреА рдХреЙрд▓ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрдИ рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдЙрдирдХреЗ рдХрд╛рдо рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдлрд┐рд▓рд╣рд╛рд▓, рдпрд╣ рд╕рдорд░реНрдерди рдореЛрдб рдореЗрдВ рд╣реИ (рдпрд╛рдиреА, рд╡рд┐рдХрд╛рд╕ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИ), рдФрд░ рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рдереНрд░реЗрдб-рд▓реЛрдбрд░ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдЖрдкрдХрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЕрджреНрдпрддрд┐рдд рд╣реИ, рддреЛ рд╣реИрдкреНрдкреАрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдереНрд░реЗрдб-рд▓реЛрдбрд░ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдФрд░ рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред
рд╣реИрдкреНрдкреАрдкреИрдХ рдХреЗ рдкрд╛рд╕ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рд▓реЗрдЦрди рд╣реИ , рдЬреЛ рд╕рдВрдпреЛрдЧрд╡рд╢, рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╣реИ: рдпрд╣ рд▓реЛрдбрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкреНрд▓рдЧ-рдЗрди рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЙрд▓ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ, рдФрд░ рд▓реЛрдбрд░ рдЪреЗрди рдХреЛ рд╕реНрд╡рдпрдВ рдЕрдкрдиреЗ рд╣реИрдкреНрдкреАрдкреИрдХ рд▓реЛрдбрд░ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЧреИрд░-рдорд╛рдирдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг "рдЯреБрдХрдбрд╝реЛрдВ рд╕реЗ" рдХрд╕реНрдЯрдо рд╡реЗрдмрдкреИрдХ рдмрдирд╛рддреЗ рд╕рдордп рдЕрд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╣реИрдкреНрдкреАрдкреИрдХ рд▓реЛрдбрд░реЛрдВ рдХреА рдПрдХ рд╕реАрдорд┐рдд рд╕реВрдЪреА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ; рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореБрдЦреНрдп рдФрд░ рд╕рдмрд╕реЗ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдкреАрдЖрдИ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╕рдВрдЧрддрддрд╛ рдХреЗ рдХрд╛рд░рдг рджреВрд╕рд░реЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдореБрджреНрджреЛрдВ рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред
рдЧрдгрдирд╛ рд╕реЗ рдЗрдирдХрд╛рд░
рдХрд┐рд╕реА рднреА рдХрд╛рдо рдореЗрдВ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдХрдо рд╕рдордп рдмрд┐рддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдРрд╕реЗ рдХрд╛рдо рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬреЛ рдХрдо рдЙрдкрдпреЛрдЧ рдХреЗ рд╣реИрдВ, рдмрд╛рдж рдореЗрдВ рд╕реНрдердЧрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИред
- рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд▓реЛрдбрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдВ
рдкрд░реАрдХреНрд╖рдг, рдмрд╣рд┐рд╖реНрдХреГрдд рдФрд░ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рд╕рд╣рд┐рдд рд╢рд░реНрддреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред рдмрд┐рдВрджреБ рдРрд╕реЗ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдмрдЪрдирд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдореЗрд╢рди рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред
рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдЙрджрд╛рд╣рд░рдг рдмрд╛рдмреЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╛рд╖реНрдкреАрдХрд░рдг рд╕реЗ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдХрд╛ рдЕрдкрд╡рд╛рдж рд╣реИ:
rules: [ { test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader' } ]
рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг - рдирд┐рдпрдорд┐рдд рд╕реАрдПрд╕рдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдкреВрд░реНрд╡рдкреНрд░реЛрд╕реЗрд╕рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:
rules: [ { test: /\.scss$/, use: ['style-loader', 'css-loader', 'sass-loader'] }, { test: /\.css$/, use: ['style-loader', 'css-loader'] } ]
- рджреЗрд╡ рдореЛрдб рдореЗрдВ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдЕрдиреБрдХреВрд▓рди рдХреЛ рд╕рдХреНрд╖рдо рди рдХрд░реЗрдВ
рд╕реНрдерд┐рд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдбреЗрд╡рд▓рдкрд░ рдорд╢реАрди рдкрд░, рдПрдХ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рддреИрдирд╛рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдорддреМрд░ рдкрд░ рдЬрд▓реНрджреА рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЙрд╕рдХрд╛ рд╡рдЬрди рдХреБрдЫ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд╣реЛред рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рджреМрд░рд╛рди рдПрдХ рдмрдВрдбрд▓ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рд▓реЛрдб рдкрд░ рдмрдЪрдд рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреАрдорддреА рд╕рдордп рд▓реЗ рд╕рдХрддрд╛ рд╣реИред
рд╕рд▓рд╛рд╣ рдЬреЗрдПрд╕ (рдЯрд╕рд░, рдпреВрдЧреНрд▓реАрдлрд╛рдИ , рдЗрддреНрдпрд╛рджрд┐ ), рд╕реАрдПрд╕рдПрд╕ (cssnano, рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╢рди-рд╕реАрдПрд╕рдПрд╕-рдПрд╕реЗрдЯреНрд╕-рд╡реЗрдмрдкреИрдХ-рдкреНрд▓рдЧрдЗрди), рдПрд╕рд╡реАрдЬреА рдФрд░ рдЗрдореЗрдЬ (рдПрд╕рд╡реАрдЬреАрдУ, рдЗрдореЗрдЬрдорд┐рди, рдЗрдореЗрдЬ-рд╡реЗрдмрдкреИрдХ-рд▓реЛрдбрд░), рдПрдЪрдЯреАрдПрдордПрд▓ (HTML-minifier, рд╡рд┐рдХрд▓реНрдк) html-webpack-plugin), рдЖрджрд┐ред
- рдкреЙрд▓ рдореЛрдб рдФрд░ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдореЗрд╢рди рдХреЛ рджреЗрд╡ рд╡рд┐рдзрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рди рдХрд░реЗрдВ
рдпрджрд┐ рдЖрдк babel-preset-env, postcss-preset-env рдпрд╛ Autoprefixer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - рддреЛ рджреЗрд╡-рдореЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдмреНрд░рд╛рдЙрдЬрд░рд▓рд┐рд╕реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЬреЛрдбрд╝реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рд╡реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рдЖрдк рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдпреЗ рдХреНрд░реЛрдо рдпрд╛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ рдЬреЛ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЖрдзреБрдирд┐рдХ рдорд╛рдирдХреЛрдВ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХрд╛рдо рдЯрд╛рд▓реЗрдВрдЧреЗред
рдЙрджрд╛рд╣рд░рдг .browserslistrc:
[production] your supported browsers go here... [development] last 2 Chrome versions last 2 Firefox versions last 1 Safari version
- рд╕реНрд░реЛрдд рдХреЗ рдирдХреНрд╢реЗ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВ
рд╕рдмрд╕реЗ рд╕рдЯреАрдХ рдФрд░ рдкреВрд░реНрдг рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдлреА рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ (рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ - devtool: 'source-map'
рд╕рд╛рде рд▓рдЧрднрдЧ 30% рдирд┐рд░реНрдорд╛рдг-рдирд┐рд░реНрдорд╛рдг рд╕рдордп devtool: 'source-map'
рд╡рд┐рдХрд▓реНрдк)ред рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдкреНрд░реЛрдбрдХреНрд╢рди рдЕрд╕реЗрдВрдмрд▓реА (рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдФрд░ CI рдореЗрдВ) рдХреЗ рд╕реЛрд░реНрд╕ рдореИрдкреНрд╕ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдЙрдиреНрд╣реЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЖрд╡рд╢реНрдпрдХ рд╣реЛ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдпрд╛ рдкреНрд░рддрд┐рдмрджреНрдз рдкрд░ рдЯреИрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ред
рджреЗрд╡ рдореЛрдб рдореЗрдВ, рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдПрдХ рд╣рд▓реНрдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдЧрд╛ - 'cheap-eval-source-map'
рдпрд╛ 'cheap-module-eval-source-map'
ред рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдкреНрд░рд▓реЗрдЦрди рджреЗрдЦреЗрдВред
- рдЯрд╕рд░ рдореЗрдВ рдХрдВрдкреНрд░реЗрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
Terser рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ (Uglify рдкрд░ рднреА рдпрд╣реА рдмрд╛рдд рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИ), рдЬрдм рдХреЛрдб рдХреЛ рдЫреЛрдЯрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрд╕ рд╕рдордп рдХреЗ рднрд╛рд░реА рд╣рд┐рд╕реНрд╕реЗ рдХреЛ mangle
рдФрд░ compress
рд╡рд┐рдХрд▓реНрдк рджреНрд╡рд╛рд░рд╛ рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдареАрдХ рд╕реЗ рдЯреНрдпреВрдирд┐рдВрдЧ рдХрд░рдХреЗ, рдЖрдк рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдореЗрдВ рдорд╛рдореВрд▓реА рд╡реГрджреНрдзрд┐ рдХреА рдХреАрдордд рдкрд░ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рддреНрд╡рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡реАрдпреВ-рдХреНрд▓рд┐ рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдФрд░ рд╕реНрд▓реИрдХ рдХреЗ рдПрдХ рдЗрдВрдЬреАрдирд┐рдпрд░ рдХрд╛ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рд╣реИред рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдкрд╣рд▓реЗ рдЕрд╡рддрд╛рд░ рдореЗрдВ рдЯрд╕рд░ рдЯреНрдпреВрдирд┐рдВрдЧ рдиреЗ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдореЗрдВ 2.5 рдкреНрд░рддрд┐рд╢рдд рд╡реГрджреНрдзрд┐ рдХреЗ рдмрджрд▓реЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕рдордп рдХреЛ рд▓рдЧрднрдЧ 7% рдХрдо рдХрд░ рджрд┐рдпрд╛ред рдЪрд╛рд╣реЗ рдЦреЗрд▓ рдореЛрдордмрддреНрддреА рдХреЗ рд▓рд╛рдпрдХ рд╣реЛ рдЖрдк рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред
- рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╕реЗ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдмрд╛рд╣рд░ рдХрд░реЗрдВ
module.noParse
рдФрд░ module.noParse
resolve.alias
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ resolve.alias
рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЖрдпрд╛рдд рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдмрд╕ рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд┐рдП рдмрд┐рдирд╛ рдмрдВрдбрд▓ рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рджреЗрд╡-рдореЛрдб рдореЗрдВ, рдпрд╣ рдЕрд╕реЗрдВрдмрд▓реА рд╕рд╣рд┐рдд рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреА рдЧрддрд┐ рдореЗрдВ рдХрд╛рдлреА рд╡реГрджреНрдзрд┐ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд▓рдЧрднрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:
(1) рдореЙрдбреНрдпреВрд▓ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдПрдВ рдЬрд┐рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╕рдордп рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдпреЗ рд╕рднреА рд░рдирдЯрд╛рдЗрдо рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдмрдВрдбрд▓ рдореЗрдВ рдЧрд┐рд░рддреА рд╣реИрдВ (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЙрдирдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░, рдЬреИрд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбреЛрдо рдпрд╛ рд▓реЙрд╢), рдФрд░ рди рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ (рдкрд╣рд▓реЗ рд╕реНрддрд░), рдмрд▓реНрдХрд┐ рд╕рдХрд░реНрдордХ (рдирд┐рд░реНрднрд░рддрд╛ рдирд┐рд░реНрднрд░рддрд╛) рднреА рд╣реИрдВред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЖрдкрдХреЛ рдЗрд╕ рд╕реВрдЪреА рдХреЛ рд╕реНрд╡рдпрдВ рдмрдирд╛рдП рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред
(2) рдЪрдпрдирд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП, рдЙрдирдХреЗ рд╕рдВрдХрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкрде рд▓рд┐рдЦреЗрдВред
рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ рдХрд▓реЗрдХреНрдЯрд░ рдХреЛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдкрд░реНрдпрд╛рд╡рд░рдг рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - module.exports
рд▓рд┐рдП рдХреЙрд▓ рдХрд░реЗрдВред module.exports
, require
, process
, import
, рдЖрджрд┐ред рдкреВрд░реНрд╡-рд╕рдВрдХрд▓рд┐рдд (рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдПрдХрд▓) рдлрд╛рдЗрд▓-рдореЙрдбреНрдпреВрд▓, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рдЕрдВрджрд░ рдбрд┐рд╕реНрдЯрд░реНрдм рдлреЛрд▓реНрдбрд░ рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ, рдЗрд╕ рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ node_modules рдкрд░ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, axios рдХреЗ рд▓рд┐рдП, рд╕рдВрдХрд▓рд┐рдд рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдорд╛рд░реНрдЧ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ: node_modules/axios/dist/axios.js
ред
(3) рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдкреНрд░рддреНрдпрдХреНрд╖ рдЖрдпрд╛рдд рдХреЗ рд╕рд╛рде рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдирд╛рдо рд╕реЗ рдЖрдпрд╛рдд рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓реНрдк.рд▓рд┐рдпрд╛рд╕ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬрд┐рд╕рдХреЗ рдкрде рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдереЗред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
{ resolve: { alias: { axios: path.resolve( __dirname, 'node_modules/dist/axios.min.js' ), ... } } }
рдпрд╣рд╛рдВ рдПрдХ рдмрдбрд╝реА рдЦрд╛рдореА рд╣реИ: рдпрджрд┐ рдЖрдкрдХрд╛ рдХреЛрдб рдпрд╛ рдЖрдкрдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдХреЛрдб рдорд╛рдирдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ (рдЗрдВрдбреЗрдХреНрд╕ рдлрд╛рдЗрд▓, package.json
рдореЗрдВ main
рдХреНрд╖реЗрддреНрд░) рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдпрджрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдИрдПрд╕-рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдпрджрд┐ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреБрдЫ рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░ рд░рд╣реА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреИрдмрд▓-рдкреНрд▓рдЧрдЗрди-рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо-рдЖрдпрд╛рдд), рдкреВрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдмрдВрдбрд▓ рдЗрдХрдЯреНрдард╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрд╡реЗрджрди рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ред
(4) рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ, рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЪрд░рдг 2 рд╕реЗ рдкрдереЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЧрдП рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдкреВрд░реНрд╡рдХрдВрдкреНрд▓реАрдХреГрдд рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓.рдиреЛрдкрд░реНрд╕ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
{ module: { noParse: [ new RegExp('node_modules/dist/axios.min.js'), ... ] } }
рдирд┐рдЪрд▓рд╛ рд░реЗрдЦрд╛: рдХрд╛рдЧрдЬ рдкрд░, рд╡рд┐рдзрд┐ рдЖрд╢рд╛рдЬрдирдХ рджрд┐рдЦрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдиреБрдХрд╕рд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рдЧреИрд░-рддреБрдЪреНрдЫ рд╕реЗрдЯрдЕрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рд╛рдЧрдд рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдмрд╣реБрдд рдХрдо рд╕реЗ рдХрдо рд▓рд╛рдн рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред
рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рдорд╛рди рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдХрд▓реНрдк externals
рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдкрдХреЛ HTML рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрд╛рд╣рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдВрдХ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреИрдХреЗрдЬ .json рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рднреАред
- рдХреЛрдб рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрдВрдбрд▓ рдореЗрдВ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЕрд▓рдЧ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ
рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдиреЗ DllPlugin рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реЛрдЧрд╛ ред рдЗрд╕рдХреЗ рд╕рд╛рде, рдЖрдк рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдмрджрд▓рддреЗ рдХреЛрдб (рдЖрдкрдХреЗ рдЖрд╡реЗрджрди) рдФрд░ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдмрджрд▓рддреЗ рдХреЛрдб (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрднрд░рддрд╛) рдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдмрд╛рд░ рдЗрдХрдЯреНрдареЗ рдирд┐рд░реНрднрд░рддрд╛ рдмрдВрдбрд▓ (рдПрдХ рд╣реА рдбреАрдПрд▓рдПрд▓) рдХреЛ рдмрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрд╕реЗрдВрдмрд▓реА рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рдордп рдмрдЪрд╛рддрд╛ рд╣реИред
рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
- DLL рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд▓рдЧ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрд╡рд╢реНрдпрдХ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВред
- рдмрд┐рд▓реНрдб рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред DllPlugin рдПрдХ DLL рдмрдВрдбрд▓ рдФрд░ рдореИрдк рдирд╛рдореЛрдВ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдкрдереЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рдХрдЯ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИред
- DllReferencePlugin рдХреЛ рдореБрдЦреНрдп рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдкрд╛рд╕ рд╣реЛрддрд╛ рд╣реИред
- рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рджреМрд░рд╛рди DLL рдореЗрдВ рджреА рдЧрдИ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдЖрдпрд╛рдд рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрдХрд▓рд┐рдд рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рдХрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдк рдпрд╣рд╛рдВ рд▓реЗрдЦ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЬрд▓реНрджреА рд╕реЗ рдХрдИ рдиреБрдХрд╕рд╛рди рдкрд╛рдПрдВрдЧреЗ:
- DLL рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рдореБрдЦреНрдп рдЕрд╕реЗрдВрдмрд▓реА рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдЕрд▓рдЧ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рддреИрдпрд╛рд░ рдХрд░реЗрдВ, рдЗрд╕реЗ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ рд╣рд░ рдмрд╛рд░ рдЬрдм рдПрдХ рд╢рд╛рдЦрд╛ рд╕реНрд╡рд┐рдЪ рдпрд╛ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдмрджрд▓рддреА рд╣реИред
- рдЪреВрдВрдХрд┐ DLL рдореБрдЦреНрдп рдЕрд╕реЗрдВрдмрд▓реА рдХреА рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЕрдиреНрдп рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рдкреНрд▓рдЧ рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ HTML рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: 1 , 2 ред
- DLL рдмрдВрдбрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдЪреНрдЫрд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рдХреА рд╕реВрдЪреА рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЕрджреНрдпрддрд┐рдд рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
- рд╕рдмрд╕реЗ рджреБрдЦрдж рдмрд╛рдд: DLL рдмрдВрдбрд▓ рдкрд░ рдкреЗрдбрд╝-рд╣рд┐рд▓рд╛рдирд╛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП
entryOnly
рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд░рдирд╛ рднреВрд▓ рдЧрдПред
рдЖрдк рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╕рд╛рде рд╣реА рджреВрд╕рд░реА, рдпрджрд┐ рдЖрдк html-webpack-plugin v3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг 4 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ) AutoDllPlugin рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЕрднреА рднреА "рд╣реБрдб рдХреЗ рддрд╣рдд" рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЧрдП entryOnly
рд▓рд┐рдП entryOnly
рд╡рд┐рдХрд▓реНрдк рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкреНрд▓рдЧрдЗрди рдХрд╛ рд▓реЗрдЦрдХ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╡реЗрдмрдкреИрдХ 5 рдХреА рд░реЛрд╢рдиреА рдореЗрдВ рдЕрдкрдиреЗ рджрд┐рдорд╛рдЧ рдХреА рдЙрдкрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рдкрд░ рд╕рдВрджреЗрд╣ рдХрд░рддрд╛ рд╣реИред
рдЕрдиреЗрдХ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣
рдЕрдкрдиреЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред Node.js, npm / yarn (webpack, Babel .) . , changelog, issues, , .
PostCSS postcss-preset-env stage, . , stage-3, Custom Properties, stage-4 13%.
Sass (node-sass, sass-loader), Dart Sass ( Sass Dart, JS) fast-sass-loader . , . тАФ dart-sass , node-sass, JS, libsass.
Dart Sass sass-loader . Sass fibers.
CSS-, dev-. - , , , .
рдПрдХ рдЙрджрд╛рд╣рд░рдг:
{ loader: 'css-loader', options: { modules: true, localIdentName: isDev ? '[path][name][local]' : '[hash:base64:5]' } }
, , : .
, - webpack PrefetchPlugin , , тАФ . webpack issues , . ?
- . CLI-
--json
, . . , , dev- . - - Hints.
- , тАЬLong module build chainsтАЭ. , тАФ PrefetchPlugin .
- PrefetchPlugin. . StackOverflow .
: .
, (TypeScript, Angular .) тАФ !
рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ
, , , .