You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript项目中package.json的main参数配置方法

TypeScript NPM包中package.json的main参数配置指南

核心结论先给你

main参数必须指向编译后的dist/index.js,这是TypeScript NPM包的标准做法,下面逐个解答你的疑问:

  • 应该配置index.ts还是index.js?
    选dist/index.js。Node环境默认只认JS文件,用户安装你的包后,不需要额外配置TypeScript就能直接导入使用。如果配置index.ts,只有本身在用TS的用户才能正常导入,这会大幅限制包的适用范围,完全不符合NPM包的发布规范。

  • 如果配置index.ts是否需要编译?
    就算你硬要配置index.ts,也必须提前把它编译成JS文件——但这毫无意义,普通JS用户还是用不了。别这么做,完全是给自己和用户添乱。

  • index.js是否需要指向dist/目录?
    是的,必须指向dist/下的JS文件。你的TS源码在src/,编译产物在dist/,发布时要把dist/目录包含进NPM包(可以通过package.json的files字段声明["dist/"],或者确保.npmignore没排除它)。

  • 用户要导入dist/mylist.js的类,必须配置main吗?
    main是包的主入口,但不是唯一入口。用户可以直接通过import { MyList } from 'your-package/dist/mylist'导入子模块,但这种写法不够友好。更规范的是在package.json里配置exports字段,明确导出各个子模块:

    "exports": {
      ".": "./dist/index.js",
      "./mylist": "./dist/mylist.js"
    }
    

    这样用户就能用更简洁的import { MyList } from 'your-package/mylist'导入,体验更好。

TypeScript NPM包的额外规范

  • 在tsconfig.json里设置outDir: "dist",确保编译产物都输出到dist目录;开启declaration: true,生成.d.ts类型文件,给TS用户提供类型提示。
  • 在package.json里配置types字段,指向dist/index.d.ts,让TS工具能自动识别类型定义。
  • 发布前别忘把src/目录排除在NPM包外(可以加到.npmignore),只发布dist/和必要的配置文件(比如package.json、README.md)。

内容的提问来源于stack exchange,提问作者vesii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 08:55:23