Tree shaking
Ottimizzazione dei bundler che elimina dal pacchetto finale il codice non utilizzato; il termine viene da Rollup (Rich Harris, 2015).
Richiede analisi statica, quindi funziona solo con i moduli ES. Con CommonJS era impossibile, perché require() è dinamico, mentre import/export si possono analizzare in anticipo. Il bundler costruisce il grafo delle dipendenze, marca ciò che non serve e lo scarta. L'opzione sideEffects: false in package.json lo aiuta: dichiara che il pacchetto è privo di effetti collaterali e può essere potato senza timori. L'esempio classico è la differenza tra lodash-es e lodash. Oggi Vite, Rollup, esbuild e Bun fanno tree shaking, e anche Webpack, con mode: 'production'.