仅包含type与interface定义的TypeScript文件如何发布到NPM
问题1:package.json中main字段的配置方案
不需要删除main字段,也不要设置为"main": "dist/types.ts",按以下规则配置即可:
- 新增一个空的
index.js文件放在最终发布的dist目录下,将main字段指向该文件:"main": "dist/index.js"。这是为了符合NPM包的规范要求,避免安装、引用时出现找不到入口文件的报错。 - 额外新增
types字段,指向编译后的类型声明文件入口:"types": "dist/index.d.ts",这是TypeScript官方规定的类型声明入口识别字段,只有配置了这个字段,用户安装你的包后才能正确读取到类型定义。
问题2:是否需要编译为.d.ts格式发布
必须要将源.ts文件编译为标准的.d.ts格式后再发布,原因如下:
- .d.ts是TypeScript官方规定的类型声明标准格式,不受用户项目的TS配置差异影响,兼容性最好。
- 绝大多数TS项目的默认配置都会排除node_modules目录下的普通.ts文件,仅识别.d.ts后缀的类型声明,直接发布源.ts文件会导致用户读取不到类型。
- 编译操作非常简单,只需要在你的项目tsconfig.json中开启两个配置项即可,你提供的类型定义代码编译后不会有任何内容丢失:
{ "compilerOptions": { "declaration": true, "emitDeclarationOnly": true, "outDir": "./dist" } }
参考package.json核心配置
{ "name": "你的包名", "version": "1.0.0", "main": "dist/index.js", "types": "dist/index.d.ts", "files": ["dist"] }
内容的提问来源于stack exchange,提问作者Heyyy Marco
相关产品推荐
相关产品推荐

