рд░реЛрд▓рдЕрдк рдПрдХ рдирдИ рдкреАрдврд╝реА рдХрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрд┐рд▓реНрдбрд░ рд╣реИред рдХрдИ рд▓реЛрдЧ рдЙрдиреНрд╣реЗрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдПрдХ рд╣реЛрдирд╣рд╛рд░ рдмрд┐рд▓реНрдбрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдЬреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЦрд░рд╛рдм рд░реВрдк рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рд╕рдордп рдмреАрдд рд░рд╣рд╛ рд╣реИ, рдЙрддреНрдкрд╛рдж рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ 2017 рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЗрд╕рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдореБрдЭреЗ рддреБрд░рдВрдд ES2015, рдЯреНрд░реАрд╢реЗрдХрд┐рдВрдЧ, рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреА рдХрдореА рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рд╕рдорд░реНрдерди рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рдпрд╣ рдкрд╕рдВрдж рдЖрдпрд╛ред рд▓реЗрдХрд┐рди рддрдм рдпрд╣ рдПрдХ рдХрдЪреНрдЪрд╛ рдЙрддреНрдкрд╛рдж рдерд╛, рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдФрд░ рдмрд╣реБрдд рд╕реАрдорд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдереА, рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрд╛ред рджреВрд╕рд░рд╛ рдкреНрд░рдпрд╛рд╕ 2018 рдореЗрдВ рдерд╛, рдЬрдм рдЗрд╕рдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕рдореБрджрд╛рдп, рдкреНрд▓рдЧрдЗрдиреНрд╕ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдХрд╛рдлреА рд╣рдж рддрдХ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЧреБрдгрд╡рддреНрддрд╛ рдХреА рдХрдореА рдереА, рдЬрд┐рд╕рдореЗрдВ рд╡реЙрдХрд░ рднреА рд╢рд╛рдорд┐рд▓ рдерд╛ред рдФрд░ рдЕрдВрдд рдореЗрдВ, 2019 рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд╣рдо рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ - рд░реЛрд▓рдЕрдк рдХреА рдорджрдж рд╕реЗ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдЖрдзреБрдирд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд▓рд╛рднреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╡реЗрдмрдкреИрдХ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░реЗрдВ (рд╕реНрдерд┐рддрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИ)ред
рд╕рд░рд▓ рд╡рд┐рдиреНрдпрд╛рд╕
рддреБрд░рдВрдд рдЬреЛ рдЖрдкрдХреА рдЖрдВрдЦ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИ рд╡рд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ:
export default [{ input: 'src/index.ts', output: [{ file: 'dist/index.min.js', format: 'iife' }], plugins: [
рдХреЙрд╕рдиреЛрд▓ рдореЗрдВ
рд░реЛрд▓рдЕрдк -рд╕реА рджрд░реНрдЬ рдХрд░реЗрдВ рдФрд░ рдЖрдкрдХрд╛ рдмрдВрдбрд▓ рдЗрдХрдЯреНрдард╛ рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд▓рд┐рдП, рдЖрдк рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП рдмрдВрдбрд▓реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреЙрд▓реАрдлрд╝рд╛рдЗрд▓реНрд╕, рдХрдИ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ, рд╢реНрд░рдорд┐рдХреЛрдВ рдФрд░ рдЗрддрдиреЗ рдкрд░ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВред рдЗрдирдкреБрдЯ рдореЗрдВ, рдЖрдк рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╕рдмрдорд┐рдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЪрдВрдХреНрд╕ рдПрдХрддреНрд░ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ, рдЖрдк рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдлрд╝реАрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рднрд┐рдиреНрди рдореЙрдбреНрдпреВрд▓рд░ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: iife, commonjs, umdред
Iife рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ
рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд┐рдирд╛ рдХрд╣реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреЛрдбрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдердиред рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓реЗрдВ:
console.log("Hello, world!");
рдЗрд╕реЗ рд░реЛрд▓рдЕрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ iife рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд▓рд╛рдПрдБ рдФрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВ:
(function () { 'use strict'; console.log("Hello, world!"); }());
рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рдмрд╣реБрдд рд╣реА рдХреЙрдореНрдкреИрдХреНрдЯ рдХреЛрдб рд╣реИ, рдХреЗрд╡рд▓ 69 рдмрд╛рдЗрдЯреНрд╕ред рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рд▓рд╛рдн рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ, рддреЛ Webpack / Browserify рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдЧрд╛:
рд╡реЗрдмрдкреИрдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдкрд░рд┐рдгрд╛рдо рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдирд┐рдХрд▓рд╛ рдХрд┐ рд╡реЗрдмрдкреИрдХ / рдмреНрд░рд╛рдЙрдЬрд╝рд░рд╛рдЗрдЬрд╝ рдХреЗрд╡рд▓ рдХреЙрдордирдЬрд╕ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред IIFE рдХрд╛ рдмрдбрд╝рд╛ рдлрд╛рдпрджрд╛ рдЗрд╕рдХреА рдХреЙрдореНрдкреИрдХреНрдЯрдиреЗрд╕ рдФрд░ рдХреЙрдордирдЬрд╕ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдЯрдХрд░рд╛рд╡ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдЦрд╛рдореА рд╣реИ, рдЖрдк рд╡рд┐рдЦрдВрдбреВ рдПрдХрддреНрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдЙрдирдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреЙрдордирдЬреЗрд╕ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
ES2015 рдореЗрдВ рд╕рдВрдХрд▓рди
2016 рдореЗрдВ "рдЕрдЧрд▓реА рдкреАрдврд╝реА рдХреЗ рдХрд▓реЗрдХреНрдЯрд░" рд░реЛрд▓рдЕрдк рдХреЛ ES2015 рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдирд╛рдо рдорд┐рд▓рд╛ред рдФрд░ 2018 рдХреЗ рдЕрдВрдд рддрдХ, рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдХрд▓реЗрдХреНрдЯрд░ рдерд╛ рдЬреЛ рдЬрд╛рдирддрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдХреЛрдб рд▓реЗрддреЗ рд╣реИрдВ:
export class TestA { getData(){return "A"} } console.log("Hello, world!", new TestB().getData());
рдФрд░ рд░реЛрд▓рдЕрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреНрд░рд╛рдЗрд╡ рдХрд░реЗрдВ, рдлрд┐рд░ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╣рдореЗрдВ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдорд┐рд▓рддреА рд╣реИред рдФрд░ рд╣рд╛рдБ! 2019 рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА
87% рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрд╕реЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдлрд┐рд░ 2016 рдореЗрдВ рдпрд╣ рдПрдХ рд╕рдлрд▓рддрд╛ рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣рд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдРрд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдереЗ рдЬрд┐рдиреНрд╣реЗрдВ рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА: рдкреНрд░рд╡реЗрд╢, рдХрд┐рдпреЛрд╕реНрдХ, рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдирд╣реАрдВ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдХреЛрдИ рдирд┐рд░реНрдорд╛рдг рдЙрдкрдХрд░рдг рдирд╣реАрдВ рдереЗред рдФрд░ рдЕрдм рд░реЛрд▓рдЕрдк рдХреЗ рд╕рд╛рде рд╣рдо рдПрдХ рдмрдВрдбрд▓ рдореЗрдВ рдХрдИ рдкрд╛рд╕ рдЗрдХрдареНрдард╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, es3, es5, es2015, exnext рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реБрдП рдЖрд╡рд╢реНрдпрдХ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ ES2015 рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдлрд╛рдпрджрд╛ рдЗрд╕рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЧрддрд┐ рд╣реИред рдПрдХ рдирд┐рдЪрд▓реА рдкрд░рдд рддрдХ рдЯреНрд░рд╛рдВрд╕рдкреНрд▓рд┐рдВрдЧ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг, рдХреЛрдб рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдПрдХ рд╕рд╣рд╛рдпрдХ рдХреЛрдб рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг, рдпрд╣ рдХреЛрдб 3 рдЧреБрдирд╛ рддреЗрдЬреА рд╕реЗ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдореЗрд░реЗ рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░)ред
рдкреЗрдбрд╝ рдХрд╛ рд╣рд┐рд▓рдирд╛
рдпрд╣ рдПрдХ рд░реЛрд▓рдЕрдк рдЪрд┐рдк рд╣реИ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдерд╛! рд╡реЗрдмрдкреИрдХ рд▓рдЧрд╛рддрд╛рд░ рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╕рдВрд╕реНрдХрд░рдг 4 рдХреЗ рд╕рд╛рде рд╣реА рдХреБрдЫ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред Browserify рдмрд╣реБрдд рдЦрд░рд╛рдм рдХрд░ рд░рд╣рд╛ рд╣реИред
рдпрд╣ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рдЬрд╛рдирд╡рд░ рд╣реИ? рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЛ рдлрд╛рдЗрд▓реЗрдВ рд▓реЗрддреЗ рд╣реИрдВ:
рд░реЛрд▓рдЕрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдПрдВ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
(function () { 'use strict'; class TestB { getData() { return "B"; } } const test = new TestB(); console.log("Hello, world!", test.getData()); }());
рдЯреНрд░реАрд╢реЗрдХрд┐рдВрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдЪрд░рдг рдореЗрдВ рднреА рдореГрдд рдХреЛрдб рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреНрдпрд╛ рд░реЛрд▓рдЕрдк рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯред рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗрдмрдкреИрдХ рдХреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ:
рд╡реЗрдмрдкреИрдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдкрд░рд┐рдгрд╛рдо рдФрд░ рдпрд╣рд╛рдБ рд╣рдо рджреЛ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред 2018 рдХреЗ рдЕрдВрдд рдореЗрдВ рдкрд╣рд▓рд╛ рд╡реЗрдмрдкреИрдХ рдЕрднреА рднреА ES2015 рдХреЛ рд╕рдордЭрдирд╛ рдФрд░ рдмрдирд╛рдирд╛ рд╕реАрдЦ рдЧрдпрд╛ред рджреВрд╕рд░рд╛, рдмрд┐рд▓реНрдХреБрд▓ рд╕рднреА рдХреЛрдб рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдбреЗрдб рдХреЛрдб рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Terser minifier (рдлреЛрд░реНрдХ рдФрд░ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА UglifyES) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд░реЛрд▓рдЕрдк рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдореЛрдЯреЗ рдмрдВрдбрд▓, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрд╛ рд╣реИ, рд╣рдо рдЗрд╕ рдкрд░ рдирд╣реАрдВ рд░реБрдХреЗрдВрдЧреЗред
рдкреНрд▓рдЧ-рдЗрди
рдХреЗрд╡рд▓ рдирдЧреНрди ES2015 + рдХреЛ рд░реЛрд▓рдЕрдк рдмреЙрдХреНрд╕ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕рд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ рдХрд┐ рдХреЙрдордирдЬ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбреНрдпреВрд▓, рд▓реЛрдбрд┐рдВрдЧ html рдФрд░ рдПрд╕рд╕реАрдПрд╕, рдЗрддреНрдпрд╛рджрд┐, рдЖрдкрдХреЛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
import nodeResolve from 'rollup-plugin-node-resolve'; import commonJs from 'rollup-plugin-commonjs'; import typeScript from 'rollup-plugin-typescript2'; import postcss from 'rollup-plugin-postcss'; import html from 'rollup-plugin-html'; import visualizer from 'rollup-plugin-visualizer'; import {sizeSnapshot} from "rollup-plugin-size-snapshot"; import {terser} from 'rollup-plugin-terser'; export default [{ input: 'src/index.ts', output: [{ file: 'dist/index.r.min.js', format: 'iife' }], plugins: [ nodeResolve(),
рдЗрддрдирд╛ рд╕рд░рд▓, рдПрдХ рд╢рдмреНрдж рдореЗрдВ рдПрдХ рдкреНрд▓рдЧ-рдЗрди рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд┐рд╕реА рднреА рдЬрдЯрд┐рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдПрдХ рдмрдВрдбрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рднреА рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдо
рдФрд░ рдЕрдм, рдирдП рдЬреНрдЮрд╛рди рд╕реЗ рд▓реИрд╕, рдЪрд▓реЛ рдПрдХ рдРрд╕рд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреЙрд▓реАрдлрд╝рд╛рдЗрд▓реНрд╕, рдкреБрд░рд╛рдиреЗ рдФрд░ рдирдП рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди, pwa рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░реНрд╡рд┐рд╕ рд╡рд░реНрдХрд░ рдФрд░ рдмреНрд░реВрдВрдб рдореЗрдВ рдЬрдЯрд┐рд▓ рдЧрдгрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЗрдм рд╡рд░реНрдХрд░ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдЧрд╛ред
import nodeResolve from 'rollup-plugin-node-resolve'; import commonJs from 'rollup-plugin-commonjs'; import typeScript from 'rollup-plugin-typescript2'; import postcss from 'rollup-plugin-postcss'; import html from 'rollup-plugin-html'; import visualizer from 'rollup-plugin-visualizer'; import { sizeSnapshot } from "rollup-plugin-size-snapshot"; import { terser } from 'rollup-plugin-terser'; const getPlugins = (options) => [ nodeResolve(), commonJs(), postcss(), html(), typeScript({ tsconfig: "tsconfig.json", tsconfigOverride: { compilerOptions: { "target": options.target } } }), sizeSnapshot(), terser(), visualizer() ]; export default [{ input: 'src/polyfills.ts', output: [{ file: 'dist/polyfills.min.js', format: 'iife' }], plugins: getPlugins({ target: "es5" }) },{ input: 'src/index.ts', output: [{ file: 'dist/index.next.min.js', format: 'iife' }], plugins: getPlugins({ target: "esnext" }) },{ input: 'src/index.ts', output: [{ file: 'dist/index.es5.min.js', format: 'iife' }], plugins: getPlugins({ target: "es5" }) },{ input: 'src/index.ts', output: [{ file: 'dist/index.es3.min.js', format: 'iife' }], plugins: getPlugins({ target: "es3" }) },{ input: 'src/serviceworker.ts', output: [{ file: 'dist/serviceworker.min.js', format: 'iife' }], plugins: getPlugins({ target: "es5" }) },{ input: 'src/webworker.ts', output: [{ file: 'dist/webworker.min.js', format: 'iife' }], plugins: getPlugins({ target: "es5" }) }];
рд╕рднреА рдЖрд╕рд╛рди рдмрдВрдбрд▓реЛрдВ рдФрд░ рддреЗрдЬреА рд╕реЗ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ!