---
url: /reference/api/Interface.InlineConfig.md
---
# Interface: InlineConfig

Defined in: [src/config/types.ts:665](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L665)

Options for tsdown.

## Extends

* [`UserConfig`](Interface.UserConfig.md)

## Properties

### alias?

```ts
optional alias?: Record<string, string>;
```

Defined in: [src/config/types.ts:180](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L180)

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`alias`](Interface.UserConfig.md#alias)

***

### attw?

```ts
optional attw?: WithEnabled<AttwOptions>;
```

Defined in: [src/config/types.ts:582](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L582)

Run `arethetypeswrong` after bundling.
Requires `@arethetypeswrong/core` to be installed.

#### Default

```ts
false
```

#### See

https://github.com/arethetypeswrong/arethetypeswrong.github.io

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`attw`](Interface.UserConfig.md#attw)

***

### banner?

```ts
optional banner?: ChunkAddon;
```

Defined in: [src/config/types.ts:409](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L409)

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`banner`](Interface.UserConfig.md#banner)

***

### checks?

```ts
optional checks?: ChecksOptions & object;
```

Defined in: [src/config/types.ts:334](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L334)

Controls which warnings are emitted during the build process. Each option can be set to `true` (emit warning) or `false` (suppress warning).

#### Type Declaration

##### legacyCjs?

```ts
optional legacyCjs?: boolean;
```

If the config includes the `cjs` format and
one of its targets is a Node.js version that supports `require(esm)`
(`^20.19.0 || >=22.12.0`),
warn the user about the deprecation of CommonJS.

###### Default

```ts
true
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`checks`](Interface.UserConfig.md#checks)

***

### cjsDefault?

```ts
optional cjsDefault?: boolean;
```

Defined in: [src/config/types.ts:459](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L459)

Converts a single default export from an explicit CJS entry module to
`module.exports`. It does not apply to non-entry chunks emitted in
unbundle mode.

#### Default

```ts
true
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`cjsDefault`](Interface.UserConfig.md#cjsdefault)

***

### clean?

```ts
optional clean?: boolean | string[];
```

Defined in: [src/config/types.ts:403](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L403)

Remove stale build output.

Defaults to the output directory. Emitted files are overwritten in
place. After every build that shares that directory has finished,
files that none of them emitted again are deleted. ESM and CJS outputs
in the same directory are kept together.

#### Default

```ts
true
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`clean`](Interface.UserConfig.md#clean)

***

### concurrency?

```ts
optional concurrency?: number;
```

Defined in: [src/config/types.ts:685](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L685)

Maximum number of Rolldown builds to run in parallel.

***

### config?

```ts
optional config?: string | boolean;
```

Defined in: [src/config/types.ts:669](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L669)

Config file path

***

### configLoader?

```ts
optional configLoader?: "tsx" | "auto" | "native" | "unrun";
```

Defined in: [src/config/types.ts:675](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L675)

Config loader to use. It can only be set via CLI or API.

#### Default

```ts
'auto'
```

***

### copy?

```ts
optional copy?:
  | CopyOptions
  | CopyOptionsFn;
```

Defined in: [src/config/types.ts:626](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L626)

Copy files to another directory.

#### Example

```ts
;[
  'src/assets',
  'src/env.d.ts',
  'src/styles/**/*.css',
  { from: 'src/assets', to: 'dist/assets' },
  { from: 'src/styles/**/*.css', to: 'dist', flatten: true },
]
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`copy`](Interface.UserConfig.md#copy)

***

### css?

```ts
optional css?: CssOptions;
```

Defined in: [src/config/types.ts:611](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L611)

**\[experimental]** CSS options.
Requires `@tsdown/css` to be installed.

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`css`](Interface.UserConfig.md#css)

***

### customLogger?

```ts
optional customLogger?: Logger;
```

Defined in: [src/config/types.ts:512](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L512)

Custom logger.

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`customLogger`](Interface.UserConfig.md#customlogger)

***

### cwd?

```ts
optional cwd?: string;
```

Defined in: [src/config/types.ts:482](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L482)

The working directory of the config file.

* Defaults to process.cwd | process.cwd() for root config.
* Defaults to the package directory for [`workspace`](Interface.UserConfig.md#workspace) config.

#### Default

```ts
process.cwd()
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`cwd`](Interface.UserConfig.md#cwd)

***

### define?

```ts
optional define?: Record<string, string>;
```

Defined in: [src/config/types.ts:255](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L255)

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`define`](Interface.UserConfig.md#define)

***

### deps?

```ts
optional deps?: DepsConfig;
```

Defined in: [src/config/types.ts:178](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L178)

Dependency handling options.

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`deps`](Interface.UserConfig.md#deps)

***

### devtools?

```ts
optional devtools?: WithEnabled<DevtoolsOptions>;
```

Defined in: [src/config/types.ts:541](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L541)

**\[experimental]** Enable devtools.

DevTools is still under development, and this is for early testers only.

This may slow down the build process significantly.

#### Default

```ts
false
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`devtools`](Interface.UserConfig.md#devtools)

***

### dts?

```ts
optional dts?: WithEnabled<DtsOptions>;
```

Defined in: [src/config/types.ts:559](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L559)

Enables generation of TypeScript declaration files (`.d.ts`).

By default, this option is auto-detected:

* If [`exe`](Interface.UserConfig.md#exe) is enabled, declaration file generation is disabled by default.
* If the `types` or `typings` field is present in `package.json`, or if its `exports` field contains a `types` entry, declaration file generation is enabled by default.
* Otherwise, if the resolved `tsconfig.json` has `declaration: true`, declaration file generation is enabled by default.
* Otherwise, declaration file generation is disabled by default.

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`dts`](Interface.UserConfig.md#dts)

***

### entry?

```ts
optional entry?: TsdownInputOption;
```

Defined in: [src/config/types.ts:173](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L173)

Defaults to `'src/index.ts'` if it exists.

Supports glob patterns with negation to exclude files:

#### Example

```ts
entry: {
  "hooks/*": ["./src/hooks/*.ts", "!./src/hooks/index.ts"],
}
```

#### Default

```ts
{
  index: 'src/index.ts'
}
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`entry`](Interface.UserConfig.md#entry)

***

### env?

```ts
optional env?: Record<string, any>;
```

Defined in: [src/config/types.ts:243](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L243)

Compile-time env variables, which can be accessed via `import.meta.env` or `process.env`.

#### Example

```json
{
  "DEBUG": true,
  "NODE_ENV": "production"
}
```

#### Default

```ts
{
}
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`env`](Interface.UserConfig.md#env)

***

### envFile?

```ts
optional envFile?: string;
```

Defined in: [src/config/types.ts:249](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L249)

Path to env file providing compile-time env variables.

#### Example

```ts
`.env`, `.env.production`, etc.
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`envFile`](Interface.UserConfig.md#envfile)

***

### envPrefix?

```ts
optional envPrefix?: string | string[];
```

Defined in: [src/config/types.ts:254](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L254)

When loading env variables from `envFile`, only include variables with these prefixes.

#### Default

```ts
'TSDOWN_'
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`envPrefix`](Interface.UserConfig.md#envprefix)

***

### exe?

```ts
optional exe?: WithEnabled<ExeOptions>;
```

Defined in: [src/config/types.ts:639](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L639)

**\[experimental]** Bundle as executable using Node.js SEA (Single Executable Applications).

This will bundle the output into a single executable file using Node.js SEA.
Note that this is only supported on Node.js 25.7.0 and later, and is not supported in Bun or Deno.

#### Default

```ts
false
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`exe`](Interface.UserConfig.md#exe)

***

### exports?

```ts
optional exports?: WithEnabled<ExportsOptions>;
```

Defined in: [src/config/types.ts:605](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L605)

Generate package exports for `package.json`.

This will set the `exports` field in `package.json` to point to the
generated files.

#### Default

```ts
false
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`exports`](Interface.UserConfig.md#exports)

***

### ~~external?~~

```ts
optional external?: string | RegExp | (string | RegExp)[] | ExternalOptionFunction;
```

Defined in: [src/config/types.ts:655](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L655)

Cannot be combined with `deps.neverBundle`; setting both throws an error.

#### Deprecated

Use [`deps.neverBundle`](Interface.DepsConfig.md#neverbundle) instead.

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`external`](Interface.UserConfig.md#external)

***

### failOnWarn?

```ts
optional failOnWarn?: boolean | CIOption;
```

Defined in: [src/config/types.ts:500](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L500)

If true, fails the build on warnings.

#### Default

```ts
false
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`failOnWarn`](Interface.UserConfig.md#failonwarn)

***

### filter?

```ts
optional filter?: RegExp | Arrayable<string>;
```

Defined in: [src/config/types.ts:680](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L680)

Filter configs by cwd or name.

***

### fixedExtension?

```ts
optional fixedExtension?: boolean;
```

Defined in: [src/config/types.ts:438](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L438)

Use a fixed extension for output files.
The extension will always be `.cjs` or `.mjs`.
Otherwise, it will depend on the package type.

Defaults to `true` if [`platform`](Interface.UserConfig.md#platform) is set to `node`,
`false` otherwise.

#### Default

```ts
platform === 'node'
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`fixedExtension`](Interface.UserConfig.md#fixedextension)

***

### footer?

```ts
optional footer?: ChunkAddon;
```

Defined in: [src/config/types.ts:408](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L408)

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`footer`](Interface.UserConfig.md#footer)

***

### format?

```ts
optional format?:
  | "es" | "cjs" | "iife" | "umd" | "commonjs" | "module" | "esm"
  | ("es" | "cjs" | "iife" | "umd" | "commonjs" | "module" | "esm")[]
| Partial<Record<"es" | "cjs" | "iife" | "umd" | "commonjs" | "module" | "esm", Partial<ResolvedConfig>>>;
```

Defined in: [src/config/types.ts:371](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L371)

Output format(s). Available formats are

* `esm`: ESM
* `cjs`: CommonJS
* `iife`: IIFE
* `umd`: UMD

#### Default

```ts
'esm'
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`format`](Interface.UserConfig.md#format)

***

### fromVite?

```ts
optional fromVite?: boolean | "vitest";
```

Defined in: [src/config/types.ts:521](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L521)

Reuse config from Vite or Vitest (experimental)

#### Default

```ts
false
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`fromVite`](Interface.UserConfig.md#fromvite)

***

### globalName?

```ts
optional globalName?: string;
```

Defined in: [src/config/types.ts:372](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L372)

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`globalName`](Interface.UserConfig.md#globalname)

***

### globImport?

```ts
optional globImport?: boolean;
```

Defined in: [src/config/types.ts:595](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L595)

`import.meta.glob` support.

#### See

https://vite.dev/guide/features.html#glob-import

#### Default

```ts
true
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`globImport`](Interface.UserConfig.md#globimport)

***

### hash?

```ts
optional hash?: boolean;
```

Defined in: [src/config/types.ts:450](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L450)

If enabled, appends hash to chunk filenames.

#### Default

```ts
true
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`hash`](Interface.UserConfig.md#hash)

***

### hooks?

```ts
optional hooks?:
  | Partial<TsdownHooks>
  | ((hooks) => Awaitable<void>);
```

Defined in: [src/config/types.ts:628](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L628)

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`hooks`](Interface.UserConfig.md#hooks)

***

### ignoreWatch?

```ts
optional ignoreWatch?: Arrayable<string | RegExp>;
```

Defined in: [src/config/types.ts:530](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L530)

Files or patterns to not watch while in watch mode.

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`ignoreWatch`](Interface.UserConfig.md#ignorewatch)

***

### inputOptions?

```ts
optional inputOptions?:
  | InputOptions
  | ((options, format, context) => Awaitable<void | InputOptions | null>);
```

Defined in: [src/config/types.ts:351](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L351)

Use with caution; ensure you understand the implications.

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`inputOptions`](Interface.UserConfig.md#inputoptions)

***

### loader?

```ts
optional loader?: ModuleTypes;
```

Defined in: [src/config/types.ts:285](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L285)

Sets how input files are processed.
For example, use 'js' to treat files as JavaScript or 'base64' for images.
Lets you import or require files like images or fonts.

#### Example

```json
{ ".jpg": "asset", ".png": "base64" }
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`loader`](Interface.UserConfig.md#loader)

***

### logLevel?

```ts
optional logLevel?: LogLevel;
```

Defined in: [src/config/types.ts:495](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L495)

Log level.

#### Default

```ts
'info'
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`logLevel`](Interface.UserConfig.md#loglevel)

***

### minify?

```ts
optional minify?: boolean | "dce-only" | MinifyOptions;
```

Defined in: [src/config/types.ts:407](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L407)

#### Default

```ts
'dce-only'
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`minify`](Interface.UserConfig.md#minify)

***

### name?

```ts
optional name?: string;
```

Defined in: [src/config/types.ts:489](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L489)

The name to show in CLI output. This is useful for monorepos or workspaces.
When using workspace mode, this option defaults to the package name from package.json.
In non-workspace mode, this option must be set explicitly for the name to show in the CLI output.

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`name`](Interface.UserConfig.md#name)

***

### nodeProtocol?

```ts
optional nodeProtocol?: boolean | "strip";
```

Defined in: [src/config/types.ts:329](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L329)

Control whether built-in Node.js module imports use the `node:` protocol.

* `true`: Add the `node:` prefix to built-in module imports.
* `'strip'`: Remove the `node:` prefix from built-in module imports.
* `false`: Do not transform built-in module imports.

#### Default

```ts
false
```

#### Examples

```ts
// Input
import 'fs'

// Output
import 'node:fs'
```

```ts
// Input
import 'node:fs'

// Output
import 'fs'
```

```ts
// Input
import 'node:fs'

// Output
import 'node:fs'
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`nodeProtocol`](Interface.UserConfig.md#nodeprotocol)

***

### ~~noExternal?~~

```ts
optional noExternal?:
  | Arrayable<string | RegExp>
  | NoExternalFn;
```

Defined in: [src/config/types.ts:660](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L660)

Cannot be combined with `deps.alwaysBundle`; setting both throws an error.

#### Deprecated

Use [`deps.alwaysBundle`](Interface.DepsConfig.md#alwaysbundle) instead.

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`noExternal`](Interface.UserConfig.md#noexternal)

***

### onSuccess?

```ts
optional onSuccess?: string | ((config, signal) => void | Promise<void>);
```

Defined in: [src/config/types.ts:546](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L546)

You can specify command to be executed after a successful build, specially useful for Watch mode

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`onSuccess`](Interface.UserConfig.md#onsuccess)

***

### outDir?

```ts
optional outDir?: string;
```

Defined in: [src/config/types.ts:376](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L376)

#### Default

```ts
'dist'
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`outDir`](Interface.UserConfig.md#outdir)

***

### outExtensions?

```ts
optional outExtensions?: OutExtensionFactory;
```

Defined in: [src/config/types.ts:444](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L444)

Custom extensions for output files.
[`fixedExtension`](Interface.UserConfig.md#fixedextension) will be overridden by this option.

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`outExtensions`](Interface.UserConfig.md#outextensions)

***

### outputOptions?

```ts
optional outputOptions?:
  | OutputOptions
  | ((options, format, context) => Awaitable<void | OutputOptions | null>);
```

Defined in: [src/config/types.ts:464](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L464)

Use with caution; ensure you understand the implications.

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`outputOptions`](Interface.UserConfig.md#outputoptions)

***

### platform?

```ts
optional platform?: "node" | "neutral" | "browser";
```

Defined in: [src/config/types.ts:198](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L198)

Specifies the target runtime platform for the build.

* `node`: Node.js and compatible runtimes (e.g., Deno, Bun).
  For CJS format, this is always set to `node` and cannot be changed.
* `neutral`: A platform-agnostic target with no specific runtime assumptions.
* `browser`: Web browsers.

#### Default

```ts
'node'
```

#### See

https://tsdown.dev/options/platform

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`platform`](Interface.UserConfig.md#platform)

***

### plugins?

```ts
optional plugins?: TsdownPluginOption;
```

Defined in: [src/config/types.ts:346](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L346)

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`plugins`](Interface.UserConfig.md#plugins)

***

### publint?

```ts
optional publint?: WithEnabled<PublintOptions>;
```

Defined in: [src/config/types.ts:573](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L573)

Run `publint` after bundling.
Requires `publint` to be installed.

#### Default

```ts
false
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`publint`](Interface.UserConfig.md#publint)

***

### report?

```ts
optional report?: WithEnabled<ReportOptions>;
```

Defined in: [src/config/types.ts:588](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L588)

Enable size reporting after bundling.

#### Default

```ts
true
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`report`](Interface.UserConfig.md#report)

***

### root?

```ts
optional root?: string;
```

Defined in: [src/config/types.ts:426](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L426)

Specifies the root directory of input files, similar to TypeScript's `rootDir`.
This determines the output directory structure.

By default, the root is computed as the common base directory of all entry files.

#### See

https://www.typescriptlang.org/tsconfig/#rootDir

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`root`](Interface.UserConfig.md#root)

***

### shims?

```ts
optional shims?: boolean;
```

Defined in: [src/config/types.ts:267](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L267)

Inject CJS `__dirname` and `__filename` shims into ESM output.
Only applies when [`platform`](Interface.UserConfig.md#platform) is set to `node`.

Note: `import.meta.url`, `import.meta.dirname`, and `import.meta.filename`
are always shimmed in CJS output, regardless of this option.

#### See

https://tsdown.dev/options/shims

#### Default

```ts
false
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`shims`](Interface.UserConfig.md#shims)

***

### sourcemap?

```ts
optional sourcemap?: Sourcemap;
```

Defined in: [src/config/types.ts:392](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L392)

Whether to generate source map files.

Note that this option will always be `true` if you have
[\`declarationMap\`](https://www.typescriptlang.org/tsconfig/#declarationMap)
option enabled in your `tsconfig.json`.

#### Default

```ts
false
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`sourcemap`](Interface.UserConfig.md#sourcemap)

***

### suppressWarnings?

```ts
optional suppressWarnings?: Arrayable<string | RegExp> | ((msg) => boolean);
```

Defined in: [src/config/types.ts:508](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L508)

Suppress warnings whose message matches the given pattern(s).

Accepts a string (substring match), a `RegExp`, an array of either, or a
predicate function. Matched warnings are dropped before `failOnWarn` is
applied, so they won't fail the build.

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`suppressWarnings`](Interface.UserConfig.md#suppresswarnings)

***

### target?

```ts
optional target?: string | false | string[];
```

Defined in: [src/config/types.ts:229](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L229)

Specifies the compilation target environment(s).

Determines the JavaScript version or runtime(s) for which the code should be compiled.
If not set, defaults to the value of `engines.node` in your project's `package.json`.
If no `engines.node` field exists, no syntax transformations are applied.

Accepts a single target (e.g., `'es2020'`, `'node18'`, `'baseline-widely-available'`), an array of targets, or `false` to disable all transformations.

#### See

<https://tsdown.dev/options/target#supported-targets> for a list of valid targets and more details.

#### Examples

```jsonc
// Target a single environment
{ "target": "node18" }
```

```jsonc
// Target multiple environments
{ "target": ["node18", "es2020"] }
```

```jsonc
// Disable all syntax transformations
{ "target": false }
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`target`](Interface.UserConfig.md#target)

***

### treeshake?

```ts
optional treeshake?: boolean | TreeshakingOptions;
```

Defined in: [src/config/types.ts:274](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L274)

Configure tree shaking options.

#### See

<https://rolldown.rs/reference/InputOptions.treeshake> for more details.

#### Default

```ts
true
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`treeshake`](Interface.UserConfig.md#treeshake)

***

### tsconfig?

```ts
optional tsconfig?: string | boolean;
```

Defined in: [src/config/types.ts:185](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L185)

#### Default

```ts
true
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`tsconfig`](Interface.UserConfig.md#tsconfig)

***

### unbundle?

```ts
optional unbundle?: boolean;
```

Defined in: [src/config/types.ts:416](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L416)

Determines whether `unbundle` is enabled.
When set to `true`, the output files will mirror the input file structure.

#### Default

```ts
false
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`unbundle`](Interface.UserConfig.md#unbundle)

***

### unused?

```ts
optional unused?: WithEnabled<Options>;
```

Defined in: [src/config/types.ts:566](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L566)

Enable unused dependencies check with `unplugin-unused`
Requires `unplugin-unused` to be installed.

#### Default

```ts
false
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`unused`](Interface.UserConfig.md#unused)

***

### watch?

```ts
optional watch?: boolean | Arrayable<string>;
```

Defined in: [src/config/types.ts:526](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L526)

#### Default

```ts
false
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`watch`](Interface.UserConfig.md#watch)

***

### workspace?

```ts
optional workspace?: true | Arrayable<string> | Workspace;
```

Defined in: [src/config/types.ts:645](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L645)

**\[experimental]** Enable workspace mode.
This allows you to build multiple packages in a monorepo.

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`workspace`](Interface.UserConfig.md#workspace)

***

### write?

```ts
optional write?: boolean;
```

Defined in: [src/config/types.ts:382](https://github.com/rolldown/tsdown/blob/a00f9fe3140ed2870584864d18815f3573583c09/src/config/types.ts#L382)

Whether to write the files to disk.
This option is incompatible with watch mode.

#### Default

```ts
true
```

#### Inherited from

[`UserConfig`](Interface.UserConfig.md).[`write`](Interface.UserConfig.md#write)
