π» Module Resolution μ΄λ?
Module Resolution
(λͺ¨λ ν΄μ)μ TypeScript
μ»΄νμΌλ¬κ° import
λ¬Έμμ μ΄λ€κ²μ μ°Έμ‘°νλμ§ μμλ΄κΈ° μν΄ μ¬μ©νλ νλ‘μΈμ€λ₯Ό μλ―Έν©λλ€.
π» Module Resolution Strategy
μν¬νΈν λͺ¨λμ κ²½λ‘μ μ ν(μλμ λͺ¨λ VS λΉ-μλμ λͺ¨λ) λ°λΌ μ»΄νμΌλ¬κ° λͺ¨λμ μ°Ύλ λ°©μμ΄ λ¬λΌμ§λλ€. TypeScript
μ»΄νμΌλ¬κ° λͺ¨λμ μ°Ύλ λ°©μμ Module Resolution Strategy
λΌκ³ νλ©°, ν¬κΈ° Classic
κ³Ό Node
λ°©μ, λκ°μ§κ° μμ΅λλ€.
π μλμ λͺ¨λ(relative) VS λΉ-μλμ λͺ¨λ(non-relative)
μλμ λͺ¨λμ
/
,./
,../
μ κ°μ΄ μμνλ κ²½λ‘λ₯Ό μλ―Ένλ©°, λΉ-μλμ λͺ¨λμimport * as $ from "jquery"
μ κ°μ κ²½λ‘λ₯Ό μλ―Έν©λλ€.
π¨βπ» Classic
Classic
μ λ΅μ TypeScript
μμλ§ μ¬μ©λλ λ°©μμΌλ‘, μ΄μ λ²μ κ³Όμ νΈνμ±μ μν΄ μ£Όλ‘ μ¬μ©λ©λλ€.
πββοΈ μλμ λͺ¨λ
μλμ λͺ¨λμ΄ μν¬νΈ λμμ κ²½μ°, νμ¬ νμΌμ μλμ μΈ μμΉμμ λͺ¨λμ μ°Ύμ΅λλ€.
1
2
// /root/src/folder/A.ts
import { b } from "./moduleB";
μμ κ°μ΄ μν¬νΈνμλ, λͺ¨λμ νμνλ μμλ λ€μκ³Ό κ°μ΅λλ€.
- /root/src/folder/moduleB.ts
- /root/src/folder/moduleB.d.ts
- Error: Cannot find module
πββοΈ λΉ-μλμ λͺ¨λ
λΉ-μλμ λͺ¨λμ μν¬νΈν κ²½μ°, νμ¬ λλ ν 리μμ .ts
, .d.ts
νμΌμ νμνκ³ μμ κ²½μ° μμ λλ ν λ¦¬λ‘ μ΄λν΄ κ°μ κ³Όμ μ λ°λ³΅ν©λλ€.
1
2
// /root/src/folder/A.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
- Error: Cannot find module
π¨βπ» Node
Node
μ module resolution
λ°©μμ λͺ¨λ°©ν λ°©μμΌλ‘ Node
νκ²½μμ TypeScript
νλ‘μ νΈλ₯Ό λμνκ²λ νκΈ°μν΄ μ¬μ©λ©λλ€.
πββοΈ μλμ λͺ¨λ
1
2
// /root/src/folder/moduleA.ts
import { b } from "./moduleB";
μμ κ°μ μλμ λͺ¨λμ Node
μ λ΅μμλ λ€μκ³Ό κ°μ΄ νμν©λλ€.
- /root/src/folder/moduleB.ts
- /root/src/folder/moduleB.d.ts
- /root/src/folder/moduleB/package.json β> [types/typing]
- /root/src/folder/moduleB/index.ts
- /root/src/folder/moduleB/index.d.ts
- Error: Cannot find module
μλκ²½λ‘μ λͺ
μλ λλ ν 리μμ .ts
, .d.ts
νμΌμ νμν ν, μμ κ²½μ° λλ ν λ¦¬λ‘ κ°μ£Όν΄ package.json
μ νμν©λλ€. κ·Έ λ€μ package.json
μ types
λ typing
νλμ λͺ
μλμ΄ μλ declaration file
μ μν¬νΈ νκ² λ©λλ€.
λ§μ½ package.json
νμΌμ΄ μμ κ²½μ° ν΄λΉ λλ ν 리μμ index.ts
λ index.d.ts
λ₯Ό νμν©λλ€.
πββοΈ λΉ-μλμ λͺ¨λ
λΉ-μλμ λͺ¨λμ μν¬νΈν κ²½μ°, νμ¬μ λλ ν 리μμ node_modules
λλ ν 리λ₯Ό μ°Ύλλ€λ μ μ μ μΈνκ³ μλμ λͺ¨λμ μν¬νΈνλ κ²κ³Ό λμΌν©λλ€.
1
2
// /root/src/folder/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/typing]
- /root/src/folder/node_modules/moduleB/index.ts
/root/src/folder/node_modules/moduleB/index.d.ts
- /root/src/node_module/moduleB.ts
- /root/src/node_modules/moduleB.d.ts
- /root/src/node_modules/moduleB/package.json β> [types/typing]
- /root/src/node_modules/moduleB/index.ts
/root/src/node_modules/moduleB/index.d.ts
- /root/node_modules/moduleB.ts
- /root/node_modules/moduleB.d.ts
- /root/node_modules/moduleB/package.json β> [types/typing]
- /root/node_modules/moduleB/index.ts
/root/node_modules/moduleB/index.d.ts
- /node_modules/moduleB.ts
- /node_modules/moduleB.d.ts
- /node_modules/moduleB/package.json β> [types/typing]
- /node_modules/moduleB/index.ts
/node_modules/moduleB/index.d.tss
- Error: Cannot find module
π Node
μ module resolution
TypeScript
μNode
λ°©μμ΄Node
μmodule resolution
λ°©μμ λͺ¨λ°©ν κ²μ΄κΈ° λλ¬Έμ μ μ¬ν©λλ€.
- μλμ λͺ¨λ
1 2 // /root/src/moduleA.js var x = require("./moduleB");μμ κ²½μ° λ€μκ³Ό κ°μ μμλ‘ νμν©λλ€.
- /root/src/moduleB.js
- /root/src/moduleB/package.json β> [main]
- /root/src/moduleB/index.js
- λΉ-μλμ λͺ¨λ
1 2 // /root/src/moduleA.js var x = require("moduleB");
- /root/src/node_modules/moduleB.js
- /root/src/node_modules/moduleB/package.json β> [main]
/root/src/node_modules/moduleB/index.js
- /root/node_modules/moduleB.js
- /root/node_modules/moduleB/package.json β> [main]
/root/node_modules/moduleB/index.js
- /node_modules/moduleB.js
- /node_modules/moduleB/package.json β> [main]
- /node_modules/moduleB/index.js