关于前端:TS-TS模块解析模式和优先级

5次阅读

共计 1853 个字符,预计需要花费 5 分钟才能阅读完成。

typescript 的模块解析模式有两种: “node” 和 “classic”。

能够在 tsconfig.json 中通过配置 moduleResolution 选项来指定解析策略
{
“compilerOptions”: {

  "moduleResolution": "node" // 'node' 或 'classic'

}
}
如果未指定,那么在 compilerOptions.module === “amd” || “system” || “es2015″ 时默认值为 classic 模式。compilerOptions.module 为其它状况时 (“none”, “commonjs”, “umd”) 则为 node 模式。

拓展名优先级程序补充:
typescript 查找扩展名程序由先到后顺次是 .ts -> .tsx -> .d.ts

1. classic 模式

1.1 classic 模式 相对路径解析

只找 ” 文件名.ts”、” 文件名.tsx”、” 文件名.d.ts”,找完就完结

// 文件绝对路径 /root/src/folder/moduleA.ts
// ↓ moduleA.ts 中
import {b} from “./moduleB”

查找流程如下:
/root/src/folder/moduleB.ts
/root/src/folder/moduleB.tsx
/root/src/folder/moduleB.d.ts
查找完结

后文会省略 .tsx

1.2 classic 模式 非相对路径解析

先找 ” 文件名.ts”,再找 ”../ 文件名.ts”,再找 ”../../ 文件名.ts” (文件夹目录顺次向上)

// 文件绝对路径 /root/src/folder/moduleA.ts
// ↓ moduleA.ts 中
import {b} from “moduleB”

查找流程如下:
/root/src/folder/moduleB.ts
/root/src/folder/moduleB.d.ts
/root/src/moduleB.ts
/root/src/moduleB.d.ts
/root/moduleB.ts
/root/moduleB.d.ts
/moduleB.ts
/moduleB.d.ts
查找完结

2. node 模式

2.1 node 模式 相对路径解析

先找 ” 文件名.ts”,再找 “ 文件夹名 /index.ts”,找完完结。

// 文件绝对路径 /root/src/folder/moduleA.ts
// ↓ moduleA.ts 中
import {b} from “./moduleB”

查找流程如下:
/root/src/folder/moduleB.ts
/root/src/folder/moduleB.d.ts
/root/src/folder/moduleB/index.ts
/root/src/folder/moduleB/index.d.ts
查找完结

2.2 node 模式 非相对路径解析

先找 ”./node_modules/ 文件名.ts”,再找 ”./node_modules/ 文件夹名 /index.ts”

如果此时没找到且有下级目录,
持续找 ”../node_modules/ 文件名.ts”,再找 ”../node_modules/ 文件夹名 /index.ts”

// 文件绝对路径 /root/src/folder/moduleA.ts
// ↓ moduleA.ts 中
import {b} from “moduleB”

查找流程如下:
/root/src/folder/node_modules/moduleB.ts
/root/src/folder/node_modules/moduleB.d.ts
/root/src/folder/node_modules/moduleB/package.json (如果指定了 ”types” 属性)
/root/src/folder/node_modules/moduleB/index.ts
/root/src/folder/node_modules/moduleB/index.d.ts
/root/src/node_modules/moduleB.ts
/root/src/node_modules/moduleB.d.ts

/node_modules/moduleB.ts
/node_modules/moduleB.d.ts
/node_modules/moduleB/index.ts
/node_modules/moduleB/index.d.ts
查找完结

完结
同步更新到本人的语雀
https://www.yuque.com/diracke…

正文完
 0