Tree-shaking
Tree-shaking — это процесс удаления неиспользуемого (мёртвого) кода из итогового бандла. Это позволяет уменьшить размер финального файла и повысить производительность приложения. В результате в бандл попадает только тот код, который используется в проекте.
Tree-shaking включен по умолчанию в tsdown
, но при необходимости вы можете его отключить:
bash
tsdown --no-treeshake
Пример
Рассмотрим следующий исходный код:
ts
import { hello } from './util'
const x = 1
hello(x)
ts
export function unused() {
console.log("I'm unused.")
}
export function hello(x: number) {
console.log('Hello World')
console.log(x)
}
Вот два возможных результата в зависимости от того, включен ли tree-shaking:
js
function hello(x$1) {
console.log('Hello World')
console.log(x$1)
}
const x = 1
hello(x)
js
function unused() {
console.log("I'm unused.")
}
function hello(x$1) {
console.log('Hello World')
console.log(x$1)
}
const x = 1
hello(x)
Что происходит
- С Tree-shaking: Функция
unused
удаляется из финального бандла, поскольку она не вызывается нигде в исходном коде. - Без Tree-shaking: Функция
unused
включается в бандл, даже если она не используется, что приводит к увеличению размера выходного файла.
TIP
Tree-shaking особенно полезен для оптимизации библиотек или крупных проектов с множеством неиспользуемых экспортов. Однако, если вам нужно включить весь код (например, для отладки или тестирования), вы можете отключить его с помощью --no-treeshake
.