首页 > 解决方案 > 是否可以发布带有环境模块声明的包?

问题描述

我有一个包含大量生成模块的包,这些模块都导出相同的类型(例如图标库)。

我想避免.d.ts为每个模块创建一个文件,因为它们都是相同的。

相反,我想index.d.ts在包的根目录创建一个文件,如下所示:

// pkg-with-many-assets/index.d.ts

declare module 'pkg-with-many-assets/*' {
    const svgPath: string;
    export default svgPath;
}

我发现这没有在消费应用程序中注册。但是,当我将文件放在消费应用程序中时,这会起作用。

是否可以创建带有环境模块声明的包?


编辑:似乎这实际上是可能的,因为@types/simple-icons做到了。但是,如果我要将文件复制并粘贴@types/simple-icons/index.d.tssimple-icons/index.d.ts我的node_modules目录中,它就不再起作用了。

也许问题在于 TypeScript 没有读取包index.d.ts根目录下的文件simple-icons(尽管 中有"types": "index.d.ts"规范package.json)。

我设法通过在 中指定包名称来使上述工作正常工作tsconfig.json compilerOptions.types,但显然我希望这种检测是自动的,无需手动配置。

标签: typescriptmoduledeclarationtype-declarationambient

解决方案


文档中提到,

如果指定了类型,则仅列出的包将包含在全局范围内。

因此,您可能已经指定了类型,这会停止自动发现您的包@types。尝试完全删除 compilerOptions.types


推荐阅读