试图了解“模块”和“moduleResolution”有何不同,

JΛY*_*ÐΞV 16 typescript es6-modules typescript-module-resolution

我不明白为什么会有"module"&"moduleResolution"设置。

我一直认为模块只不过是一个规范(和/或标准),它定义了软件包“解析”的方式,以及被遵守相同规范的其他软件包“解析”的方式(和/或标准)

也许这是一个准确的看法,也许不是,无论哪种方式,我都没有看到任何单独配置module类型的理由moduleResolution。我并不是在这里批评 TypeScript,我百分百确定地知道,我所缺少的不是 TypeScript。我只是想对如何配置 TypeScript 项目有一个基本的了解。


  1. “模块”和“模块分辨率”有什么区别?

  2. tsconfig.json该设置如何module影响项目导入的模块(或包)?它对 TypeScript 编译器转译和发出的 JavaScript 有什么影响tsc

  3. tsconfig.json该设置如何moduleResolution影响项目导入的模块(或包)?它对 TypeScript 编译器转译和发出的 JavaScript 有什么影响tsc

Dre*_*nai 7

moduleResolution确定用于查找/解析模块的算法,例如查找node_modules或搜索相对路径

\n

module确定使用的导入/导出类型-

\n
// CommonJS\nconst zip = require("./ZipCodeValidator");\n\n// ES2020\nimport { valueOfPi } from "./constants";\n
Run Code Online (Sandbox Code Playgroud)\n

为了module node12/nodenext

\n
\n

node12/nodenext(夜间构建)\n实验性的 Node12 和 Nodenext 模式在夜间构建中可用,与 Node\xe2\x80\x99s 本机 ECMAScript 模块支持集成。发出的 JavaScript 使用 CommonJS 或 ES2020 输出,具体取决于文件扩展名和最近的 package.json 中类型设置的值。模块分辨率的工作方式也不同。您可以在手册中了解更多信息

\n
\n

文档有点落后,node16但正在更新

\n