TypeScript와 피어 종속성을 사용하는 방법에 대한 팁
2270 단어 npmtypescript
기본 애플리케이션에서도 사용되는 종속성을 사용하는 NPM 패키지를 개발할 때 이를 피어 종속성으로 나열하는 것을 고려할 수 있습니다.
React를 "종속성"에서 "peerDependencies"로 이동하는 이 예를 살펴보십시오.
- "dependencies": {
- "react": "^16.8.4 || ^17.0.0"
- },
"devDependencies": {
"@docusaurus/theme-classic": "^2.0.1",
"@types/react": "^18.0.17"
+ },
+ "peerDependencies": {
+ "react": "^16.8.4 || ^17.0.0"
}
React는 이제 피어 종속성이므로 기본 애플리케이션이 자체 종속성에 나열해야 합니다. 또한 TypeScript의 문제 없이 이 패키지를 계속 개발할 수 있습니다(이유를 알 수 있습니까?).
이제 다른 패키지인
@docusaurus/theme-classic
에 주목하십시오. 나는 이것도 피어 종속성으로 만들고 싶었기 때문에 그렇게 했습니다. "devDependencies": {
- "@docusaurus/theme-classic": "^2.0.1",
"@types/react": "^18.0.17"
},
"peerDependencies": {
+ "@docusaurus/theme-classic": "^2.0.1",
"react": "^16.8.4 || ^17.0.0"
}
}
하지만 이렇게 변경한 후 TypeScript는 만족스럽지 않았습니다. 😔 해당 모듈에서 가져오기를 시도했을 때 일반적인 "모듈 또는 해당 유형 선언을 찾을 수 없습니다"오류가 발생했습니다. 동료 종속성을 이해하려고 머리를 긁적이며 꽤 오랜 시간을 보냈습니다. 패키지 관리자 CLI가 피어 종속성을 자동으로 설치하지 않는다는 것을 알고 있었지만 React와 같은 다른 패키지는 작동하는 반면 이 패키지는 작동하지 않는 이유를 알 수 없었습니다.
@docusaurus/theme-classic
패키지는 자체 유형 선언을 제공하므로 피어 종속성으로 이동하면 해당 유형이 모두 제거됩니다.이 문제를 해결하기 위해 내가 찾은 가장 간단한 해결책은 해당 종속성을 "devDependencies"에 복제하는 것입니다. 이렇게 하면 패키지를 개발하는 동안 로컬로 설치되고 기본 응용 프로그램에서 사용할 때 피어 종속성으로 상태를 유지합니다.
"devDependencies": {
+ "@docusaurus/theme-classic": "^2.0.1",
"@types/react": "^18.0.17"
},
"peerDependencies": {
나는 또한 install-peers 패키지로 플레이를 시도했습니다. 이 패키지는 모든 피어 종속성을 개발 종속성으로 설치한다고 주장하지만 그다지 성공하지 못했습니다.
이 문제에 대한 자신만의 해결책이 있다면 듣고 싶습니다!
Reference
이 문제에 관하여(TypeScript와 피어 종속성을 사용하는 방법에 대한 팁), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jody/a-tip-on-using-peer-dependencies-with-typescript-2bji텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)