Skip to content

Commit 7fd2dc3

Browse files
authored
pnpm catalog for centralized dependency management (#5871)
## Summary Adds pnpm catalog to centralize dependency versions across the monorepo. ## Changes - **What**: Consolidates dependencies into single default catalog with [`prefer` mode](https://pnpm.io/catalogs#catalog-mode) - **Dependencies**: No new dependencies - reorganizes existing version management ## Review Focus The catalog uses `prefer` mode which automatically uses catalog versions for packages already in the catalog, falling back to direct versions for packages not yet cataloged. ### Example Usage When adding a dependency already in the catalog: ```bash pnpm add vue ``` This automatically uses `"vue": "catalog:"` in `package.json` instead of a direct version.
1 parent e8de474 commit 7fd2dc3

File tree

2 files changed

+109
-0
lines changed

2 files changed

+109
-0
lines changed

.npmrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
ignore-workspace-root-check=true
2+
catalog-mode=prefer

pnpm-workspace.yaml

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,114 @@ packages:
22
- apps/**
33
- packages/**
44

5+
catalog:
6+
# Core frameworks
7+
typescript: ^5.9.2
8+
vue: ^3.5.13
9+
10+
# Build tools
11+
'@nx/eslint': 21.4.1
12+
'@nx/playwright': 21.4.1
13+
'@nx/storybook': 21.4.1
14+
'@nx/vite': 21.4.1
15+
nx: 21.4.1
16+
tsx: ^4.15.6
17+
vite: ^5.4.19
18+
'@vitejs/plugin-vue': ^5.1.4
19+
'vite-plugin-dts': ^4.5.4
20+
vue-tsc: ^3.0.7
21+
22+
# Testing
23+
'happy-dom': ^15.11.0
24+
jsdom: ^26.1.0
25+
'@pinia/testing': ^0.1.5
26+
'@playwright/test': ^1.52.0
27+
'@vitest/coverage-v8': ^3.2.4
28+
'@vitest/ui': ^3.0.0
29+
vitest: ^3.2.4
30+
'@vue/test-utils': ^2.4.6
31+
32+
# Linting & Formatting
33+
'@eslint/js': ^9.35.0
34+
eslint: ^9.34.0
35+
'eslint-config-prettier': ^10.1.8
36+
'eslint-plugin-prettier': ^5.5.4
37+
'eslint-plugin-storybook': ^9.1.6
38+
'eslint-plugin-unused-imports': ^4.2.0
39+
'eslint-plugin-vue': ^10.4.0
40+
globals: ^15.9.0
41+
'@intlify/eslint-plugin-vue-i18n': ^4.1.0
42+
prettier: ^3.3.2
43+
'typescript-eslint': ^8.44.0
44+
'vue-eslint-parser': ^10.2.0
45+
46+
# Vue ecosystem
47+
'@sentry/vue': ^8.48.0
48+
'@vueuse/core': ^11.0.0
49+
'@vueuse/integrations': ^13.9.0
50+
'vite-plugin-html': ^3.2.2
51+
'vite-plugin-vue-devtools': ^7.7.6
52+
pinia: ^2.1.7
53+
'vue-i18n': ^9.14.3
54+
'vue-router': ^4.4.3
55+
vuefire: ^3.2.1
56+
57+
# PrimeVue UI framework
58+
'@primeuix/forms': 0.0.2
59+
'@primeuix/styled': 0.3.2
60+
'@primeuix/utils': ^0.3.2
61+
'@primevue/core': ^4.2.5
62+
'@primevue/forms': ^4.2.5
63+
'@primevue/icons': 4.2.5
64+
'@primevue/themes': ^4.2.5
65+
primeicons: ^7.0.0
66+
primevue: ^4.2.5
67+
68+
# Tailwind CSS and design
69+
'@iconify/json': ^2.2.380
70+
'@iconify-json/lucide': ^1.1.178
71+
'@iconify/tailwind': ^1.1.3
72+
'@tailwindcss/vite': ^4.1.12
73+
tailwindcss: ^4.1.12
74+
'tailwindcss-primeui': ^0.6.1
75+
'tw-animate-css': ^1.3.8
76+
'unplugin-icons': ^0.22.0
77+
'unplugin-vue-components': ^0.28.0
78+
79+
# Storybook
80+
'@storybook/addon-docs': ^9.1.1
81+
storybook: ^9.1.6
82+
'@storybook/vue3': ^9.1.1
83+
'@storybook/vue3-vite': ^9.1.1
84+
85+
# Data and validation
86+
algoliasearch: ^5.21.0
87+
firebase: ^11.6.0
88+
yjs: ^13.6.27
89+
zod: ^3.23.8
90+
'zod-validation-error': ^3.3.0
91+
92+
# Dev tools
93+
dotenv: ^16.4.5
94+
husky: ^9.0.11
95+
jiti: 2.4.2
96+
knip: ^5.62.0
97+
'lint-staged': ^15.2.7
98+
99+
# Type definitions
100+
'@types/fs-extra': ^11.0.4
101+
'@types/jsdom': ^21.1.7
102+
'@types/node': ^20.14.8
103+
'@types/semver': ^7.7.0
104+
'@types/three': ^0.169.0
105+
'vue-component-type-helpers': ^3.0.7
106+
'zod-to-json-schema': ^3.24.1
107+
108+
# i18n
109+
'@alloc/quick-lru': ^5.2.0
110+
'@lobehub/i18n-cli': ^1.25.1
111+
'@trivago/prettier-plugin-sort-imports': ^5.2.0
112+
5113
ignoredBuiltDependencies:
6114
- '@firebase/util'
7115
- protobufjs

0 commit comments

Comments
 (0)