Перейти к содержимому

Карты исходного кода (Source Maps)

Карты исходного кода связывают ваш исходный код с оптимизированным кодом, который выполняется в браузере или других средах, значительно упрощая отладку. Они позволяют отслеживать ошибки и логи до исходных файлов, даже если код был минифицирован или собран в пакет.

Например, карты исходного кода позволяют определить, какая строка в вашем React или Vue компоненте вызвала ошибку, даже если среда выполнения видит только собранный или минифицированный код.

Включение карт исходного кода

Вы можете указать tsdown генерировать карты исходного кода с помощью опции --sourcemap:

bash
tsdown --sourcemap

Или в конфиге:

tsdown.config.ts
ts
import { defineConfig } from 'tsdown'

export default defineConfig({
  sourcemap: true,
})

NOTE

Карты исходного кода включаются автоматически, если в tsconfig.json включена опция declarationMap.

Режимы

Опция sourcemap принимает такие значения:

ЗначениеОписание
falseКарты исходного кода отключены (по умолчанию)
trueГенерируются отдельные файлы .map. В каждый выходной файл добавляется комментарий //# sourceMappingURL со ссылкой на соответствующий .map
'inline'Карта встроена в выходной файл в виде base64 data URL. Отдельный .map не создаётся. Аналог inlineSourceMap в TypeScript
'hidden'Генерируются отдельные .map файлы, но комментарий //# sourceMappingURL не добавляется. Удобно, когда карты нужны сервисам мониторинга ошибок, но не должны подгружаться браузером автоматически

Через CLI

bash
# Включить source map (отдельные .map файлы)
tsdown --sourcemap

# Встроенные в файл
tsdown --sourcemap inline

# Скрытые .map без комментария в выводе
tsdown --sourcemap hidden

В конфиге

tsdown.config.ts
ts
import { defineConfig } from 'tsdown'

export default defineConfig({
  // Встроить карту в выходной файл
  sourcemap: 'inline',
})
tsdown.config.ts
ts
import { defineConfig } from 'tsdown'

export default defineConfig({
  // Генерировать .map без комментария sourceMappingURL
  sourcemap: 'hidden',
})

Распространяется под лицензией MIT.