
Использование декораторов TypeScript с esbuild
14 мая 2023 г.Почти у каждого разработчика, которого я встречаю, есть один или несколько побочных проектов, над которыми они работают. Мой основной побочный проект (навык Alexa под названием Movie Quiz) помог мне изучить несколько новых технологий за эти годы. Работая над этим навыком, я научился всему: от DynamoDB проектирования одной таблицы до конвейеры CI/CD.
Недавно я узнал о NestJS на работе и о возможностях Inversion of Control и Dependency Injection. Так уж получилось, что кто-то любезно добавил Dependency Injection в фреймворк, который я использую для своего мастерства. Кроме того, у меня были трудности с получением некоторых обновлений навыков через сертификацию, поэтому мне показалось, что пришло время внедрить DI и написать ~~больше~~ несколько модульных тестов.
Проблемы с esbuild
Esbuild — это сверхбыстрый сборщик машинописных текстов. Эта скорость достигается за счет полного игнорирования машинописного текста. Проблема заключается в том, что внедрение зависимостей, которое я хотел использовать, зависит от декораторов TypeScript. Мне пришлось включить emitDecoratorMetadata и experimentalDecorators в моем файле tsconfig, но поскольку esbuild просто игнорирует это, я получаю только ошибки.
Замедление сборки
Решение состояло в том, чтобы получить подключаемый модуль, который сводил на нет всю производительность, полученную за счет игнорирования TypeScript. Плагин запускает каждый машинописный файл через tsc, прежде чем передать его в esbuild.
Сначала установите пакет esbuild-plugin-tsc
:
pnpm install -D esbuild-plugin-tsc
Теперь импортируйте его и передайте в конфигурацию esbuild. Я использую esbuild с бессерверным стеком, поэтому параметры немного вложены друг в друга, но вы также можете использовать плагины напрямую с esbuild.
import esbuildPluginTsc from 'esbuild-plugin-tsc';
...
const handler = new sst.Function(stack, 'Handler', {
nodejs: {
esbuild: {
plugins: [
esbuildPluginTsc({
tsconfigPath: path.join(HANDLER_ROOT, 'tsconfig.json'),
}),
],
}
}
});
Используйте правильный формат
Помимо использования плагина, мне пришлось обновить параметры esbuild для создания вывода в формате commonjs. Хотя это было сложно понять, это было довольно легко реализовать. Просто установите для параметра format
значение cjs
.
В бессерверной функции стека это делается в конфигурации nodejs
:
nodejs: {
format: 'cjs',
esbuild: {
...
}
}
Обзор
В этой статье вы увидели, как использовать декораторы в проекте TypeScript, связанном с esbuild. Будем надеяться, что декораторы скоро будут стандартизированы, и нам не придется обо всем этом беспокоиться. А пока я надеюсь, что эта статья избавит некоторых людей от разочарования, связанного с тем, чтобы заставить это работать!
:::информация Также опубликовано здесь
:::
Оригинал
Recent Post
-
Политика торговой марки Rust: следующие шаги
5 июля 2025 г. -
Создание модульных рабочих процессов речи в тексте: архитектура и анализ производительности агента CLI AI
5 июля 2025 г. -
Монолит до мультитенантного SaaS в 4 спринтах-не требуется переписать
5 июля 2025 г. -
Грязные секреты рекламы разработчиков: почему традиционные каналы терпят неудачу - и что вместо этого делать
3 июля 2025 г. -
Почему развитие Bluetooth отстой - и как это просто исправляет его
3 июля 2025 г.
Categories
- Python
- blockchain
- web
- hackernoon
- вычисления
- вычислительные компоненты
- цифровой дом
- игры
- аудио
- домашний кинотеатр
- Интернет
- Мобильные вычисления
- сеть
- фотосъемка видео
- портативные устройства
- программного обеспечения
- телефон и связь
- телевидение
- видео
- мир технологий
- умные гиды
- облако
- искусственный интеллект
- се
- Samsung
- умные города
- digitaltrends
- отели
- Startups
- Venture
- Crypto
- Apps
- безопасность
- техника и работа
- cxo
- мобильность
- разработчик
- 5г
- майкрософт
- инновации
- Права и свободы
- Законодательство и право
- Политика и общество
- Космическая промышленность
- Информационные технологии
- Технологии
- Образование
- Научные исследования
- Автомобильная промышленность
- Программная инженерия
- IT и технологии
- Веб-разработка
- Программирование
- Автоматизация
- Карьерный рост
- Программирование и анализ данных
- Трудоустройство
- Политика
- Искусственный интеллект
- ИТ-технологии
- Программное обеспечение
- Экологическая политика
- Образование и рынок труда
- Политика и право
- Microsoft Teams и SharePoint
- Информационная безопасность
- Кибербезопасность
- Налоги
- Образование и карьера
- Интернет и технологии
- Технологии, Государственные услуги
- Политика и технологии
- Разработка программного обеспечения
- Разработка ПО
- Машинное обучение
- Налогообложение, технологии, открытый исходный код
- Финансы и налоги
- Технологии, Интернет, Экология
- Интернет, безопасность
- Технологии и политика
- Операционные системы
- Профессиональная разработка
- Технологии, Безопасность
- Интернет и общество
- Финансовая индустрия
- Налоговый учёт
- Общественное здравоохранение
- Технологическая отрасль
- Юриспруденция
- Технологии и государство
- Здоровье и фитнес
- IT-инфраструктура
- Технологии и ИИ
- Здравоохранение
- IT
- Технологии, Экономика
- Музыка и технологии
- Здоровье и питание
- IT и безопасность
- Бизнес и предпринимательство
- Технологии, Программное обеспечение
- Технологии и инновации
- Технологии, данные, этика
- Технологии и Интернет
- Технологии и SaaS
- Медицина и здравоохранение
- Онлайн-видеосервисы
- Финансы и технологии
- Чтение и саморазвитие
- Экономика и бизнес
- Безопасность данных
- Удаленная работа
- Авиация и технологии
- Технологии, Игры
- Энергетика
- Социальные сети, безопасность, технологии
- Саморазвитие
- Безопасность информации
- Бизнес и карьера
- Технологии и отношения
- Игровая индустрия
- Компьютерная индустрия
- Математика, Искусственный интеллект
- Наука и технологии
- Технологии и безопасность
- Технологии, Удаленная работа, Бизнес
- Видеоигры
- Технологии, Искусственный интеллект, Этика
- Технологии, социальные сети, 6G
- Технологии, Программирование, AI, Разработка ПО
- Программирование, Разработка ПО, Технологии
- Животные
- Технологии, Искусственный интеллект
- Программирование, карьера, технологии, обучение
- Бизнес и технологии
- Технологии, Безопасность данных
- Астрономия и физика
- Продуктивность, личное развитие
- Медиа и Технологии
- Программирование и Искусственный Интеллект
- Социальные сети
- Политика и экономика
- Технологии, Медицина, Искусственный интеллект
- Технологии и управление
- Космос и астрономия
- Общество и политика
- Космические исследования
- Веб-дизайн
- Искусственный интеллект и безопасность данных
- Технологии, Безопасность, Конфиденциальность
- Экологическая проблема
- Технологии, Погода
- Авиация
- Транспортная сфера
- Технологии и бизнес
- Игровая промышленность
- Телевидение и реклама
- Аналитика данных
- Технологии и кибербезопасность
- Маркетинг
- Технологии и гаджеты
- Технологии, Авиация, Инновации
- Финансы и инвестиции
- Технологии и общество
- Рыночный анализ
- Космология
- Данные и бизнес
- IT и программирование
- Технологии и право
- Программирование и разработка
- Медицинские технологии
- Авиационная промышленность
- Технологии и искусственный интеллект
- Генетическая инженерия
- Бизнес и инвестиции
- Компьютерная промышленность
- Психология и социология
- Образование и технологии
- Рынок труда
- Технологии, Стартапы
- Технологии, Приватность, Чтение
- Маркетинг и продажи
- Виртуальная реальность
- Технологии, Смартфоны, Маркетинг
- Технологии, Бизнес, Личностный рост
- Экологические проблемы
- Экономика и технологии
- IT и карьера
- Интернет и безопасность
- Разработка и технологии
- Биотехнологии
- Интернет-магазины, кибербезопасность
- Финансы
- Безопасность и технологии
- Экономика
- Защита данных
- Data Science
- Карьера и работа
- Финансовый успех, мошенничество, маркетинг
- Безопасность
- Экология
- Космическая индустрия
- Программирование, Python, Обучение
- Технологии искусственного интеллекта
- Технологии, Дизайн, iOS
- Программирование, DevOps, Kubernetes
- Социальные сети и пропаганда
- Корпоративная этика
- Управление IT-инфраструктурой
- Здоровье и медицина
- Медицина
- Медицинская промышленность
- Разработка и дизайн
- Искусственный интеллект, Диагностика систем
- Образование и психология
- Технологии, Автомобильная промышленность
- Автомобили и путешествия
- Астрономия и космология
- Программирование и технологии
- IT, работа в офисе, эмоциональный интеллект
- Компьютерная техника
- Здоровье и благополучие
- Управление персоналом
- Политика и управление
- Бизнес и экономика
- Социальные сети, Пропаганда, Информационная безопасность
- Технологии и автоматизация
- Геймдизайн
- Экология и технологии
- CRM-системы, IT-инфраструктура
- Права человека
- Цифровая цензура, свобода слова, технологии
- Технологии, Искусственный интеллект, Работа
- Наука о данных
- Астрономия, Наука
- Интернет и цифровые технологии
- Технологии, управление
- Интернет и связь
- Технологии и конфиденциальность
- Интернет и свобода слова
- Психология и социальные науки
- Книги и литература
- Работа и карьера
- Финансовые технологии
- Психология и саморазвитие
- IT, программирование, сети
- Технологии, Видеоигры
- Экология и энергетика
- Космонавтика
- Медицина и технологии
- Игры и развлечения
- Музыкальная индустрия
- Логистика и складирование
- Бизнес и финансы
- Экология и окружающая среда
- Правозащита
- Социальные сети и дезинформация
- Технологии и рынок труда
- Технологии, Искусственный интеллект, Рынок труда
- Технологии и будущее
- Медицина и здоровье
- Социальные медиа
- Экология, политика, общество
- Экономика и Финансы
- Разработка игр
- Пропаганда и дезинформация
- Медицинские исследования
- Онлайн-знакомства