рд╡реЗрдмрдкреИрдХ рд╕реНрдкреНрд▓рд┐рдЯрд╕рдХреНрд▓рд┐рдкреНрд╕рдкреНрд▓рдЧрд┐рди рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рд╡реЗрдмрдкреИрдХ 4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдмрд╣реБ-рдкреГрд╖реНрда рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдмрдВрдбрд▓реЛрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рдмрдирд╛рдПрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ 4 рдкреГрд╖реНрдареЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:


const path = require("path"); const PATHS = { src: path.resolve(process.cwd(), "src"), dist: path.resolve(process.cwd(), "dist") }; module.exports = { entry: { common: `${PATHS.src}/js/common`, index: `${PATHS.src}/js/index`, contacts: `${PATHS.src}/js/contacts`, about: `${PATHS.src}/js/about`, } } 

рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рджреМрд░рд╛рди, рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдВрдбрд▓ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред common рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рдореЗрдВ, рдореИрдВ рд╕рднреА рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╛рд╣рд░ рд░рдЦрддрд╛ рд╣реВрдВред рд╣рдорд╛рд░реЗ рдмрдВрдбрд▓реЛрдВ рдХреЛ рдкреГрд╖реНрдареЛрдВ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡реЗрдмрдкреИрдХ рдкреНрд▓рдЧрдЗрди HtmlWebpackPlugin рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред


рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:


  module.exports = { ... plugins: [ new HtmlWebpackPlugin({ filename: `${PATHS.dist}/index.html`, template: `${PATHS.dist}/index.html`, chunks: ["index", "common"] }) ... ] ... }; 

chunks рдЗрд╕ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдмрдВрдбрд▓реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ (рдХреНрд░рдо: рджрд╛рдПрдВ рд╕реЗ рдмрд╛рдПрдВ)ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкрд╣рд▓реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреЗрдЬ рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрдВрдЧреА, рдФрд░ рдлрд┐рд░ рдЗрд╕ рдкреЗрдЬ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЬрд░реВрд░рдд рд╣реЛрдЧреАред


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


рд╣рдо рд╡реЗрдмрдкреИрдХ рд╕реНрдкреНрд▓рд┐рдЯрд╕рд╣рдХреНрд╕рдкреНрд▓рдЧрд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рджрд░рдЕрд╕рд▓, рдпрд╣рд╛рдБ рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ:


 module.exports = { optimization: { splitChunks: { chunks: "all", minSize: 1, minChunks: 2 } } } 

рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдмрд╛рдж, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрдВрдбрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╣рдорд╛рд░реЗ рдкреЗрдЬ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрдВрдбрд▓ред


 index.js contacts.js common.js about.js vendors~about-us~index.js vendors~about-us~contacts.js 

рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ ~ about-us ~ index.js рдмрдВрдбрд▓ рдореЗрдВ рд▓рдЧрднрдЧ- about-us рдФрд░ index рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реЛрдВрдЧреА, рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдХреИрд╢ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдФрд░ рдЬрдм рдЖрдк index рдкреЗрдЬ рд╕реЗ рд╕реНрд╡рд┐рдЪ about рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдбрд╛рдЙрдирд▓реЛрдб рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ about.js рдмрдВрдбрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ about.js ред


рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХреЗ рдХреЙрдиреНрдлрд┐рдЧ рдореЗрдВ рдЪрдВрдХ рдирд╛рдореЛрдВ рдХреЛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рд╣рдорд╛рд░реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдкрд░ рдЗрди рдмрдВрдбрд▓реЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо HtmlWebpackPlugin рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЖрд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд╕рдорд╛рди рд╣реИред рдХреЗрд╡рд▓ рдЕрдм рдЖрдкрдХреЛ рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХреЗ рдЕрд▓реНрдлрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдпрд╣ рдкреНрд▓рдЧрдЗрди рд╣рдорд╛рд░реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдЦрдВрдбреЛрдВ рдХреЛ рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдХрдиреЗрдХреНрдЯ рдХрд┐рдП рдЧрдП рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБред


 npm i --save-dev html-webpack-plugin@next 

рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ index.html рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдорд┐рд▓рддрд╛ рд╣реИ:


 <script src="js/common.js"></script> <script src="js/vendors~about-us~index.js"></script> <script src="js/index.js"></script> 

Source: https://habr.com/ru/post/hi441076/


All Articles