"build": "tsc -b && vite build",
npm run build
를 실행하게 되면 ts에러가 발생함
composite: true 옵션을 tsconfig.json이 references로 가지고 있는 파일들에 추가해야 한다는 에러를 포함하여
npm run build
는 tsc -b
와 vite build
를 실행
tsc -b | 프로젝트 레퍼런스에서 지정한 이 프로젝트와 프로젝트의 모든 의존성을 빌드. 이 플래그는 이 페이지의 다른 플래그들과는 호환되지 않음. |
---|---|
vite build | vite build 명령어는 프로덕션 빌드를 하기 위한 명령어. root/index.html이 파일 빌드를 위한 entry Point로 사용되고 정적 호스팅을 위한 형태로 진행됨 |
app.json, node.json에 각각 composite: true를 추가하고,
noEmit과 allowImportingTsExtensions를 삭제하니 에러가 사라지기는 함 (둘은 서로 연결되어 있는 속성)
tsc
를 사용해 컴파일 할 때, 트랜스파일링 된 JavaScript 출력 파일을 만들지 않음composite
구성 옵션을 선택해 파일 시스템 입력과 출력이 제약 조건을 준수함을 나타냅니다.rootDir
설정이 아직 명시적으로 설정되지 않았다면 기본적으로 TSConfig 파일이 포함된 디렉토리로 설정됩니다.declaration
컴파일 옵션은 반드시 true
여야 함// core/tsconfig.json
{
"compilerOptions" : {
"declaration" : true
}
"composite" : true
}
✅ 타입스크립트가 프로젝트에 대한 모든 입력 파일과 일치하는 .d.ts
파일을 생성하도록 강제할 때 유용합니다.
composite
옵션은 다음 refernces
구성 옵션과 함께 사용할 때 가장 유용합니다.References
.d.ts
선언 파일에서 가져오는 것으로 타입 시스템에 표시됩니다.core/
디렉터리를 입력으로 참조하도록 shell/
디렉터리를 설정합니다.💡 references
구성 옵션은 기본 TSConfig에서 extends를 통해 파생된 TSConfig로 복사되지 않음
references
옵션은 다음 빌드 모드와 함께 사용할 때 가장 유용합니다.allowImportingTsExtensions
allowImportingTsExtensions
속성은 .ts
파일을 모듈로 불러올 수 있는지를 결정합니다.--noEmit
또는 --emitDeclarationOnly
가 활성화된 경우에만 허용되는데, 이는 이러한 가져오기 경로가 JavaScript 출력 파일에서 런타임에 확인되지 않기 때문입니다.true : .ts, .mts, .tsx와 같은 TypeScript 전용 확장자를 통해 모듈로서 불러오는 것을 허용
false (default) : .ts, .mts, .tsx와 같은 TypeScript 전용 확장자를 통해 모듈로서 불러오는 것을 허용하지 않음
하지만 에러는 계속해서 뜨고, 특히 references
속성에서 다른 참조로 가져온 tsconfig.app.json
과 tsconfig.node.json
에서 계속하여 emit과 관련된 에러가 뜨고, noEmit
설정을 없앤다면 allowImportingTsExtension
을 따라 지워야 했음. 또 이 속성들을 지우게 되면 다시금 다른 에러로 연결됨. noEmit을 다시금 설정하지 않게 되면 각각의 파일에 대해 d.ts 파일과 js 파일이 컴파일되어 생성되고, 이를 어떻게 하면 에러를 해결하면서도 dist 파일에만 빌드의 결과물이 출력되어 나올 수 있도록 하고 싶었음.
tsconfig.app.json
과 tsconfig.node.json
에 대한 계속해서 참조 관련 문제가 나오자, 가장 처음으로 돌아가 tsconfig.app.json
과 tsconfig.node.json
이 왜 필요할까에 대해 생각하게 됨