Skip to content

Commit

Permalink
Disable composite for type declarations
Browse files Browse the repository at this point in the history
We are using pkgroll with Typescript monorepos (managed by pnpm
workspaces) and project references. The latter requires
`compilerOptions.composite = true` in referenced projects for most `tsc`
invocations. If you set `references` without `compilerOptions.composite
= true`, `tsc` will fail, indicating that `composite` needs to be set.

When I run `pkgroll` and have `composite` set, I get TS6307 for every
file included from `src/index.ts`. rollup-plugin-dts does not handle
`composite` (see Swatinem/rollup-plugin-dts#127, which was closed
without fix or explanation). I looked at several other related tools
(rollup-plugin-typescript2, rollup-plugin-ts, others mentioned in
Swatinem/rollup-plugin-dts) and could not get any of them working to
build *just* the DTS files (rollup-plugin-typescript2 was the most
promising, but I could not get it working in the time that I allotted
for this investigation).

Going back to rollup-plugin-dts, we find the `compilerOptions` option,
and I tried explicitly setting `composite: false`, which allows my type
files to build again without errors.

I don't think that this is the *correct* fix; ideally, rollup-plugin-dts
would be fixed to better handle composite projects *or* would override
`composite` at all times. An alternative change, although much more
invasive to pkgroll, would be to have pkgroll accept an *alternate*
`tsconfig.json` as a parameter:

```console
$ pkgroll --tsconfig tsconfig.pkgroll.json
```

In the short term, this has eliminated the build issue that I have been
seeing, and it may be sufficient to resolve this until a better fix can
be determined in some way, whether by a `--tsconfig` parameter, upstream
fixes, or changing to a different bundler plugin for type declaration
plugins.
  • Loading branch information
halostatue committed Mar 1, 2024
1 parent fca7722 commit b535bd2
Showing 1 changed file with 1 addition and 0 deletions.
1 change: 1 addition & 0 deletions src/utils/get-rollup-configs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ const getConfig = {
resolveTypescriptMjsCts(),
dts.default({
respectExternal: true,
compilerOptions: { composite: false },
}) as Plugin,
],
output: [] as unknown as Output,
Expand Down

0 comments on commit b535bd2

Please sign in to comment.