tsconfig之moduleResolution详解
moduleResolution
是 TypeScript 编译器选项之一,用于指定模块解析策略。
在 TypeScript 中,有两种模块解析策略:
Classic
:TypeScript 默认的解析策略,它遵循 Node.js 的模块解析策略。例如,当你导入lodash
时,它会尝试查找lodash.ts
、lodash.js
、lodash/index.ts
和lodash/index.js
。Node
:与 Node.js 的模块解析相同,它会尝试查找package.json
中的main
字段来解析模块。
你可以在 tsconfig.json
文件中设置 moduleResolution
选项来指定使用哪种策略:
{
"compilerOptions": {
"moduleResolution": "node"
}
}
这里是一个简单的示例,演示如何在 TypeScript 中使用不同的 moduleResolution
设置:
- 假设你有一个模块
util/math.utils.ts
,你想在另一个文件中导入它:
// util/math.utils.ts
export const add = (a: number, b: number) => a + b;
- 使用
Classic
解析策略时,你可以这样导入:
// another-file.ts
import { add } from 'util/math.utils';
- 使用
Node
解析策略时,你需要确保package.json
中有正确的入口点,然后可以这样导入:
// package.json
{
"main": "util/math.utils.js"
}
// another-file.ts
import { add } from 'util';
在这个例子中,当你使用 "moduleResolution": "node"
时,TypeScript 编译器会查找 package.json
中指定的入口文件。当你使用 "moduleResolution": "classic"
时,它会尝试查找相对于导入语句的文件路径。
评论已关闭