5 рдЙрдкрдпреЛрдЧреА рд╡реЗрдмрдкреИрдХ рдкреНрд▓рдЧрдЗрдиреНрд╕

рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░!

рд╡реЗрдмрдкреИрдХ рдореЗрдВ рдХрдИ рдЙрдкрдпреЛрдЧреА рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдХрдЯреМрддреА рдХреЗ рддрд╣рдд, рдореИрдВрдиреЗ рдЗрдирдореЗрдВ рд╕реЗ 5 рдПрдХрддреНрд░ рдХрд┐рдП, рд╡реЗ рдЖрдкрдХреЗ рдЬреАрд╡рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ!



1. рдЕрдкреНрд░рдпреБрдХреНрдд рдлрд╝рд╛рдЗрд▓реЗрдВ рд╡реЗрдмрдкреИрдХ рдкреНрд▓рдЧрдЗрди


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

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

npm i unused-files-webpack-plugin 

 /* webpack.config.js */ const { UnusedFilesWebpackPlugin } = require('unused-files-webpack-plugin'); module.exports = { /* ... */ plugins: [ /* ... */ new UnusedFilesWebpackPlugin(), ], }; 

рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рдЖрдк рдХрд┐рд╕реА рднреА рдЕрдкреНрд░рдпреБрдХреНрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ:

 src/ тФЬтФАтФА index.js тФФтФАтФА someFile.js ( ) 

 WARNING in UnusedFilesWebpackPlugin found some unused files: src/someFile.js 

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

тЖТ рдЬреАрдердм
тЖТ рдПрдирдкреАрдПрдо

2. рдХреЗрд╕ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдкрде рд╡реЗрдмрдкреИрдХ рдкреНрд▓рдЧрдЗрди


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

рдпрджрд┐ рдЖрдк рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХреЗрд╕-рд╕реЗрдВрд╕рд┐рдЯрд┐рд╡-рдкрд╛рде-рд╡реЗрдмрдкреИрдХ-рдкреНрд▓рдЧрдЗрди рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 npm i case-sensitive-paths-webpack-plugin 

 /* webpack.config.js */ const CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin'); module.exports = { /* ... */ plugins: [ /* ... */ new CaseSensitivePathsPlugin(), ], }; 

рдЕрдм рдЧрд▓рдд рдорд╛рдорд▓реЗ рдХреЗ рд╕рд╛рде рдПрдХ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреА:

 /* index.js */ import someFile from './SOMEFILE'; 

 /* someFile.js */ export default () => { console.log('Hello!'); }; 

 ERROR in index.js Module not found: Error: [CaseSensitivePathsPlugin] `SOMEFILE.js` does not match the corresponding path on disk `someFile.js`. 

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

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

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

тЖТ рдЬреАрдердм
тЖТ рдПрдирдкреАрдПрдо

3. рдирд┐рд░реАрдХреНрд╖рдг


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

рдЗрдВрд╕реНрдкреЗрдХреНрдЯрдкреИрдХ рдЖрдкрдХреЛ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рддреБрд░рдВрдд рдЦреЛрдЬрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛:

 npm i inspectpack 

 /* webpack.config.js */ const { DuplicatesPlugin } = require('inspectpack/plugin'); module.exports = { /* ... */ plugins: [ /* ... */ new DuplicatesPlugin(), ], }; 

рдпрджрд┐ рдЖрдк рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреИрдХреЗрдЬ рдХреА рдкреНрд░рддрд┐рдпрд╛рдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдкрд░ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдкреЙрдк рдЕрдк рд╣реЛрдЧреА:

 /* package.json */ { /* ... */ "name": "my-app", "dependencies": { "lodash": "4.1.0", "one": "1.2.3" } } 

 /* node_modules/one/package.json */ { /* ... */ "name": "one", "dependencies": { "lodash": "3.0.0" } } 

 /* index.js */ import _ from 'lodash'; import 'one'; /* ... */ 

 WARNING in Duplicate Sources / Packages - Duplicates found! я╕П * Duplicates: Found 2 similar files across 2 code sources (both identical + similar) accounting for 703 bundled bytes. * Packages: Found 1 packages with 2 resolved, 2 installed, and 2 depended versions. ## bundle.js lodash (Found 2 resolved, 2 installed, 2 depended. Latest 4.1.0.) 3.0.0 ~/one/~/lodash scenario-new-webpack-new-npm-unflattened@* -> one@1.2.3 -> lodash@3.0.0 4.1.0 ~/lodash scenario-new-webpack-new-npm-unflattened@* -> lodash@4.1.0 

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рд╢реНрд╡ рдЙрджрд╛рд╣рд░рдг
рдореЗрд░реА рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдореИрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрддрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕рдХреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрд╕рдбреАрдХреЗ рдХреЛ рдХрдИ рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рддреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреА tslib@^1.9.3 рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИред

рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рд░рдг tslib@1.9.0 рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ tslib рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рдВрддрд░реА рдкреИрдХреЗрдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рдерд╛:


рдмрд░рдЧрдВрдбреА tslib рдкреНрд░рддрд┐рдпрд╛рдВ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛

 Parsed size: 121.03 KB Gzipped size: 27.16 KB 

рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╕рдорд╕реНрдпрд╛ рдкрд╛рдИ рдЧрдИ: рдореИрдВрдиреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ tslib@1.9.0 рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ред json, tslib@^1.9.3 рд╕рдВрддрд░реА рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдПрдХ рдмрд╛рд░ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХреА рдЧрдИ рдереА, рдФрд░ рдкреИрдХреЗрдЯреЛрдВ рдХрд╛ рд╡рдЬрди 26 рдХреЗрдмреА рд╕реЗ рдХрдо рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реБрдЖ:



 Parsed size: 94.5 KB Gzipped size: 26.5 KB 


рдЗрд╕реА рддрд░рд╣ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ-рдкреИрдХреЗрдЬ-рдЪреЗрдХрд░-рд╡реЗрдмрдкреИрдХ-рдкреНрд▓рдЧрдЗрди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ - рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдХрдИ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ , рдЕрд░реНрдерд╛рддреНред рд╕реНрдкреЙрдЗрд▓рд░ рдХреЗ рддрд╣рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╕рдорд╕реНрдпрд╛, рдЬрд╣рд╛рдВ tslib рдХреЗ рдХрдИ рд╕рдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ, рд╡рд╣ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред

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

тЖТ рдЬреАрдердм
тЖТ рдПрдирдкреАрдПрдо

4. рдкрд░рд┐рдкрддреНрд░ рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд▓рдЧрдЗрди


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

рдкрд░рд┐рдкрддреНрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рддреБрд░рдВрдд рджреЗрдЦрдиреЗ рдФрд░ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рдкрддреНрд░-рдирд┐рд░реНрднрд░рддрд╛-рдкреНрд▓рдЧрдЗрди рдЬреЛрдбрд╝реЗрдВ:

 npm i circular-dependency-plugin 

 /* webpack.config.js */ const CircularDependencyPlugin = require('circular-dependency-plugin'); module.exports = { /* ... */ plugins: [ /* ... */ new CircularDependencyPlugin(), ], }; 

рдЕрдм, рдЬрдм рдПрдХ рдкрд░рд┐рдкрддреНрд░ рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдХрдЯ рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓реЗрдЧреА:

 /* first.js */ import second from './second' /* ... */ 

 /* second.js */ import first from './first' /* ... */ 

 WARNING in Circular dependency detected: first.js -> second.js -> first.js WARNING in Circular dependency detected: second.js -> first.js -> second.js 

рдПрд╕реНрд▓рд┐рдВрдЯ рдФрд░ tslint рдХреЗ рд▓рд┐рдП рдЖрдпрд╛рдд / рдиреЛ-рд╕рд╛рдЗрдХрд▓ рдирд┐рдпрдо- tslint рдХреЗ рд▓рд┐рдП рдиреЛ-рд╕рд░реНрдХреБрд▓рд░-рдЗрдВрдкреЛрд░реНрдЯ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреЗрд╡рд▓ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рдХрд╛рд░реЛрдВ, рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЖрдпрд╛рдд рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИ - рдЖрдкрдХреЛ рдЕрдХреНрд╕рд░ tslint рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛: рдЕрдХреНрд╖рдоред

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

тЖТ рдЬреАрдердм
тЖТ рдПрдирдкреАрдПрдо

5. рд╕реНрдкреАрдб рдорд╛рдк рд╡реЗрдмрдкреИрдХ рдкреНрд▓рдЧрдЗрди


рдХрдИ рд╕реМ рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдореЗрдВ рдХрдИ рдорд┐рдирдЯ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВред

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

 npm i speed-measure-webpack-plugin 

 /* webpack.config.js */ const SpeedMeasurePlugin = require("speed-measure-webpack-plugin"); const smp = new SpeedMeasurePlugin(); module.exports = smp.wrap({ /* ... */ }); 

рдмрд┐рд▓реНрдб рдЖрдЙрдЯрдкреБрдЯ рдХреБрд▓ рдмрд┐рд▓реНрдб рд╕рдордп, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓рдЧрдЗрди рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдФрд░ рд▓реЛрдбрд░ рдХреА рдкреНрд░рддреНрдпреЗрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝ рджреЗрдЧрд╛:

  SMP General output time took 48.97 secs SMP - Plugins TerserPlugin took 19.6 secs OptimizeCssAssetsWebpackPlugin took 2.65 secs MiniCssExtractPlugin took 0.261 secs VueLoaderPlugin took 0.216 secs /* ... */ SMP - Loaders mini-css-extract-plugin, and css-loader, and postcss-loader took 21.81 secs module count = 33 cache-loader, and babel-loader, and ts-loader, and tslint-loader took 21.63 secs module count = 240 /* ... */ 

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

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

тЖТ рдЬреАрдердм
тЖТ рдПрдирдкреАрдПрдо

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


All Articles