1a16d61a37
## Summary Allow projects using TypeScript 7 to enable `emitDecoratorMetadata()` without adding the TypeScript 6 compiler to every Trigger.dev CLI installation. Addresses #4500. ## Fix The extension now resolves TypeScript from the project and feature-detects the legacy compiler API. TypeScript 5 and 6 continue using the project's compiler, while TypeScript 7 projects can install Microsoft's optional `@typescript/typescript6` compatibility package alongside TypeScript 7. When no compatible compiler API is available, the build reports an actionable installation error. The extension documentation includes setup commands for npm, pnpm, and Bun. Verified with TypeScript 5, TypeScript 6, TypeScript 7 with and without the compatibility package, emitted decorator metadata, packed ESM and CommonJS consumers, package export checks, and typechecking.
53 lines
1.8 KiB
Plaintext
53 lines
1.8 KiB
Plaintext
---
|
|
title: "Emit Decorator Metadata"
|
|
sidebarTitle: "emitDecoratorMetadata"
|
|
description: "Use the emitDecoratorMetadata build extension to enable support for the emitDecoratorMetadata TypeScript compiler option"
|
|
---
|
|
|
|
If you need support for the `emitDecoratorMetadata` typescript compiler option, import the `emitDecoratorMetadata` build extension and use it in your `trigger.config.ts` file:
|
|
|
|
```ts
|
|
import { defineConfig } from "@trigger.dev/sdk";
|
|
import { emitDecoratorMetadata } from "@trigger.dev/build/extensions/typescript";
|
|
|
|
export default defineConfig({
|
|
project: "<project ref>",
|
|
// Your other config settings...
|
|
build: {
|
|
extensions: [emitDecoratorMetadata()],
|
|
},
|
|
});
|
|
```
|
|
|
|
This is usually required if you are using certain ORMs, like TypeORM, that require this option to be enabled. It's not enabled by default because there is a performance cost to enabling it.
|
|
|
|
<Note>
|
|
`emitDecoratorMetadata` hooks into the esbuild bundle process and uses the TypeScript compiler API
|
|
to compile files containing decorators. Enable `emitDecoratorMetadata` in your `tsconfig.json` and
|
|
install `typescript` in your `devDependencies`.
|
|
</Note>
|
|
|
|
## Using with TypeScript 7
|
|
|
|
TypeScript 7 does not expose the JavaScript compiler API required by this extension. Install the TypeScript 6 compatibility package alongside TypeScript 7:
|
|
|
|
<CodeGroup>
|
|
|
|
```bash npm
|
|
npm install --save-dev @typescript/typescript6@latest
|
|
```
|
|
|
|
```bash pnpm
|
|
pnpm add --save-dev @typescript/typescript6@latest
|
|
```
|
|
|
|
```bash bun
|
|
bun add --dev @typescript/typescript6@latest
|
|
```
|
|
|
|
</CodeGroup>
|
|
|
|
Your project continues using TypeScript 7 for its normal type checking and compiler commands. The extension loads the compatibility package only when it needs to emit decorator metadata.
|
|
|
|
Restart the Trigger.dev dev server after installing the package.
|