Skip to content

Types are not portable error when trying to generate .d.ts files with unplugin packages #322

Description

@roninjin10

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

  1. Check out monorepo
  2. pnpm install
  3. cd bundlers/bundler
  4. 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/[email protected]_@[email protected]/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/[email protected]/node_modules/webpack'. This is likely not portable. A type annotation is necessary.

58 export const webpackFoundry =

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions