Size: a a a

Webpack — русскоговорящее сообщество

2019 December 25

В

Вадим in Webpack — русскоговорящее сообщество
не могу найти как сказать webpack что я использую только cjs и es2015 формат модулей и не нужно генерировать такой огромный хэлпер для поддержки экспортов

! function(e) {
   function r(r) {
       for (var n, l, f = r[0], i = r[1], a = r[2], c = 0, s = []; c < f.length; c++) l = f[c], Object.prototype.hasOwnProperty.call(o, l) && o[l] && s.push(o[l][0]), o[l] = 0;
       for (n in i) Object.prototype.hasOwnProperty.call(i, n) && (e[n] = i[n]);
       for (p && p(r); s.length;) s.shift()();
       return u.push.apply(u, a || []), t()
   }

   function t() {
       for (var e, r = 0; r < u.length; r++) {
           for (var t = u[r], n = !0, f = 1; f < t.length; f++) {
               var i = t[f];
               0 !== o[i] && (n = !1)
           }
           n && (u.splice(r--, 1), e = l(l.s = t[0]))
       }
       return e
   }
   var n = {},
       o = {
           1: 0
       },
       u = [];

   function l(r) {
       if (n[r]) return n[r].exports;
       var t = n[r] = {
           i: r,
           l: !1,
           exports: {}
       };
       return e[r].call(t.exports, t, t.exports, l), t.l = !0, t.exports
   }
   l.m = e, l.c = n, l.d = function(e, r, t) {
       l.o(e, r) || Object.defineProperty(e, r, {
           enumerable: !0,
           get: t
       })
   }, l.r = function(e) {
       "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
           value: "Module"
       }), Object.defineProperty(e, "__esModule", {
           value: !0
       })
   }, l.t = function(e, r) {
       if (1 & r && (e = l(e)), 8 & r) return e;
       if (4 & r && "object" == typeof e && e && e.__esModule) return e;
       var t = Object.create(null);
       if (l.r(t), Object.defineProperty(t, "default", {
               enumerable: !0,
               value: e
           }), 2 & r && "string" != typeof e)
           for (var n in e) l.d(t, n, function(r) {
               return e[r]
           }.bind(null, n));
       return t
   }, l.n = function(e) {
       var r = e && e.__esModule ? function() {
           return e.default
       } : function() {
           return e
       };
       return l.d(r, "a", r), r
   }, l.o = function(e, r) {
       return Object.prototype.hasOwnProperty.call(e, r)
   }, l.p = "/";
   var f = window.webpackJsonp = window.webpackJsonp || [],
       i = f.push.bind(f);
   f.push = r, f = f.slice();
   for (var a = 0; a < f.length; a++) r(f[a]);
   var p = i;
   t()
}([]);
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
Вадим
не могу найти как сказать webpack что я использую только cjs и es2015 формат модулей и не нужно генерировать такой огромный хэлпер для поддержки экспортов

! function(e) {
   function r(r) {
       for (var n, l, f = r[0], i = r[1], a = r[2], c = 0, s = []; c < f.length; c++) l = f[c], Object.prototype.hasOwnProperty.call(o, l) && o[l] && s.push(o[l][0]), o[l] = 0;
       for (n in i) Object.prototype.hasOwnProperty.call(i, n) && (e[n] = i[n]);
       for (p && p(r); s.length;) s.shift()();
       return u.push.apply(u, a || []), t()
   }

   function t() {
       for (var e, r = 0; r < u.length; r++) {
           for (var t = u[r], n = !0, f = 1; f < t.length; f++) {
               var i = t[f];
               0 !== o[i] && (n = !1)
           }
           n && (u.splice(r--, 1), e = l(l.s = t[0]))
       }
       return e
   }
   var n = {},
       o = {
           1: 0
       },
       u = [];

   function l(r) {
       if (n[r]) return n[r].exports;
       var t = n[r] = {
           i: r,
           l: !1,
           exports: {}
       };
       return e[r].call(t.exports, t, t.exports, l), t.l = !0, t.exports
   }
   l.m = e, l.c = n, l.d = function(e, r, t) {
       l.o(e, r) || Object.defineProperty(e, r, {
           enumerable: !0,
           get: t
       })
   }, l.r = function(e) {
       "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
           value: "Module"
       }), Object.defineProperty(e, "__esModule", {
           value: !0
       })
   }, l.t = function(e, r) {
       if (1 & r && (e = l(e)), 8 & r) return e;
       if (4 & r && "object" == typeof e && e && e.__esModule) return e;
       var t = Object.create(null);
       if (l.r(t), Object.defineProperty(t, "default", {
               enumerable: !0,
               value: e
           }), 2 & r && "string" != typeof e)
           for (var n in e) l.d(t, n, function(r) {
               return e[r]
           }.bind(null, n));
       return t
   }, l.n = function(e) {
       var r = e && e.__esModule ? function() {
           return e.default
       } : function() {
           return e
       };
       return l.d(r, "a", r), r
   }, l.o = function(e, r) {
       return Object.prototype.hasOwnProperty.call(e, r)
   }, l.p = "/";
   var f = window.webpackJsonp = window.webpackJsonp || [],
       i = f.push.bind(f);
   f.push = r, f = f.slice();
   for (var a = 0; a < f.length; a++) r(f[a]);
   var p = i;
   t()
}([]);
Выглядит как хелпер для commonjs
источник

В

Вадим in Webpack — русскоговорящее сообщество
Alex CherryTea
Выглядит как хелпер для commonjs
там мешанина var r = e && e.__esModule ? function() {
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
Вадим
там мешанина var r = e && e.__esModule ? function() {
Действительно
источник

KA

Kenan Ayvazov in Webpack — русскоговорящее сообщество
@Akiyamka спам
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
Thx
источник

В

Вадим in Webpack — русскоговорящее сообщество
Alex CherryTea
Водопада не получиться, в mjs хитрая система резолва зависимостей
почитал - ничего хитрого там нет - весь node-modules нужно выкачивать - зависимости то никуда не делись - их нужно качать
да для модулей они декларируют  preloadmodule аттрибут и оптимизируют их загрузку но все зависимости нужно декларировать и грузить
источник

RU

Roman Usherenko in Webpack — русскоговорящее сообщество
Вадим
почитал - ничего хитрого там нет - весь node-modules нужно выкачивать - зависимости то никуда не делись - их нужно качать
да для модулей они декларируют  preloadmodule аттрибут и оптимизируют их загрузку но все зависимости нужно декларировать и грузить
водопад - это не "качать зависимости", это "качать зависисости пачками и не иметь возможности распаралелить изза этого". так вот с модулями этого нет - все модули известны статически
источник

В

Вадим in Webpack — русскоговорящее сообщество
Roman Usherenko
водопад - это не "качать зависимости", это "качать зависисости пачками и не иметь возможности распаралелить изза этого". так вот с модулями этого нет - все модули известны статически
откуда они могут быть известны если я еще не загрузил модуль?
а в том модуле куча зависимостей которые так же нужно грузить а тех свои и так далее!
источник

RU

Roman Usherenko in Webpack — русскоговорящее сообщество
Вадим
откуда они могут быть известны если я еще не загрузил модуль?
а в том модуле куча зависимостей которые так же нужно грузить а тех свои и так далее!
я так понимаю есть манифест - module map
источник

В

Вадим in Webpack — русскоговорящее сообщество
манифест можно собрать только сборщиком - поэтому от них пока никуда не уйти
после того как станет известно что нужно грузить весь node_modules - забъем весь канал и надолго грузить тысячи файлов и без тришейкинга
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
Вадим
откуда они могут быть известны если я еще не загрузил модуль?
а в том модуле куча зависимостей которые так же нужно грузить а тех свои и так далее!
То о чем вы говорите справедливо только для динамических импортов.
Попобуйте сделайте простой водопад на mjs без динамических модулей и посмотрите что получится
источник

В

Вадим in Webpack — русскоговорящее сообщество
Alex CherryTea
То о чем вы говорите справедливо только для динамических импортов.
Попобуйте сделайте простой водопад на mjs без динамических модулей и посмотрите что получится
- но ведь реальные приложения всегда состоят из динамически загружаемых модулей
- даже если мы статически импортируем модуль мы всеравно все его дерево подзависимостей должны загрузить (половину node_modules) кто как и когда это делает?
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
Вадим
- но ведь реальные приложения всегда состоят из динамически загружаемых модулей
- даже если мы статически импортируем модуль мы всеравно все его дерево подзависимостей должны загрузить (половину node_modules) кто как и когда это делает?
1) и да и нет. Да есть динамические части в реальном приложении и в этих местах водопад это именно то что мы хотим, и нет не все части динамические, есть заранее известные части которые нужны сразу и они грузятся статически

2) такая ситуация возможна и в этом случае получится какашка. В реальном мире тридпати (внешние модули) мы используем в уже собраном пожатом и "склееном" виде, как следствие огромного дерева node_modules в проде не будет
источник

В

Вадим in Webpack — русскоговорящее сообщество
Alex CherryTea
1) и да и нет. Да есть динамические части в реальном приложении и в этих местах водопад это именно то что мы хотим, и нет не все части динамические, есть заранее известные части которые нужны сразу и они грузятся статически

2) такая ситуация возможна и в этом случае получится какашка. В реальном мире тридпати (внешние модули) мы используем в уже собраном пожатом и "склееном" виде, как следствие огромного дерева node_modules в проде не будет
2) таки нужен сборщик!
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
У меня кстати была ситуация про второй пункт на реальном проекте - уходило около 800 реквестов на модули в дев режиме
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
Хром справлялся на ура а вот мазила тупила страшно на таком колве модулей, интересно пофиксили уже или нет
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
Вадим
2) таки нужен сборщик!
Большинство либ поставляются уже собранными из нпм
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
Хотя лично я не очень этому рад
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
И да - сборщик нужен )
источник