Webpack 4 добавили новую функцию: теперь он поддерживает sideEffects
флаг в package.json
модулей он спакетировал.
За последние 30 дней мы тесно сотрудничали с каждой из фреймворков, чтобы гарантировать, что они готовы поддерживать webpack 4 в их соответствующих кликах и т.д. Даже популярные библиотеки, такие как lodash-es, RxJS, поддерживают флаг sideEffects, поэтому, используя их последние версии вы увидите, что размер мгновенного пакета уменьшается из коробки.
"SideEffects": флаговый флаг в big-module package.json указывает, что модули пакета не имеют побочных эффектов (при оценке) и только экспортируют экспорт. Это позволяет инструментам, таким как webpack, оптимизировать реэкспорт.
Пока вторая ссылка показывает результаты использования флага, она не дает четкого объяснения того, что представляет собой побочный эффект. ES6 включает концепцию побочных эффектов для модулей, описанных здесь, но как это связано с тем, что Webpack рассматривает побочные эффекты.
В контексте sideEffects
то, что модуль должен избегать использовать sideEffects:false
без проблем или, наоборот, что должен делать модуль, чтобы использовать sideEffects:false
без проблем.
Для полноты, несмотря на @SeanLarkin солидный ответ ниже, я хотел бы получить разъяснения по следующему:
-
Очевидно, что побочные эффекты означают что-то конкретное в fp и включают в себя ведение журнала (консоль или в другом месте) и бросание ошибок. Я предполагаю, что в этом контексте они вполне приемлемы?
-
Может ли модуль содержать циклические ссылки и по-прежнему использовать
sideEffects: false
? -
Есть ли способ проверить или что модуль может проверить, что модуль может
sideEffects: false
кроме попытки отследить ошибки, вызванные его неправильным использованием? -
Существуют ли какие-либо другие факторы, которые препятствовали бы тому, чтобы модуль мог использовать
sideEffects: false
?