getopts
getopts copied to clipboard
ESM imports TypeScript types
If I understand correctly, the TypeScript types are for the CommonJS version of the code. When using "module": "ES2022"
in tsconfig.json
with allowSyntheticDefaultImports: false
, importing getopts
fails unless the type definitions are changed from:
export = getopts
to
export default getopts
It might be possible to resolve this by providing different type definitions for CommonJS and ESM (different on only this one line) and using an extension to package.json
that TypeScript 4.7 added (link) that lets TypeScript pick between type definition files based on the project's module type.
Alternatively, enabling allowSyntheticDefaultImports
for the project seems to fix it, too.
What about updating the types to support only ES modules? 🤔
Hmm, interesting idea. Personally, I do not feel that I know enough to opine very strongly on this type of thing. Wonder if it would be possible to find open source users of getopts on NPM, then try building them with and without such a change to see if it would cause any disturbances, and by how much. But this is just because I am not an expert in this area!
Looks like Chalk has done this in v5 https://github.com/chalk/chalk/releases
@pmer Works for me! Do you want to send me a patch with the change? 💯
If I can find the time to test it, would love to! 😀