plugins
plugins copied to clipboard
[typescript]: Default export type not being picked up with `module: "nodenext"`
- Rollup Plugin Name: @rollup/plugin-typescript
- Rollup Plugin Version: ^9.0.2
- Rollup Version: 2.78.1 (vite ^3.1.4)
- Operating System (or Browser): macOS 12.6
- Node Version: 16
- Link to reproduction (⚠️ read below): https://github.com/wight554/rollup-typescript-repro
Expected Behavior
Typing should be picked-up
Actual Behavior
This expression is not callable.
Type 'typeof import("/Users/Volodymyr_Zhdanov/playground/blog-template/node_modules/@rollup/plugin-typescript/types/index")' has no call signatures.
Additional Information
Steps to reproduct:
- Add these settings to tsconfig:
"module": "NodeNext",
"moduleResolution": "NodeNext",
- Add
"type": "module"topackage.json - Import and use typescript plugin
- See the error
3 possible fixes:
- Add named export for plugin
- Use CJS styled export in typings:
export default function typescript=>export = typescript; - Use declaration merging to make default export namespace and function simultaneously, example here: https://github.com/fastify/fastify-cookie/pull/184
I've used this thin wrapper for fixing typings before, might be helpful: https://github.com/wight554/vite-plugin-typescript/blob/main/index.d.ts
#1375
I have the same problem: are there any workarounds before an official support is complete?
I have the same problem: are there any workarounds before an official support is complete?
Seems like this one is completely ignored. When I created issue without repro I received feedback immediately. No one checked this issue since I wasted my time on repro
I'm sorry I don't understand what you mean, exactly: I'm unable to understand any of your workarounds: are you saying I ignored them?
Ran into this as well.. Too bad it's ignored!
For now, I'm using the following hacky workaround:
import virtualDefault from '@rollup/plugin-virtual';
import aliasDefault from '@rollup/plugin-alias';
const virtual = virtualDefault as unknown as virtualDefault.default;
const alias = aliasDefault as unknown as aliasDefault.default;
adding "type": "module" to the plugin's package.json seems to fix this, but i'm not sure if that's the correct solution since i'm not too familiar with esm
Per https://github.com/algolia/algoliasearch-client-javascript/issues/1431#issuecomment-1568529321 and https://arethetypeswrong.github.io/ the problem is not necessarily node.js, but rather the export statement.
I can't say I fully understand it myself, but take a look.
I've described the issue in more detail here https://github.com/rollup/plugins/issues/1541, including the exact reason why it happens and the way to fix it (skip over to "Additional Details" for it). I'm not familiar enough with this repository to write a fix, since it's almost entirely about the way the packages are distributed, and not the code itself.
OK. Just be aware this is unlikely to see a resolution without community contribution
Setting up publint for the package would also catch this. For example:
- https://publint.dev/@rollup/[email protected]
- https://publint.dev/@rollup/[email protected]