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

TypeScript原生Node模块被宿主项目导入的配置问题咨询

TypeScript模块导入与自动转译问题解答

我正在开发两个TypeScript项目:一个是名为my-node-module的原生Node模块,被另一个名为host-project的宿主项目导入。host-project的package.json中依赖配置为:

"my-node-module": "git+ssh://git@github.com:foo/my-node-module"

my-node-module以TypeScript编写,希望在宿主项目中导入它,有以下两个问题:

问题1:能否直接导入src/index.ts,还是转译步骤必须?

转译步骤是必须的,没办法直接通过import myModule from 'my-node-module'导入src/index.ts文件,原因如下:

  • Node.js本身不支持直接运行TypeScript文件,必须先转译为JavaScript才能执行;
  • my-node-module的package.json指定主入口为js/index.js,Node会优先读取这个配置加载模块,不会自动查找src目录下的TS文件。

问题2:如何在宿主项目npm i时自动为my-node-module执行转译?

可以通过npm的钩子脚本实现自动转译,具体操作如下:

  1. 在my-node-module的package.json中添加prepare脚本:
    "scripts": {
      "tsc": "tsc",
      "prepare": "npm run tsc"
    }
    
    prepare是npm内置的钩子,当模块被安装(包括通过Git URL安装)时会自动执行该脚本,触发TypeScript转译。
  2. 确保my-node-module的package.json配置types字段,指向生成的类型定义文件,让宿主项目的TypeScript能识别模块类型:
    "types": "js/index.d.ts"
    
  3. 同时要在my-node-module的tsconfig.json中开启declaration: true,这样转译时会同步生成类型定义文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 17:21:31