webpack 5 why breaking changes? - github...• todos • plan future features • preparations •...

43
WHY BREAKING CHANGES?

Upload: others

Post on 23-Feb-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

WHY BREAKING CHANGES?

Page 2: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• @sokra

• @wSokra

• WEBPACK

• FULL-TIME CORE TEAM

Page 3: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS
Page 4: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• YEAH WEBPACK 5

• BREAKING CHANGES

• BREAK MY BUILD

• INVEST TIME

• WHY

Page 5: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• WHY LARGEST BREAKING CHANGES

• BONUS KNOW PREPARED

• BONUS BENEFITS

Page 6: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• DISLIKE BREAKING

CHANGES

• IT’S WORTH IT

Page 7: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• 4.0.0 4.1.0 4.2.0 4.3.0 4.4.0 4.5.0 4.6.0 4.7.0 4.8.04.9.0 4.10.0 4.11.0 4.12.0

4.13.0 4.14.0 4.15.0 4.16.0 4.17.04.18.0 4.19.0 4.20.0 4.21.0

4.22.0 4.23.0 4.24.0 4.25.0 4.26.0 4.27.0 4.28.04.29.0

4.30.0 4.31.0 4.32.0 4.33.0

• MINOR

• TECHNICAL DEPT

Page 8: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• TODOS

• PLAN FUTURE FEATURES

• PREPARATIONS

• NON-BREAKING WAY

• LARGE PLUGIN API SURFACE

Page 9: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS
Page 10: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• LONG TERM GOALS

• FEATURES

• CLEANUP WORK

• REFACTORING MODERNIZATION

Page 11: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

webpack.js.org/vote

Page 12: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• BETTER PERFORMANCE

• DISK

Page 13: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• LONG TERM CACHING

• EASIER RELIABLE

Page 14: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS
Page 15: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• FRONTEND MODULES

Page 16: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• LARGE

Page 17: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• UNAWARE

• ACCIDENTALLY

• BROWSER LIMITATIONS

• NATIVE WEB

• RESERVE NAMES

• OUTDATED

Page 18: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• AVOID USING

• PREFER FRONTEND-COMPATIBLE MODULES

• INSTALLING MANUALLY

Page 19: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• MUCH LARGER

• TEAMS ARE LARGER

• DEPLOYED MORE OFTEN

Page 20: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• BUNDLE SIZE BY DEFAULT

INVALIDATES ALL ASSETS

Page 21: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• DETERMINISTIC ALGORITHMS LONG TERM VALIDITY

Page 22: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• LONG TERM CACHING RELEVANT

Page 23: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• IN-MEMORY CACHING SYSTEM

• HOW TO PERSIST

• Module

Page 24: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• NOT SERIALIZABLE

• SUBCLASSES

• NON-PRIMITIVE NESTED OBJECTS

→ SERIALIZATION SYSTEM

→ SERIALIZABLE

Page 25: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• MODULE GRAPH

→ SEPARATE CLASS

Page 26: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• SYNCHRONOUS

ASYNC

Page 27: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• MORE EXPENSIVE

→ IDLE

→ close

Page 28: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• MINIMUM NODE.JS

• Set

• Map

• PURE-JS WATCHING

Page 29: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• QUEUES

• PLUGINS

Page 30: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

https://github.com/sokra/slides

Page 31: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS
Page 32: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• USELESS FILENAMES

• ALGORITHM

• src_lazy-loaded_js

• react_react-dom

Page 33: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• DIFFERENT FILENAMES

• NOTHING TO DO

• /* webpackChunkName: "name" */

Page 34: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• EXTENSIBLE BY PLUGINS

• NEW KINDS OF PLUGINS

Page 35: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• EXTENSIBLE BY PLUGINS

• OTHER MODULE TYPES

Page 36: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• import from b.x

• import as from export

• export

Page 37: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

https://github.com/sokra/slides

Page 38: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS
Page 39: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• EXPERIMENTS

• RELAXED SEMVER

• MOVE FASTER

• CHANGELOGS

Page 40: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• MULTIPLE WORKERS

Page 41: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• WITHOUT TOP-LEVEL RUNTIME

• ESM

Page 42: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

• CSS

• HTML

• WASM-ESM-INTEGRATION

• TOP-LEVEL-AWAIT

Page 43: Webpack 5 why Breaking changes? - GitHub...• TODOS • PLAN FUTURE FEATURES • PREPARATIONS • NON-BREAKING WAY • LARGE PLUGIN API SURFACE • LONG TERM GOALS

https://github.com/sokra/slides