Environment
- node 18.12.1
- pnpm 8.6.5
- typescript 5.1.6
- unplugin 1.3.2
Reproduction
https://github.com/evmts/evmts-monorepo/blob/main/bundlers/bundler/src/unplugin/index.ts
- Check out monorepo
pnpm install
cd bundlers/bundler
npx tsc --emitDeclarationOnly
Describe the bug
When trying to compile unplugin we get a type is not portable error on multiple plugins.
Additional context
This error happens when trying to compile a .d.ts file. Some inferred type within unplugin is private, making it impossible for the .d.ts file to reference it. Because of this this error gets thrown.
As a workaround I cast the vite plugin as a rollup plugin and the webpack plugin as a rsPack plugin.
To fix just need to explicitly type whatever types from vite and webpack are being inferred privately or reexport them.
Logs
src/unplugin/index.ts:55:14 - error TS2742: The inferred type of 'viteFoundry' cannot be named without a reference to '.pnpm/vite@4.3.9_@types+node@20.4.2/node_modules/vite'. This is likely not portable. A type annotation is necessary.
55 export const viteFoundry = foundryUnplugin.vite
~~~~~~~~~~~
src/unplugin/index.ts:58:14 - error TS2742: The inferred type of 'webpackFoundry' cannot be named without a reference to '.pnpm/webpack@5.1.0/node_modules/webpack'. This is likely not portable. A type annotation is necessary.
58 export const webpackFoundry =
Environment
Reproduction
https://github.com/evmts/evmts-monorepo/blob/main/bundlers/bundler/src/unplugin/index.ts
pnpm installcd bundlers/bundlernpx tsc --emitDeclarationOnlyDescribe the bug
When trying to compile unplugin we get a
type is not portableerror on multiple plugins.Additional context
This error happens when trying to compile a
.d.tsfile. Some inferred type within unplugin is private, making it impossible for the.d.tsfile to reference it. Because of this this error gets thrown.As a workaround I cast the
viteplugin as arollupplugin and thewebpackplugin as arsPackplugin.To fix just need to explicitly type whatever types from vite and webpack are being inferred privately or reexport them.
Logs