syncpack: JS모노레포에서 의존성 버전을 일관되게 유지
-
.syncpackrc
{ "$schema": "https://unpkg.com/syncpack/dist/schema.json", "formatRepository": false, "formatBugs": false, "indent": "\t", "versionGroups": [ { "label": "Expo app uses different TypeScript, @types/react, and React versions", "packages": ["@web-memo/app"], "dependencies": ["typescript", "@types/react", "react", "react-dom"], "isIgnored": true }, { "label": "Shared package supports both React 18 and 19 via peerDeps", "packages": ["@web-memo/shared"], "dependencies": ["react", "react-dom"], "dependencyTypes": ["peer"], "isIgnored": true }, { "label": "Use pinned versions for React core", "dependencies": ["react", "react-dom"], "dependencyTypes": ["!peer"], "pinVersion": "18.3.1" }, { "label": "Use workspace protocol for internal packages", "dependencies": ["@web-memo/**", "@web-memo/**"], "dependencyTypes": ["!peer"], "pinVersion": "workspace:*" } ] }
-
expo앱은 54 SDK부터 버전이 다르기에 다른 패키지와 TS, react 버전을 다르게 사용
{ "label": "Expo app uses different TypeScript, @types/react, and React versions", "packages": ["@web-memo/app"], "dependencies": ["typescript", "@types/react", "react", "react-dom"], "isIgnored": true }, -
shared패키지의 peerDepdencies의 react는 app패키지(react@19)에 지원하기 위해 예외
{ "label": "Shared package supports both React 18 and 19 via peerDeps", "packages": ["@web-memo/shared"], "dependencies": ["react", "react-dom"], "dependencyTypes": ["peer"], "isIgnored": true }, -
react, react-dom은 18.3.1로 버전 통일
{ "label": "Use pinned versions for React core", "dependencies": ["react", "react-dom"], "dependencyTypes": ["!peer"], "pinVersion": "18.3.1" }, -
내부 패키지는
workspace:*으로 버전 통일{ "label": "Use workspace protocol for internal packages", "dependencies": ["@web-memo/**", "@web-memo/**"], "dependencyTypes": ["!peer"], "pinVersion": "workspace:*" }