TypeScript 对module resolve的顺序
First, looking up a file, then looking up an applicable folder.
import { b } from "moduleB" in source file /root/src/moduleA.ts would result in the following lookups:
- /root/src/node_modules/moduleB.ts =========》一、file
- /root/src/node_modules/moduleB.tsx
- /root/src/node_modules/moduleB.d.ts
- /root/src/node_modules/moduleB/package.json (if it specifies a "types" property)
- /root/src/node_modules/@types/moduleB.d.ts // ====》二、@types
- /root/src/node_modules/moduleB/index.ts // ======》 三、modules folder
- /root/src/node_modules/moduleB/index.tsx
- /root/src/node_modules/moduleB/index.d.ts
- /root/node_modules/moduleB.ts
- /root/node_modules/moduleB.tsx
- /root/node_modules/moduleB.d.ts
- /root/node_modules/moduleB/package.json (if it specifies a "types" property)
- /root/node_modules/@types/moduleB.d.ts
- /root/node_modules/moduleB/index.ts
- /root/node_modules/moduleB/index.tsx
- /root/node_modules/moduleB/index.d.ts
- /node_modules/moduleB.ts
- /node_modules/moduleB.tsx
- /node_modules/moduleB.d.ts
- /node_modules/moduleB/package.json (if it specifies a "types" property)
- /node_modules/@types/moduleB.d.ts
- /node_modules/moduleB/index.ts
- /node_modules/moduleB/index.tsx
- /node_modules/moduleB/index.d.ts
Don’t be intimidated by the number of steps here
- TypeScript is still only jumping up directories twice at steps (9) and (17). This is really no more complex than what Node.js itself is doing.