рд░реЛрд▓рдЕрдк: рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ

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

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

рд▓рд╛рднреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╡реЗрдмрдкреИрдХ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░реЗрдВ (рд╕реНрдерд┐рддрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИ)ред

рд╕рд░рд▓ рд╡рд┐рдиреНрдпрд╛рд╕


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

export default [{ input: 'src/index.ts', output: [{ file: 'dist/index.min.js', format: 'iife' }], plugins: [ // todo:     ], }]; 

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

Iife рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ


рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд┐рдирд╛ рдХрд╣реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреЛрдбрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдердиред рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓реЗрдВ:

 console.log("Hello, world!"); 

рдЗрд╕реЗ рд░реЛрд▓рдЕрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ iife рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд▓рд╛рдПрдБ рдФрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВ:

 (function () { 'use strict'; console.log("Hello, world!"); }()); 

рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рдмрд╣реБрдд рд╣реА рдХреЙрдореНрдкреИрдХреНрдЯ рдХреЛрдб рд╣реИ, рдХреЗрд╡рд▓ 69 рдмрд╛рдЗрдЯреНрд╕ред рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рд▓рд╛рдн рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ, рддреЛ Webpack / Browserify рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдЧрд╛:

рд╡реЗрдмрдкреИрдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдкрд░рд┐рдгрд╛рдо
 /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports) { console.log("Hello, world!"); /***/ }) /******/ ]); 


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдирд┐рдХрд▓рд╛ рдХрд┐ рд╡реЗрдмрдкреИрдХ / рдмреНрд░рд╛рдЙрдЬрд╝рд░рд╛рдЗрдЬрд╝ рдХреЗрд╡рд▓ рдХреЙрдордирдЬрд╕ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред 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 рдмрд╣реБрдд рдЦрд░рд╛рдм рдХрд░ рд░рд╣рд╛ рд╣реИред
рдпрд╣ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рдЬрд╛рдирд╡рд░ рд╣реИ? рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЛ рдлрд╛рдЗрд▓реЗрдВ рд▓реЗрддреЗ рд╣реИрдВ:

 // module.ts export class TestA { getData(){return "A"} } export class TestB { getData(){return "B"} } // index.ts import { TestB } from './module'; const test = new TestB(); console.log("Hello, world!", test.getData()); 

рд░реЛрд▓рдЕрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдПрдВ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:

 (function () { 'use strict'; class TestB { getData() { return "B"; } } const test = new TestB(); console.log("Hello, world!", test.getData()); }()); 

рдЯреНрд░реАрд╢реЗрдХрд┐рдВрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдЪрд░рдг рдореЗрдВ рднреА рдореГрдд рдХреЛрдб рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреНрдпрд╛ рд░реЛрд▓рдЕрдк рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯред рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗрдмрдкреИрдХ рдХреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ:

рд╡реЗрдмрдкреИрдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдкрд░рд┐рдгрд╛рдо
 /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); // CONCATENATED MODULE: ./src/module.ts class TestA { getData() { return "A"; } } class TestB { getData() { return "B"; } } // CONCATENATED MODULE: ./src/index.ts 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(), //   node commonJs(), //   commonjs postcss(), //   postcc,    scss  less html(), //  html  typeScript({tsconfig: "tsconfig.json"}), //  typescript sizeSnapshot(), //      terser(), //    ES2015+,    UglifyES visualizer() //   ] }]; 

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

рдкрд░рд┐рдгрд╛рдо


рдФрд░ рдЕрдм, рдирдП рдЬреНрдЮрд╛рди рд╕реЗ рд▓реИрд╕, рдЪрд▓реЛ рдПрдХ рдРрд╕рд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреЙрд▓реАрдлрд╝рд╛рдЗрд▓реНрд╕, рдкреБрд░рд╛рдиреЗ рдФрд░ рдирдП рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди, 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" }) }]; 


рд╕рднреА рдЖрд╕рд╛рди рдмрдВрдбрд▓реЛрдВ рдФрд░ рддреЗрдЬреА рд╕реЗ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ!

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


All Articles