Types are not portable error when trying to generate .d.ts files with unplugin packages
roninjin10 opened this issue · comments
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 =