ads-fe 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +99 -0
- package/dist/cli.js +545 -0
- package/dist/meta.js +93 -0
- package/package.json +43 -0
- package/skill.md +66 -0
- package/skills/core/SKILL.md +66 -0
- package/skills/core/references/app-development.md +45 -0
- package/skills/core/references/git.md +66 -0
- package/skills/core/references/monorepo.md +124 -0
- package/skills/element-plus-vue3/LICENSE.md +405 -0
- package/skills/element-plus-vue3/LICENSE.txt +202 -0
- package/skills/element-plus-vue3/SKILL.md +218 -0
- package/skills/element-plus-vue3/SYNC.md +5 -0
- package/skills/element-plus-vue3/api/component-api.md +94 -0
- package/skills/element-plus-vue3/api/global-config.md +89 -0
- package/skills/element-plus-vue3/api/props-and-events.md +101 -0
- package/skills/element-plus-vue3/examples/components/button.md +99 -0
- package/skills/element-plus-vue3/examples/components/date-picker.md +115 -0
- package/skills/element-plus-vue3/examples/components/dialog.md +106 -0
- package/skills/element-plus-vue3/examples/components/form.md +127 -0
- package/skills/element-plus-vue3/examples/components/input.md +123 -0
- package/skills/element-plus-vue3/examples/components/message.md +93 -0
- package/skills/element-plus-vue3/examples/components/overview.md +59 -0
- package/skills/element-plus-vue3/examples/components/select.md +133 -0
- package/skills/element-plus-vue3/examples/components/table.md +166 -0
- package/skills/element-plus-vue3/examples/guide/design.md +68 -0
- package/skills/element-plus-vue3/examples/guide/global-config.md +95 -0
- package/skills/element-plus-vue3/examples/guide/i18n.md +95 -0
- package/skills/element-plus-vue3/examples/guide/installation.md +110 -0
- package/skills/element-plus-vue3/examples/guide/quick-start.md +103 -0
- package/skills/element-plus-vue3/examples/guide/theme.md +78 -0
- package/skills/element-plus-vue3/templates/component-usage.md +92 -0
- package/skills/element-plus-vue3/templates/installation.md +82 -0
- package/skills/element-plus-vue3/templates/project-setup.md +83 -0
- package/skills/node/LICENSE.md +21 -0
- package/skills/node/SKILL.md +94 -0
- package/skills/node/SYNC.md +5 -0
- package/skills/node/rules/assets/graceful-server.test.ts +88 -0
- package/skills/node/rules/assets/graceful-server.ts +80 -0
- package/skills/node/rules/async-patterns.md +136 -0
- package/skills/node/rules/caching.md +198 -0
- package/skills/node/rules/environment.md +253 -0
- package/skills/node/rules/error-handling.md +164 -0
- package/skills/node/rules/flaky-tests.md +439 -0
- package/skills/node/rules/graceful-shutdown.md +204 -0
- package/skills/node/rules/logging.md +205 -0
- package/skills/node/rules/modules.md +105 -0
- package/skills/node/rules/node-modules-exploration.md +172 -0
- package/skills/node/rules/performance.md +130 -0
- package/skills/node/rules/profiling.md +183 -0
- package/skills/node/rules/streams.md +213 -0
- package/skills/node/rules/stuck-processes-and-tests.md +124 -0
- package/skills/node/rules/testing.md +218 -0
- package/skills/node/rules/typescript.md +262 -0
- package/skills/node/tile.json +11 -0
- package/skills/nuxt/GENERATION.md +5 -0
- package/skills/nuxt/LICENSE.md +21 -0
- package/skills/nuxt/SKILL.md +55 -0
- package/skills/nuxt/SYNC.md +5 -0
- package/skills/nuxt/references/advanced-hooks.md +289 -0
- package/skills/nuxt/references/advanced-layers.md +299 -0
- package/skills/nuxt/references/advanced-module-authoring.md +554 -0
- package/skills/nuxt/references/best-practices-data-fetching.md +357 -0
- package/skills/nuxt/references/best-practices-ssr.md +355 -0
- package/skills/nuxt/references/core-cli.md +263 -0
- package/skills/nuxt/references/core-config.md +162 -0
- package/skills/nuxt/references/core-data-fetching.md +236 -0
- package/skills/nuxt/references/core-deployment.md +224 -0
- package/skills/nuxt/references/core-directory-structure.md +269 -0
- package/skills/nuxt/references/core-modules.md +292 -0
- package/skills/nuxt/references/core-routing.md +226 -0
- package/skills/nuxt/references/features-components-autoimport.md +328 -0
- package/skills/nuxt/references/features-components.md +264 -0
- package/skills/nuxt/references/features-composables.md +276 -0
- package/skills/nuxt/references/features-server.md +265 -0
- package/skills/nuxt/references/features-state.md +194 -0
- package/skills/nuxt/references/rendering-modes.md +237 -0
- package/skills/pinia/GENERATION.md +5 -0
- package/skills/pinia/LICENSE.md +21 -0
- package/skills/pinia/SKILL.md +59 -0
- package/skills/pinia/SYNC.md +5 -0
- package/skills/pinia/references/advanced-hmr.md +61 -0
- package/skills/pinia/references/advanced-nuxt.md +119 -0
- package/skills/pinia/references/advanced-ssr.md +121 -0
- package/skills/pinia/references/best-practices-outside-component.md +115 -0
- package/skills/pinia/references/best-practices-testing.md +212 -0
- package/skills/pinia/references/core-stores.md +389 -0
- package/skills/pinia/references/features-composables.md +114 -0
- package/skills/pinia/references/features-composing-stores.md +134 -0
- package/skills/pinia/references/features-plugins.md +203 -0
- package/skills/pnpm/GENERATION.md +5 -0
- package/skills/pnpm/LICENSE.md +21 -0
- package/skills/pnpm/SKILL.md +42 -0
- package/skills/pnpm/SYNC.md +5 -0
- package/skills/pnpm/references/best-practices-ci.md +285 -0
- package/skills/pnpm/references/best-practices-migration.md +291 -0
- package/skills/pnpm/references/best-practices-performance.md +284 -0
- package/skills/pnpm/references/core-cli.md +229 -0
- package/skills/pnpm/references/core-config.md +188 -0
- package/skills/pnpm/references/core-store.md +179 -0
- package/skills/pnpm/references/core-workspaces.md +205 -0
- package/skills/pnpm/references/features-aliases.md +168 -0
- package/skills/pnpm/references/features-catalogs.md +159 -0
- package/skills/pnpm/references/features-hooks.md +233 -0
- package/skills/pnpm/references/features-overrides.md +184 -0
- package/skills/pnpm/references/features-patches.md +201 -0
- package/skills/pnpm/references/features-peer-deps.md +250 -0
- package/skills/slidev/LICENSE.md +21 -0
- package/skills/slidev/README.md +61 -0
- package/skills/slidev/SKILL.md +189 -0
- package/skills/slidev/SYNC.md +5 -0
- package/skills/slidev/references/animation-click-marker.md +37 -0
- package/skills/slidev/references/animation-drawing.md +68 -0
- package/skills/slidev/references/animation-rough-marker.md +53 -0
- package/skills/slidev/references/api-slide-hooks.md +37 -0
- package/skills/slidev/references/build-og-image.md +36 -0
- package/skills/slidev/references/build-pdf.md +40 -0
- package/skills/slidev/references/build-remote-assets.md +34 -0
- package/skills/slidev/references/build-seo-meta.md +43 -0
- package/skills/slidev/references/code-groups.md +64 -0
- package/skills/slidev/references/code-import-snippet.md +55 -0
- package/skills/slidev/references/code-line-highlighting.md +50 -0
- package/skills/slidev/references/code-line-numbers.md +46 -0
- package/skills/slidev/references/code-magic-move.md +57 -0
- package/skills/slidev/references/code-max-height.md +37 -0
- package/skills/slidev/references/code-twoslash.md +42 -0
- package/skills/slidev/references/core-animations.md +196 -0
- package/skills/slidev/references/core-cli.md +140 -0
- package/skills/slidev/references/core-components.md +197 -0
- package/skills/slidev/references/core-exporting.md +148 -0
- package/skills/slidev/references/core-frontmatter.md +195 -0
- package/skills/slidev/references/core-global-context.md +155 -0
- package/skills/slidev/references/core-headmatter.md +188 -0
- package/skills/slidev/references/core-hosting.md +152 -0
- package/skills/slidev/references/core-layouts.md +286 -0
- package/skills/slidev/references/core-syntax.md +155 -0
- package/skills/slidev/references/diagram-latex.md +55 -0
- package/skills/slidev/references/diagram-mermaid.md +44 -0
- package/skills/slidev/references/diagram-plantuml.md +45 -0
- package/skills/slidev/references/editor-monaco-run.md +44 -0
- package/skills/slidev/references/editor-monaco-write.md +24 -0
- package/skills/slidev/references/editor-monaco.md +50 -0
- package/skills/slidev/references/editor-prettier.md +40 -0
- package/skills/slidev/references/editor-side.md +23 -0
- package/skills/slidev/references/editor-vscode.md +55 -0
- package/skills/slidev/references/layout-canvas-size.md +25 -0
- package/skills/slidev/references/layout-draggable.md +57 -0
- package/skills/slidev/references/layout-global-layers.md +50 -0
- package/skills/slidev/references/layout-slots.md +75 -0
- package/skills/slidev/references/layout-transform.md +33 -0
- package/skills/slidev/references/layout-zoom.md +39 -0
- package/skills/slidev/references/presenter-notes-ruby.md +35 -0
- package/skills/slidev/references/presenter-recording.md +30 -0
- package/skills/slidev/references/presenter-remote.md +40 -0
- package/skills/slidev/references/presenter-timer.md +34 -0
- package/skills/slidev/references/style-direction.md +34 -0
- package/skills/slidev/references/style-icons.md +46 -0
- package/skills/slidev/references/style-scoped.md +50 -0
- package/skills/slidev/references/syntax-block-frontmatter.md +39 -0
- package/skills/slidev/references/syntax-comark.md +51 -0
- package/skills/slidev/references/syntax-frontmatter-merging.md +49 -0
- package/skills/slidev/references/syntax-importing-slides.md +60 -0
- package/skills/slidev/references/tool-eject-theme.md +27 -0
- package/skills/tsdown/LICENSE.md +22 -0
- package/skills/tsdown/README.md +77 -0
- package/skills/tsdown/SKILL.md +416 -0
- package/skills/tsdown/SYNC.md +5 -0
- package/skills/tsdown/references/README.md +139 -0
- package/skills/tsdown/references/advanced-benchmark.md +8 -0
- package/skills/tsdown/references/advanced-ci.md +89 -0
- package/skills/tsdown/references/advanced-hooks.md +363 -0
- package/skills/tsdown/references/advanced-plugins.md +381 -0
- package/skills/tsdown/references/advanced-programmatic.md +378 -0
- package/skills/tsdown/references/advanced-rolldown-options.md +117 -0
- package/skills/tsdown/references/guide-getting-started.md +183 -0
- package/skills/tsdown/references/guide-introduction.md +42 -0
- package/skills/tsdown/references/guide-migrate-from-tsup.md +199 -0
- package/skills/tsdown/references/option-cjs-default.md +98 -0
- package/skills/tsdown/references/option-cleaning.md +275 -0
- package/skills/tsdown/references/option-config-file.md +291 -0
- package/skills/tsdown/references/option-css.md +301 -0
- package/skills/tsdown/references/option-dependencies.md +385 -0
- package/skills/tsdown/references/option-dts.md +251 -0
- package/skills/tsdown/references/option-entry.md +211 -0
- package/skills/tsdown/references/option-exe.md +120 -0
- package/skills/tsdown/references/option-lint.md +127 -0
- package/skills/tsdown/references/option-log-level.md +91 -0
- package/skills/tsdown/references/option-minification.md +177 -0
- package/skills/tsdown/references/option-output-directory.md +272 -0
- package/skills/tsdown/references/option-output-format.md +183 -0
- package/skills/tsdown/references/option-package-exports.md +320 -0
- package/skills/tsdown/references/option-platform.md +256 -0
- package/skills/tsdown/references/option-root.md +88 -0
- package/skills/tsdown/references/option-shims.md +299 -0
- package/skills/tsdown/references/option-sourcemap.md +301 -0
- package/skills/tsdown/references/option-target.md +222 -0
- package/skills/tsdown/references/option-tree-shaking.md +335 -0
- package/skills/tsdown/references/option-unbundle.md +310 -0
- package/skills/tsdown/references/option-watch-mode.md +261 -0
- package/skills/tsdown/references/recipe-react.md +338 -0
- package/skills/tsdown/references/recipe-solid.md +42 -0
- package/skills/tsdown/references/recipe-svelte.md +54 -0
- package/skills/tsdown/references/recipe-vue.md +387 -0
- package/skills/tsdown/references/recipe-wasm.md +125 -0
- package/skills/tsdown/references/reference-cli.md +472 -0
- package/skills/turborepo/LICENSE.md +7 -0
- package/skills/turborepo/SKILL.md +951 -0
- package/skills/turborepo/SYNC.md +5 -0
- package/skills/turborepo/command/turborepo.md +70 -0
- package/skills/turborepo/references/best-practices/RULE.md +241 -0
- package/skills/turborepo/references/best-practices/dependencies.md +246 -0
- package/skills/turborepo/references/best-practices/packages.md +335 -0
- package/skills/turborepo/references/best-practices/structure.md +297 -0
- package/skills/turborepo/references/boundaries/RULE.md +126 -0
- package/skills/turborepo/references/caching/RULE.md +153 -0
- package/skills/turborepo/references/caching/gotchas.md +190 -0
- package/skills/turborepo/references/caching/remote-cache.md +127 -0
- package/skills/turborepo/references/ci/RULE.md +79 -0
- package/skills/turborepo/references/ci/github-actions.md +162 -0
- package/skills/turborepo/references/ci/patterns.md +145 -0
- package/skills/turborepo/references/ci/vercel.md +103 -0
- package/skills/turborepo/references/cli/RULE.md +100 -0
- package/skills/turborepo/references/cli/commands.md +297 -0
- package/skills/turborepo/references/configuration/RULE.md +235 -0
- package/skills/turborepo/references/configuration/global-options.md +239 -0
- package/skills/turborepo/references/configuration/gotchas.md +368 -0
- package/skills/turborepo/references/configuration/tasks.md +325 -0
- package/skills/turborepo/references/environment/RULE.md +123 -0
- package/skills/turborepo/references/environment/gotchas.md +175 -0
- package/skills/turborepo/references/environment/modes.md +101 -0
- package/skills/turborepo/references/filtering/RULE.md +148 -0
- package/skills/turborepo/references/filtering/patterns.md +152 -0
- package/skills/turborepo/references/watch/RULE.md +99 -0
- package/skills/vite/GENERATION.md +5 -0
- package/skills/vite/LICENSE.md +21 -0
- package/skills/vite/SKILL.md +72 -0
- package/skills/vite/SYNC.md +5 -0
- package/skills/vite/references/build-and-ssr.md +164 -0
- package/skills/vite/references/core-config.md +162 -0
- package/skills/vite/references/core-features.md +205 -0
- package/skills/vite/references/core-plugin-api.md +235 -0
- package/skills/vite/references/environment-api.md +108 -0
- package/skills/vite/references/rolldown-migration.md +157 -0
- package/skills/vitepress/GENERATION.md +5 -0
- package/skills/vitepress/LICENSE.md +21 -0
- package/skills/vitepress/SKILL.md +65 -0
- package/skills/vitepress/SYNC.md +5 -0
- package/skills/vitepress/references/advanced-i18n.md +299 -0
- package/skills/vitepress/references/advanced-ssr.md +228 -0
- package/skills/vitepress/references/core-cli.md +119 -0
- package/skills/vitepress/references/core-config.md +189 -0
- package/skills/vitepress/references/core-markdown.md +277 -0
- package/skills/vitepress/references/core-routing.md +169 -0
- package/skills/vitepress/references/features-code-blocks.md +243 -0
- package/skills/vitepress/references/features-data-loading.md +220 -0
- package/skills/vitepress/references/features-dynamic-routes.md +235 -0
- package/skills/vitepress/references/features-vue.md +224 -0
- package/skills/vitepress/references/recipes-deploy.md +240 -0
- package/skills/vitepress/references/theme-config.md +315 -0
- package/skills/vitepress/references/theme-custom.md +269 -0
- package/skills/vitepress/references/theme-customization.md +290 -0
- package/skills/vitest/GENERATION.md +5 -0
- package/skills/vitest/LICENSE.md +21 -0
- package/skills/vitest/SKILL.md +52 -0
- package/skills/vitest/SYNC.md +5 -0
- package/skills/vitest/references/advanced-environments.md +264 -0
- package/skills/vitest/references/advanced-projects.md +300 -0
- package/skills/vitest/references/advanced-type-testing.md +237 -0
- package/skills/vitest/references/advanced-vi.md +249 -0
- package/skills/vitest/references/core-cli.md +166 -0
- package/skills/vitest/references/core-config.md +174 -0
- package/skills/vitest/references/core-describe.md +193 -0
- package/skills/vitest/references/core-expect.md +219 -0
- package/skills/vitest/references/core-hooks.md +244 -0
- package/skills/vitest/references/core-test-api.md +233 -0
- package/skills/vitest/references/features-concurrency.md +250 -0
- package/skills/vitest/references/features-context.md +238 -0
- package/skills/vitest/references/features-coverage.md +207 -0
- package/skills/vitest/references/features-filtering.md +211 -0
- package/skills/vitest/references/features-mocking.md +265 -0
- package/skills/vitest/references/features-snapshots.md +207 -0
- package/skills/vue/GENERATION.md +5 -0
- package/skills/vue/LICENSE.md +21 -0
- package/skills/vue/SKILL.md +84 -0
- package/skills/vue/SYNC.md +5 -0
- package/skills/vue/references/advanced-patterns.md +314 -0
- package/skills/vue/references/core-new-apis.md +264 -0
- package/skills/vue/references/script-setup-macros.md +204 -0
- package/skills/vue-best-practices/LICENSE.md +21 -0
- package/skills/vue-best-practices/SKILL.md +154 -0
- package/skills/vue-best-practices/SYNC.md +5 -0
- package/skills/vue-best-practices/references/animation-class-based-technique.md +254 -0
- package/skills/vue-best-practices/references/animation-state-driven-technique.md +291 -0
- package/skills/vue-best-practices/references/component-async.md +97 -0
- package/skills/vue-best-practices/references/component-data-flow.md +307 -0
- package/skills/vue-best-practices/references/component-fallthrough-attrs.md +174 -0
- package/skills/vue-best-practices/references/component-keep-alive.md +137 -0
- package/skills/vue-best-practices/references/component-slots.md +216 -0
- package/skills/vue-best-practices/references/component-suspense.md +228 -0
- package/skills/vue-best-practices/references/component-teleport.md +108 -0
- package/skills/vue-best-practices/references/component-transition-group.md +128 -0
- package/skills/vue-best-practices/references/component-transition.md +125 -0
- package/skills/vue-best-practices/references/composables.md +290 -0
- package/skills/vue-best-practices/references/directives.md +162 -0
- package/skills/vue-best-practices/references/perf-avoid-component-abstraction-in-lists.md +159 -0
- package/skills/vue-best-practices/references/perf-v-once-v-memo-directives.md +182 -0
- package/skills/vue-best-practices/references/perf-virtualize-large-lists.md +187 -0
- package/skills/vue-best-practices/references/plugins.md +166 -0
- package/skills/vue-best-practices/references/reactivity.md +344 -0
- package/skills/vue-best-practices/references/render-functions.md +201 -0
- package/skills/vue-best-practices/references/sfc.md +310 -0
- package/skills/vue-best-practices/references/state-management.md +135 -0
- package/skills/vue-best-practices/references/updated-hook-performance.md +187 -0
- package/skills/vue-router-best-practices/LICENSE.md +21 -0
- package/skills/vue-router-best-practices/SKILL.md +23 -0
- package/skills/vue-router-best-practices/SYNC.md +5 -0
- package/skills/vue-router-best-practices/reference/router-beforeenter-no-param-trigger.md +167 -0
- package/skills/vue-router-best-practices/reference/router-beforerouteenter-no-this.md +176 -0
- package/skills/vue-router-best-practices/reference/router-guard-async-await-pattern.md +227 -0
- package/skills/vue-router-best-practices/reference/router-navigation-guard-infinite-loop.md +187 -0
- package/skills/vue-router-best-practices/reference/router-navigation-guard-next-deprecated.md +150 -0
- package/skills/vue-router-best-practices/reference/router-param-change-no-lifecycle.md +181 -0
- package/skills/vue-router-best-practices/reference/router-simple-routing-cleanup.md +209 -0
- package/skills/vue-router-best-practices/reference/router-use-vue-router-for-production.md +183 -0
- package/skills/vue-testing-best-practices/LICENSE.md +21 -0
- package/skills/vue-testing-best-practices/SKILL.md +29 -0
- package/skills/vue-testing-best-practices/SYNC.md +5 -0
- package/skills/vue-testing-best-practices/reference/async-component-testing.md +163 -0
- package/skills/vue-testing-best-practices/reference/teleport-testing-complexity.md +158 -0
- package/skills/vue-testing-best-practices/reference/testing-async-await-flushpromises.md +175 -0
- package/skills/vue-testing-best-practices/reference/testing-browser-vs-node-runners.md +208 -0
- package/skills/vue-testing-best-practices/reference/testing-component-blackbox-approach.md +144 -0
- package/skills/vue-testing-best-practices/reference/testing-composables-helper-wrapper.md +238 -0
- package/skills/vue-testing-best-practices/reference/testing-e2e-playwright-recommended.md +242 -0
- package/skills/vue-testing-best-practices/reference/testing-no-snapshot-only.md +197 -0
- package/skills/vue-testing-best-practices/reference/testing-pinia-store-setup.md +228 -0
- package/skills/vue-testing-best-practices/reference/testing-suspense-async-components.md +229 -0
- package/skills/vue-testing-best-practices/reference/testing-vitest-recommended-for-vue.md +204 -0
- package/skills/vueuse-functions/LICENSE.md +21 -0
- package/skills/vueuse-functions/SKILL.md +419 -0
- package/skills/vueuse-functions/SYNC.md +5 -0
- package/skills/vueuse-functions/references/computedAsync.md +195 -0
- package/skills/vueuse-functions/references/computedEager.md +62 -0
- package/skills/vueuse-functions/references/computedInject.md +137 -0
- package/skills/vueuse-functions/references/computedWithControl.md +98 -0
- package/skills/vueuse-functions/references/createEventHook.md +86 -0
- package/skills/vueuse-functions/references/createGenericProjection.md +25 -0
- package/skills/vueuse-functions/references/createGlobalState.md +95 -0
- package/skills/vueuse-functions/references/createInjectionState.md +226 -0
- package/skills/vueuse-functions/references/createProjection.md +31 -0
- package/skills/vueuse-functions/references/createRef.md +54 -0
- package/skills/vueuse-functions/references/createReusableTemplate.md +361 -0
- package/skills/vueuse-functions/references/createSharedComposable.md +42 -0
- package/skills/vueuse-functions/references/createTemplatePromise.md +306 -0
- package/skills/vueuse-functions/references/createUnrefFn.md +51 -0
- package/skills/vueuse-functions/references/extendRef.md +76 -0
- package/skills/vueuse-functions/references/from.md +80 -0
- package/skills/vueuse-functions/references/get.md +30 -0
- package/skills/vueuse-functions/references/injectLocal.md +35 -0
- package/skills/vueuse-functions/references/isDefined.md +31 -0
- package/skills/vueuse-functions/references/logicAnd.md +40 -0
- package/skills/vueuse-functions/references/logicNot.md +36 -0
- package/skills/vueuse-functions/references/logicOr.md +40 -0
- package/skills/vueuse-functions/references/makeDestructurable.md +41 -0
- package/skills/vueuse-functions/references/onClickOutside.md +228 -0
- package/skills/vueuse-functions/references/onElementRemoval.md +88 -0
- package/skills/vueuse-functions/references/onKeyStroke.md +212 -0
- package/skills/vueuse-functions/references/onLongPress.md +235 -0
- package/skills/vueuse-functions/references/onStartTyping.md +53 -0
- package/skills/vueuse-functions/references/provideLocal.md +37 -0
- package/skills/vueuse-functions/references/reactify.md +144 -0
- package/skills/vueuse-functions/references/reactifyObject.md +62 -0
- package/skills/vueuse-functions/references/reactiveComputed.md +34 -0
- package/skills/vueuse-functions/references/reactiveOmit.md +86 -0
- package/skills/vueuse-functions/references/reactivePick.md +106 -0
- package/skills/vueuse-functions/references/refAutoReset.md +46 -0
- package/skills/vueuse-functions/references/refDebounced.md +81 -0
- package/skills/vueuse-functions/references/refDefault.md +36 -0
- package/skills/vueuse-functions/references/refManualReset.md +48 -0
- package/skills/vueuse-functions/references/refThrottled.md +99 -0
- package/skills/vueuse-functions/references/refWithControl.md +146 -0
- package/skills/vueuse-functions/references/set.md +30 -0
- package/skills/vueuse-functions/references/syncRef.md +195 -0
- package/skills/vueuse-functions/references/syncRefs.md +128 -0
- package/skills/vueuse-functions/references/templateRef.md +86 -0
- package/skills/vueuse-functions/references/toObserver.md +38 -0
- package/skills/vueuse-functions/references/toReactive.md +41 -0
- package/skills/vueuse-functions/references/toRef.md +74 -0
- package/skills/vueuse-functions/references/toRefs.md +78 -0
- package/skills/vueuse-functions/references/tryOnBeforeMount.md +34 -0
- package/skills/vueuse-functions/references/tryOnBeforeUnmount.md +32 -0
- package/skills/vueuse-functions/references/tryOnMounted.md +34 -0
- package/skills/vueuse-functions/references/tryOnScopeDispose.md +31 -0
- package/skills/vueuse-functions/references/tryOnUnmounted.md +32 -0
- package/skills/vueuse-functions/references/unrefElement.md +54 -0
- package/skills/vueuse-functions/references/until.md +161 -0
- package/skills/vueuse-functions/references/useAbs.md +31 -0
- package/skills/vueuse-functions/references/useActiveElement.md +86 -0
- package/skills/vueuse-functions/references/useAnimate.md +180 -0
- package/skills/vueuse-functions/references/useArrayDifference.md +84 -0
- package/skills/vueuse-functions/references/useArrayEvery.md +59 -0
- package/skills/vueuse-functions/references/useArrayFilter.md +63 -0
- package/skills/vueuse-functions/references/useArrayFind.md +50 -0
- package/skills/vueuse-functions/references/useArrayFindIndex.md +59 -0
- package/skills/vueuse-functions/references/useArrayFindLast.md +52 -0
- package/skills/vueuse-functions/references/useArrayIncludes.md +63 -0
- package/skills/vueuse-functions/references/useArrayJoin.md +74 -0
- package/skills/vueuse-functions/references/useArrayMap.md +59 -0
- package/skills/vueuse-functions/references/useArrayReduce.md +81 -0
- package/skills/vueuse-functions/references/useArraySome.md +59 -0
- package/skills/vueuse-functions/references/useArrayUnique.md +76 -0
- package/skills/vueuse-functions/references/useAsyncQueue.md +136 -0
- package/skills/vueuse-functions/references/useAsyncState.md +185 -0
- package/skills/vueuse-functions/references/useAsyncValidator.md +70 -0
- package/skills/vueuse-functions/references/useAuth.md +123 -0
- package/skills/vueuse-functions/references/useAverage.md +36 -0
- package/skills/vueuse-functions/references/useAxios.md +325 -0
- package/skills/vueuse-functions/references/useBase64.md +136 -0
- package/skills/vueuse-functions/references/useBattery.md +80 -0
- package/skills/vueuse-functions/references/useBluetooth.md +174 -0
- package/skills/vueuse-functions/references/useBreakpoints.md +176 -0
- package/skills/vueuse-functions/references/useBroadcastChannel.md +73 -0
- package/skills/vueuse-functions/references/useBrowserLocation.md +56 -0
- package/skills/vueuse-functions/references/useCached.md +52 -0
- package/skills/vueuse-functions/references/useCeil.md +31 -0
- package/skills/vueuse-functions/references/useChangeCase.md +79 -0
- package/skills/vueuse-functions/references/useClamp.md +85 -0
- package/skills/vueuse-functions/references/useClipboard.md +122 -0
- package/skills/vueuse-functions/references/useClipboardItems.md +93 -0
- package/skills/vueuse-functions/references/useCloned.md +91 -0
- package/skills/vueuse-functions/references/useColorMode.md +172 -0
- package/skills/vueuse-functions/references/useConfirmDialog.md +159 -0
- package/skills/vueuse-functions/references/useCookies.md +162 -0
- package/skills/vueuse-functions/references/useCountdown.md +105 -0
- package/skills/vueuse-functions/references/useCounter.md +86 -0
- package/skills/vueuse-functions/references/useCssSupports.md +33 -0
- package/skills/vueuse-functions/references/useCssVar.md +50 -0
- package/skills/vueuse-functions/references/useCurrentElement.md +61 -0
- package/skills/vueuse-functions/references/useCycleList.md +75 -0
- package/skills/vueuse-functions/references/useDark.md +142 -0
- package/skills/vueuse-functions/references/useDateFormat.md +145 -0
- package/skills/vueuse-functions/references/useDebounceFn.md +100 -0
- package/skills/vueuse-functions/references/useDebouncedRefHistory.md +40 -0
- package/skills/vueuse-functions/references/useDeviceMotion.md +80 -0
- package/skills/vueuse-functions/references/useDeviceOrientation.md +64 -0
- package/skills/vueuse-functions/references/useDevicePixelRatio.md +47 -0
- package/skills/vueuse-functions/references/useDevicesList.md +89 -0
- package/skills/vueuse-functions/references/useDisplayMedia.md +67 -0
- package/skills/vueuse-functions/references/useDocumentVisibility.md +44 -0
- package/skills/vueuse-functions/references/useDraggable.md +289 -0
- package/skills/vueuse-functions/references/useDrauu.md +65 -0
- package/skills/vueuse-functions/references/useDropZone.md +83 -0
- package/skills/vueuse-functions/references/useElementBounding.md +131 -0
- package/skills/vueuse-functions/references/useElementByPoint.md +46 -0
- package/skills/vueuse-functions/references/useElementHover.md +79 -0
- package/skills/vueuse-functions/references/useElementSize.md +79 -0
- package/skills/vueuse-functions/references/useElementVisibility.md +163 -0
- package/skills/vueuse-functions/references/useEventBus.md +101 -0
- package/skills/vueuse-functions/references/useEventListener.md +226 -0
- package/skills/vueuse-functions/references/useEventSource.md +204 -0
- package/skills/vueuse-functions/references/useExtractedObservable.md +198 -0
- package/skills/vueuse-functions/references/useEyeDropper.md +72 -0
- package/skills/vueuse-functions/references/useFavicon.md +69 -0
- package/skills/vueuse-functions/references/useFetch.md +546 -0
- package/skills/vueuse-functions/references/useFileDialog.md +91 -0
- package/skills/vueuse-functions/references/useFileSystemAccess.md +161 -0
- package/skills/vueuse-functions/references/useFirestore.md +129 -0
- package/skills/vueuse-functions/references/useFloor.md +31 -0
- package/skills/vueuse-functions/references/useFocus.md +99 -0
- package/skills/vueuse-functions/references/useFocusTrap.md +245 -0
- package/skills/vueuse-functions/references/useFocusWithin.md +57 -0
- package/skills/vueuse-functions/references/useFps.md +28 -0
- package/skills/vueuse-functions/references/useFullscreen.md +74 -0
- package/skills/vueuse-functions/references/useFuse.md +75 -0
- package/skills/vueuse-functions/references/useGamepad.md +176 -0
- package/skills/vueuse-functions/references/useGeolocation.md +63 -0
- package/skills/vueuse-functions/references/useIDBKeyval.md +93 -0
- package/skills/vueuse-functions/references/useIdle.md +88 -0
- package/skills/vueuse-functions/references/useImage.md +90 -0
- package/skills/vueuse-functions/references/useInfiniteScroll.md +156 -0
- package/skills/vueuse-functions/references/useIntersectionObserver.md +117 -0
- package/skills/vueuse-functions/references/useInterval.md +112 -0
- package/skills/vueuse-functions/references/useIntervalFn.md +50 -0
- package/skills/vueuse-functions/references/useIpcRenderer.md +144 -0
- package/skills/vueuse-functions/references/useIpcRendererInvoke.md +58 -0
- package/skills/vueuse-functions/references/useIpcRendererOn.md +52 -0
- package/skills/vueuse-functions/references/useJwt.md +57 -0
- package/skills/vueuse-functions/references/useKeyModifier.md +87 -0
- package/skills/vueuse-functions/references/useLastChanged.md +63 -0
- package/skills/vueuse-functions/references/useLocalStorage.md +41 -0
- package/skills/vueuse-functions/references/useMagicKeys.md +245 -0
- package/skills/vueuse-functions/references/useManualRefHistory.md +204 -0
- package/skills/vueuse-functions/references/useMath.md +47 -0
- package/skills/vueuse-functions/references/useMax.md +36 -0
- package/skills/vueuse-functions/references/useMediaControls.md +201 -0
- package/skills/vueuse-functions/references/useMediaQuery.md +53 -0
- package/skills/vueuse-functions/references/useMemoize.md +175 -0
- package/skills/vueuse-functions/references/useMemory.md +70 -0
- package/skills/vueuse-functions/references/useMin.md +36 -0
- package/skills/vueuse-functions/references/useMounted.md +38 -0
- package/skills/vueuse-functions/references/useMouse.md +113 -0
- package/skills/vueuse-functions/references/useMouseInElement.md +132 -0
- package/skills/vueuse-functions/references/useMousePressed.md +116 -0
- package/skills/vueuse-functions/references/useMutationObserver.md +60 -0
- package/skills/vueuse-functions/references/useNProgress.md +78 -0
- package/skills/vueuse-functions/references/useNavigatorLanguage.md +57 -0
- package/skills/vueuse-functions/references/useNetwork.md +106 -0
- package/skills/vueuse-functions/references/useNow.md +83 -0
- package/skills/vueuse-functions/references/useObjectUrl.md +55 -0
- package/skills/vueuse-functions/references/useObservable.md +91 -0
- package/skills/vueuse-functions/references/useOffsetPagination.md +199 -0
- package/skills/vueuse-functions/references/useOnline.md +41 -0
- package/skills/vueuse-functions/references/usePageLeave.md +43 -0
- package/skills/vueuse-functions/references/useParallax.md +58 -0
- package/skills/vueuse-functions/references/useParentElement.md +54 -0
- package/skills/vueuse-functions/references/usePerformanceObserver.md +48 -0
- package/skills/vueuse-functions/references/usePermission.md +78 -0
- package/skills/vueuse-functions/references/usePointer.md +91 -0
- package/skills/vueuse-functions/references/usePointerLock.md +59 -0
- package/skills/vueuse-functions/references/usePointerSwipe.md +80 -0
- package/skills/vueuse-functions/references/usePrecision.md +49 -0
- package/skills/vueuse-functions/references/usePreferredColorScheme.md +42 -0
- package/skills/vueuse-functions/references/usePreferredContrast.md +42 -0
- package/skills/vueuse-functions/references/usePreferredDark.md +41 -0
- package/skills/vueuse-functions/references/usePreferredLanguages.md +41 -0
- package/skills/vueuse-functions/references/usePreferredReducedMotion.md +42 -0
- package/skills/vueuse-functions/references/usePreferredReducedTransparency.md +42 -0
- package/skills/vueuse-functions/references/usePrevious.md +40 -0
- package/skills/vueuse-functions/references/useProjection.md +38 -0
- package/skills/vueuse-functions/references/useQRCode.md +53 -0
- package/skills/vueuse-functions/references/useRTDB.md +83 -0
- package/skills/vueuse-functions/references/useRafFn.md +68 -0
- package/skills/vueuse-functions/references/useRefHistory.md +285 -0
- package/skills/vueuse-functions/references/useResizeObserver.md +108 -0
- package/skills/vueuse-functions/references/useRound.md +31 -0
- package/skills/vueuse-functions/references/useRouteHash.md +27 -0
- package/skills/vueuse-functions/references/useRouteParams.md +38 -0
- package/skills/vueuse-functions/references/useRouteQuery.md +79 -0
- package/skills/vueuse-functions/references/useSSRWidth.md +47 -0
- package/skills/vueuse-functions/references/useScreenOrientation.md +98 -0
- package/skills/vueuse-functions/references/useScreenSafeArea.md +60 -0
- package/skills/vueuse-functions/references/useScriptTag.md +116 -0
- package/skills/vueuse-functions/references/useScroll.md +238 -0
- package/skills/vueuse-functions/references/useScrollLock.md +66 -0
- package/skills/vueuse-functions/references/useSessionStorage.md +41 -0
- package/skills/vueuse-functions/references/useShare.md +67 -0
- package/skills/vueuse-functions/references/useSortable.md +276 -0
- package/skills/vueuse-functions/references/useSorted.md +90 -0
- package/skills/vueuse-functions/references/useSpeechRecognition.md +90 -0
- package/skills/vueuse-functions/references/useSpeechSynthesis.md +101 -0
- package/skills/vueuse-functions/references/useStepper.md +137 -0
- package/skills/vueuse-functions/references/useStorage.md +278 -0
- package/skills/vueuse-functions/references/useStorageAsync.md +136 -0
- package/skills/vueuse-functions/references/useStyleTag.md +131 -0
- package/skills/vueuse-functions/references/useSubject.md +77 -0
- package/skills/vueuse-functions/references/useSubscription.md +33 -0
- package/skills/vueuse-functions/references/useSum.md +36 -0
- package/skills/vueuse-functions/references/useSupported.md +29 -0
- package/skills/vueuse-functions/references/useSwipe.md +75 -0
- package/skills/vueuse-functions/references/useTemplateRefsList.md +37 -0
- package/skills/vueuse-functions/references/useTextDirection.md +75 -0
- package/skills/vueuse-functions/references/useTextSelection.md +43 -0
- package/skills/vueuse-functions/references/useTextareaAutosize.md +94 -0
- package/skills/vueuse-functions/references/useThrottleFn.md +57 -0
- package/skills/vueuse-functions/references/useThrottledRefHistory.md +47 -0
- package/skills/vueuse-functions/references/useTimeAgo.md +154 -0
- package/skills/vueuse-functions/references/useTimeAgoIntl.md +117 -0
- package/skills/vueuse-functions/references/useTimeout.md +113 -0
- package/skills/vueuse-functions/references/useTimeoutFn.md +51 -0
- package/skills/vueuse-functions/references/useTimeoutPoll.md +47 -0
- package/skills/vueuse-functions/references/useTimestamp.md +93 -0
- package/skills/vueuse-functions/references/useTitle.md +115 -0
- package/skills/vueuse-functions/references/useToNumber.md +54 -0
- package/skills/vueuse-functions/references/useToString.md +34 -0
- package/skills/vueuse-functions/references/useToggle.md +103 -0
- package/skills/vueuse-functions/references/useTransition.md +265 -0
- package/skills/vueuse-functions/references/useTrunc.md +33 -0
- package/skills/vueuse-functions/references/useUrlSearchParams.md +121 -0
- package/skills/vueuse-functions/references/useUserMedia.md +96 -0
- package/skills/vueuse-functions/references/useVModel.md +182 -0
- package/skills/vueuse-functions/references/useVModels.md +67 -0
- package/skills/vueuse-functions/references/useVibrate.md +86 -0
- package/skills/vueuse-functions/references/useVirtualList.md +182 -0
- package/skills/vueuse-functions/references/useWakeLock.md +51 -0
- package/skills/vueuse-functions/references/useWebNotification.md +175 -0
- package/skills/vueuse-functions/references/useWebSocket.md +299 -0
- package/skills/vueuse-functions/references/useWebWorker.md +60 -0
- package/skills/vueuse-functions/references/useWebWorkerFn.md +102 -0
- package/skills/vueuse-functions/references/useWindowFocus.md +46 -0
- package/skills/vueuse-functions/references/useWindowScroll.md +46 -0
- package/skills/vueuse-functions/references/useWindowSize.md +78 -0
- package/skills/vueuse-functions/references/useZoomFactor.md +53 -0
- package/skills/vueuse-functions/references/useZoomLevel.md +53 -0
- package/skills/vueuse-functions/references/watchArray.md +53 -0
- package/skills/vueuse-functions/references/watchAtMost.md +63 -0
- package/skills/vueuse-functions/references/watchDebounced.md +101 -0
- package/skills/vueuse-functions/references/watchDeep.md +54 -0
- package/skills/vueuse-functions/references/watchExtractedObservable.md +192 -0
- package/skills/vueuse-functions/references/watchIgnorable.md +120 -0
- package/skills/vueuse-functions/references/watchImmediate.md +44 -0
- package/skills/vueuse-functions/references/watchOnce.md +41 -0
- package/skills/vueuse-functions/references/watchPausable.md +86 -0
- package/skills/vueuse-functions/references/watchThrottled.md +108 -0
- package/skills/vueuse-functions/references/watchTriggerable.md +98 -0
- package/skills/vueuse-functions/references/watchWithFilter.md +54 -0
- package/skills/vueuse-functions/references/whenever.md +108 -0
- package/skills/web-design-guidelines/SKILL.md +39 -0
- package/skills/web-design-guidelines/SYNC.md +5 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pnpm-store
|
|
3
|
+
description: Content-addressable storage system that makes pnpm fast and disk-efficient
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# pnpm Store
|
|
7
|
+
|
|
8
|
+
pnpm uses a content-addressable store to save disk space and speed up installations. All packages are stored once globally and hard-linked to project `node_modules`.
|
|
9
|
+
|
|
10
|
+
## How It Works
|
|
11
|
+
|
|
12
|
+
1. **Global Store**: Packages are downloaded once to a central store
|
|
13
|
+
2. **Hard Links**: Projects link to store instead of copying files
|
|
14
|
+
3. **Content-Addressable**: Files are stored by content hash, deduplicating identical files
|
|
15
|
+
|
|
16
|
+
### Storage Layout
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
~/.pnpm-store/ # Global store (default location)
|
|
20
|
+
└── v3/
|
|
21
|
+
└── files/
|
|
22
|
+
└── <hash>/ # Files stored by content hash
|
|
23
|
+
|
|
24
|
+
project/
|
|
25
|
+
└── node_modules/
|
|
26
|
+
├── .pnpm/ # Virtual store (hard links to global store)
|
|
27
|
+
│ ├── lodash@4.17.21/
|
|
28
|
+
│ │ └── node_modules/
|
|
29
|
+
│ │ └── lodash/
|
|
30
|
+
│ └── express@4.18.2/
|
|
31
|
+
│ └── node_modules/
|
|
32
|
+
│ ├── express/
|
|
33
|
+
│ └── <deps>/ # Flat structure for dependencies
|
|
34
|
+
├── lodash -> .pnpm/lodash@4.17.21/node_modules/lodash
|
|
35
|
+
└── express -> .pnpm/express@4.18.2/node_modules/express
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Store Commands
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# Show store location
|
|
42
|
+
pnpm store path
|
|
43
|
+
|
|
44
|
+
# Remove unreferenced packages
|
|
45
|
+
pnpm store prune
|
|
46
|
+
|
|
47
|
+
# Check store integrity
|
|
48
|
+
pnpm store status
|
|
49
|
+
|
|
50
|
+
# Add package to store without installing
|
|
51
|
+
pnpm store add <pkg>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Configuration
|
|
55
|
+
|
|
56
|
+
### Store Location
|
|
57
|
+
|
|
58
|
+
```ini
|
|
59
|
+
# .npmrc
|
|
60
|
+
store-dir=~/.pnpm-store
|
|
61
|
+
|
|
62
|
+
# Or use environment variable
|
|
63
|
+
PNPM_HOME=~/.local/share/pnpm
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Virtual Store
|
|
67
|
+
|
|
68
|
+
The virtual store (`.pnpm` in `node_modules`) contains symlinks to the global store:
|
|
69
|
+
|
|
70
|
+
```ini
|
|
71
|
+
# Customize virtual store location
|
|
72
|
+
virtual-store-dir=node_modules/.pnpm
|
|
73
|
+
|
|
74
|
+
# Alternative flat layout
|
|
75
|
+
node-linker=hoisted
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Disk Space Benefits
|
|
79
|
+
|
|
80
|
+
pnpm saves significant disk space:
|
|
81
|
+
|
|
82
|
+
- **Deduplication**: Same package version stored once across all projects
|
|
83
|
+
- **Content deduplication**: Identical files across different packages stored once
|
|
84
|
+
- **Hard links**: No copying, just linking
|
|
85
|
+
|
|
86
|
+
### Check disk usage
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
# Compare actual vs apparent size
|
|
90
|
+
du -sh node_modules # Apparent size
|
|
91
|
+
du -sh --apparent-size node_modules # With hard links counted
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Node Linker Modes
|
|
95
|
+
|
|
96
|
+
Configure how `node_modules` is structured:
|
|
97
|
+
|
|
98
|
+
```ini
|
|
99
|
+
# Default: Symlinked structure (recommended)
|
|
100
|
+
node-linker=isolated
|
|
101
|
+
|
|
102
|
+
# Flat node_modules (npm-like, for compatibility)
|
|
103
|
+
node-linker=hoisted
|
|
104
|
+
|
|
105
|
+
# PnP mode (experimental, like Yarn PnP)
|
|
106
|
+
node-linker=pnp
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Isolated Mode (Default)
|
|
110
|
+
|
|
111
|
+
- Strict dependency resolution
|
|
112
|
+
- No phantom dependencies
|
|
113
|
+
- Packages can only access declared dependencies
|
|
114
|
+
|
|
115
|
+
### Hoisted Mode
|
|
116
|
+
|
|
117
|
+
- Flat `node_modules` like npm
|
|
118
|
+
- For compatibility with tools that don't support symlinks
|
|
119
|
+
- Loses strictness benefits
|
|
120
|
+
|
|
121
|
+
## Side Effects Cache
|
|
122
|
+
|
|
123
|
+
Cache build outputs for native modules:
|
|
124
|
+
|
|
125
|
+
```ini
|
|
126
|
+
# Enable side effects caching
|
|
127
|
+
side-effects-cache=true
|
|
128
|
+
|
|
129
|
+
# Store side effects in project (instead of global store)
|
|
130
|
+
side-effects-cache-readonly=true
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Shared Store Across Machines
|
|
134
|
+
|
|
135
|
+
For CI/CD, you can share the store:
|
|
136
|
+
|
|
137
|
+
```yaml
|
|
138
|
+
# GitHub Actions example
|
|
139
|
+
- uses: pnpm/action-setup@v4
|
|
140
|
+
with:
|
|
141
|
+
run_install: false
|
|
142
|
+
|
|
143
|
+
- name: Get pnpm store directory
|
|
144
|
+
shell: bash
|
|
145
|
+
run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
|
|
146
|
+
|
|
147
|
+
- uses: actions/cache@v4
|
|
148
|
+
with:
|
|
149
|
+
path: ${{ env.STORE_PATH }}
|
|
150
|
+
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Troubleshooting
|
|
154
|
+
|
|
155
|
+
### Store corruption
|
|
156
|
+
```bash
|
|
157
|
+
# Verify and fix store
|
|
158
|
+
pnpm store status
|
|
159
|
+
pnpm store prune
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Hard link issues (network drives, Docker)
|
|
163
|
+
```ini
|
|
164
|
+
# Use copying instead of hard links
|
|
165
|
+
package-import-method=copy
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Permission issues
|
|
169
|
+
```bash
|
|
170
|
+
# Fix store permissions
|
|
171
|
+
chmod -R u+w ~/.pnpm-store
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
<!--
|
|
175
|
+
Source references:
|
|
176
|
+
- https://pnpm.io/symlinked-node-modules-structure
|
|
177
|
+
- https://pnpm.io/cli/store
|
|
178
|
+
- https://pnpm.io/npmrc#store-dir
|
|
179
|
+
-->
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pnpm-workspaces
|
|
3
|
+
description: Monorepo support with workspaces for managing multiple packages
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# pnpm Workspaces
|
|
7
|
+
|
|
8
|
+
pnpm has built-in support for monorepos (multi-package repositories) through workspaces.
|
|
9
|
+
|
|
10
|
+
## Setting Up Workspaces
|
|
11
|
+
|
|
12
|
+
Create `pnpm-workspace.yaml` at the repository root:
|
|
13
|
+
|
|
14
|
+
```yaml
|
|
15
|
+
packages:
|
|
16
|
+
# Include all packages in packages/ directory
|
|
17
|
+
- 'packages/*'
|
|
18
|
+
# Include all apps
|
|
19
|
+
- 'apps/*'
|
|
20
|
+
# Include nested packages
|
|
21
|
+
- 'tools/*/packages/*'
|
|
22
|
+
# Exclude test directories
|
|
23
|
+
- '!**/test/**'
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Workspace Protocol
|
|
27
|
+
|
|
28
|
+
Use `workspace:` protocol to reference local packages:
|
|
29
|
+
|
|
30
|
+
```json
|
|
31
|
+
{
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"@myorg/utils": "workspace:*",
|
|
34
|
+
"@myorg/core": "workspace:^",
|
|
35
|
+
"@myorg/types": "workspace:~"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Protocol Variants
|
|
41
|
+
|
|
42
|
+
| Protocol | Behavior | Published As |
|
|
43
|
+
|----------|----------|--------------|
|
|
44
|
+
| `workspace:*` | Any version | Actual version (e.g., `1.2.3`) |
|
|
45
|
+
| `workspace:^` | Compatible version | `^1.2.3` |
|
|
46
|
+
| `workspace:~` | Patch version | `~1.2.3` |
|
|
47
|
+
| `workspace:^1.0.0` | Semver range | `^1.0.0` |
|
|
48
|
+
|
|
49
|
+
## Filtering Packages
|
|
50
|
+
|
|
51
|
+
Run commands on specific packages using `--filter`:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# By package name
|
|
55
|
+
pnpm --filter @myorg/app build
|
|
56
|
+
pnpm -F @myorg/app build
|
|
57
|
+
|
|
58
|
+
# By directory path
|
|
59
|
+
pnpm --filter "./packages/core" test
|
|
60
|
+
|
|
61
|
+
# Glob patterns
|
|
62
|
+
pnpm --filter "@myorg/*" lint
|
|
63
|
+
pnpm --filter "!@myorg/internal-*" publish
|
|
64
|
+
|
|
65
|
+
# All packages
|
|
66
|
+
pnpm -r build
|
|
67
|
+
pnpm --recursive build
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Dependency-based Filtering
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# Package and all its dependencies
|
|
74
|
+
pnpm --filter "...@myorg/app" build
|
|
75
|
+
|
|
76
|
+
# Package and all its dependents
|
|
77
|
+
pnpm --filter "@myorg/core..." test
|
|
78
|
+
|
|
79
|
+
# Both directions
|
|
80
|
+
pnpm --filter "...@myorg/shared..." build
|
|
81
|
+
|
|
82
|
+
# Changed since git ref
|
|
83
|
+
pnpm --filter "...[origin/main]" test
|
|
84
|
+
pnpm --filter "[HEAD~5]" lint
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Workspace Commands
|
|
88
|
+
|
|
89
|
+
### Install dependencies
|
|
90
|
+
```bash
|
|
91
|
+
# Install all workspace packages
|
|
92
|
+
pnpm install
|
|
93
|
+
|
|
94
|
+
# Add dependency to specific package
|
|
95
|
+
pnpm --filter @myorg/app add lodash
|
|
96
|
+
|
|
97
|
+
# Add workspace dependency
|
|
98
|
+
pnpm --filter @myorg/app add @myorg/utils
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Run scripts
|
|
102
|
+
```bash
|
|
103
|
+
# Run in all packages with that script
|
|
104
|
+
pnpm -r run build
|
|
105
|
+
|
|
106
|
+
# Run in topological order (dependencies first)
|
|
107
|
+
pnpm -r --workspace-concurrency=1 run build
|
|
108
|
+
|
|
109
|
+
# Run in parallel
|
|
110
|
+
pnpm -r --parallel run test
|
|
111
|
+
|
|
112
|
+
# Stream output
|
|
113
|
+
pnpm -r --stream run dev
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Execute commands
|
|
117
|
+
```bash
|
|
118
|
+
# Run command in all packages
|
|
119
|
+
pnpm -r exec pwd
|
|
120
|
+
|
|
121
|
+
# Run in specific packages
|
|
122
|
+
pnpm --filter "./packages/**" exec rm -rf dist
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Workspace Settings
|
|
126
|
+
|
|
127
|
+
Configure in `.npmrc` or `pnpm-workspace.yaml`:
|
|
128
|
+
|
|
129
|
+
```ini
|
|
130
|
+
# Link workspace packages automatically
|
|
131
|
+
link-workspace-packages=true
|
|
132
|
+
|
|
133
|
+
# Prefer workspace packages over registry
|
|
134
|
+
prefer-workspace-packages=true
|
|
135
|
+
|
|
136
|
+
# Single lockfile (recommended)
|
|
137
|
+
shared-workspace-lockfile=true
|
|
138
|
+
|
|
139
|
+
# Workspace protocol handling
|
|
140
|
+
save-workspace-protocol=rolling
|
|
141
|
+
|
|
142
|
+
# Concurrent workspace scripts
|
|
143
|
+
workspace-concurrency=4
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Publishing Workspaces
|
|
147
|
+
|
|
148
|
+
When publishing, `workspace:` protocols are converted:
|
|
149
|
+
|
|
150
|
+
```json
|
|
151
|
+
// Before publish
|
|
152
|
+
{
|
|
153
|
+
"dependencies": {
|
|
154
|
+
"@myorg/utils": "workspace:^"
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// After publish
|
|
159
|
+
{
|
|
160
|
+
"dependencies": {
|
|
161
|
+
"@myorg/utils": "^1.2.3"
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Use `--no-git-checks` for publishing from CI:
|
|
167
|
+
```bash
|
|
168
|
+
pnpm publish -r --no-git-checks
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## Best Practices
|
|
172
|
+
|
|
173
|
+
1. **Use workspace protocol** for internal dependencies
|
|
174
|
+
2. **Enable `link-workspace-packages`** for automatic linking
|
|
175
|
+
3. **Use shared lockfile** for consistency
|
|
176
|
+
4. **Filter by dependencies** when building to ensure correct order
|
|
177
|
+
5. **Use catalogs** for shared external dependency versions
|
|
178
|
+
|
|
179
|
+
## Example Project Structure
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
my-monorepo/
|
|
183
|
+
├── pnpm-workspace.yaml
|
|
184
|
+
├── package.json
|
|
185
|
+
├── pnpm-lock.yaml
|
|
186
|
+
├── packages/
|
|
187
|
+
│ ├── core/
|
|
188
|
+
│ │ └── package.json
|
|
189
|
+
│ ├── utils/
|
|
190
|
+
│ │ └── package.json
|
|
191
|
+
│ └── types/
|
|
192
|
+
│ └── package.json
|
|
193
|
+
└── apps/
|
|
194
|
+
├── web/
|
|
195
|
+
│ └── package.json
|
|
196
|
+
└── api/
|
|
197
|
+
└── package.json
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
<!--
|
|
201
|
+
Source references:
|
|
202
|
+
- https://pnpm.io/workspaces
|
|
203
|
+
- https://pnpm.io/filtering
|
|
204
|
+
- https://pnpm.io/npmrc#workspace-settings
|
|
205
|
+
-->
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pnpm-aliases
|
|
3
|
+
description: Install packages under custom names for versioning, forks, or alternatives
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# pnpm Aliases
|
|
7
|
+
|
|
8
|
+
pnpm supports package aliases using the `npm:` protocol. This lets you install packages under different names, use multiple versions of the same package, or substitute packages.
|
|
9
|
+
|
|
10
|
+
## Basic Syntax
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
pnpm add <alias>@npm:<package>@<version>
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
In `package.json`:
|
|
17
|
+
```json
|
|
18
|
+
{
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"<alias>": "npm:<package>@<version>"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Use Cases
|
|
26
|
+
|
|
27
|
+
### Multiple Versions of Same Package
|
|
28
|
+
|
|
29
|
+
Install different versions side by side:
|
|
30
|
+
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"lodash3": "npm:lodash@3",
|
|
35
|
+
"lodash4": "npm:lodash@4"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Usage:
|
|
41
|
+
```js
|
|
42
|
+
import lodash3 from 'lodash3'
|
|
43
|
+
import lodash4 from 'lodash4'
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Replace Package with Fork
|
|
47
|
+
|
|
48
|
+
Substitute a package with a fork or alternative:
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
{
|
|
52
|
+
"dependencies": {
|
|
53
|
+
"original-pkg": "npm:my-fork@^1.0.0"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
All imports of `original-pkg` will resolve to `my-fork`.
|
|
59
|
+
|
|
60
|
+
### Replace Deprecated Package
|
|
61
|
+
|
|
62
|
+
```json
|
|
63
|
+
{
|
|
64
|
+
"dependencies": {
|
|
65
|
+
"request": "npm:@cypress/request@^3.0.0"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Scoped to Unscoped (or vice versa)
|
|
71
|
+
|
|
72
|
+
```json
|
|
73
|
+
{
|
|
74
|
+
"dependencies": {
|
|
75
|
+
"vue": "npm:@anthropic/vue@^3.0.0",
|
|
76
|
+
"@myorg/utils": "npm:lodash@^4.17.21"
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## CLI Usage
|
|
82
|
+
|
|
83
|
+
### Add with alias
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# Add lodash under alias
|
|
87
|
+
pnpm add lodash4@npm:lodash@4
|
|
88
|
+
|
|
89
|
+
# Add fork as original name
|
|
90
|
+
pnpm add request@npm:@cypress/request
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Add multiple versions
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
pnpm add react17@npm:react@17 react18@npm:react@18
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## With TypeScript
|
|
100
|
+
|
|
101
|
+
For type resolution with aliases, you may need to configure TypeScript:
|
|
102
|
+
|
|
103
|
+
```json
|
|
104
|
+
// tsconfig.json
|
|
105
|
+
{
|
|
106
|
+
"compilerOptions": {
|
|
107
|
+
"paths": {
|
|
108
|
+
"lodash3": ["node_modules/lodash3"],
|
|
109
|
+
"lodash4": ["node_modules/lodash4"]
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Or use `@types` packages with aliases:
|
|
116
|
+
|
|
117
|
+
```json
|
|
118
|
+
{
|
|
119
|
+
"devDependencies": {
|
|
120
|
+
"@types/lodash3": "npm:@types/lodash@3",
|
|
121
|
+
"@types/lodash4": "npm:@types/lodash@4"
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Combined with Overrides
|
|
127
|
+
|
|
128
|
+
Force all transitive dependencies to use an alias:
|
|
129
|
+
|
|
130
|
+
```yaml
|
|
131
|
+
# pnpm-workspace.yaml
|
|
132
|
+
overrides:
|
|
133
|
+
"underscore": "npm:lodash@^4.17.21"
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
This replaces all `underscore` imports (including in dependencies) with lodash.
|
|
137
|
+
|
|
138
|
+
## Git and Local Aliases
|
|
139
|
+
|
|
140
|
+
Aliases work with any valid pnpm specifier:
|
|
141
|
+
|
|
142
|
+
```json
|
|
143
|
+
{
|
|
144
|
+
"dependencies": {
|
|
145
|
+
"my-fork": "npm:user/repo#commit",
|
|
146
|
+
"local-pkg": "file:../local-package"
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Best Practices
|
|
152
|
+
|
|
153
|
+
1. **Clear naming**: Use descriptive alias names that indicate purpose
|
|
154
|
+
```json
|
|
155
|
+
"lodash-legacy": "npm:lodash@3"
|
|
156
|
+
"lodash-modern": "npm:lodash@4"
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
2. **Document aliases**: Add comments or documentation explaining why aliases exist
|
|
160
|
+
|
|
161
|
+
3. **Prefer overrides for global replacement**: If you want to replace a package everywhere, use overrides instead of aliases
|
|
162
|
+
|
|
163
|
+
4. **Test thoroughly**: Aliased packages may have subtle differences in behavior
|
|
164
|
+
|
|
165
|
+
<!--
|
|
166
|
+
Source references:
|
|
167
|
+
- https://pnpm.io/aliases
|
|
168
|
+
-->
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pnpm-catalogs
|
|
3
|
+
description: Centralized dependency version management for workspaces
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# pnpm Catalogs
|
|
7
|
+
|
|
8
|
+
Catalogs provide a centralized way to manage dependency versions across a workspace. Define versions once, use everywhere.
|
|
9
|
+
|
|
10
|
+
## Basic Usage
|
|
11
|
+
|
|
12
|
+
Define a catalog in `pnpm-workspace.yaml`:
|
|
13
|
+
|
|
14
|
+
```yaml
|
|
15
|
+
packages:
|
|
16
|
+
- 'packages/*'
|
|
17
|
+
|
|
18
|
+
catalog:
|
|
19
|
+
react: ^18.2.0
|
|
20
|
+
react-dom: ^18.2.0
|
|
21
|
+
typescript: ~5.3.0
|
|
22
|
+
vite: ^5.0.0
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Reference in `package.json` with `catalog:`:
|
|
26
|
+
|
|
27
|
+
```json
|
|
28
|
+
{
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"react": "catalog:",
|
|
31
|
+
"react-dom": "catalog:"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"typescript": "catalog:",
|
|
35
|
+
"vite": "catalog:"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Named Catalogs
|
|
41
|
+
|
|
42
|
+
Create multiple catalogs for different scenarios:
|
|
43
|
+
|
|
44
|
+
```yaml
|
|
45
|
+
packages:
|
|
46
|
+
- 'packages/*'
|
|
47
|
+
|
|
48
|
+
# Default catalog
|
|
49
|
+
catalog:
|
|
50
|
+
lodash: ^4.17.21
|
|
51
|
+
|
|
52
|
+
# Named catalogs
|
|
53
|
+
catalogs:
|
|
54
|
+
react17:
|
|
55
|
+
react: ^17.0.2
|
|
56
|
+
react-dom: ^17.0.2
|
|
57
|
+
|
|
58
|
+
react18:
|
|
59
|
+
react: ^18.2.0
|
|
60
|
+
react-dom: ^18.2.0
|
|
61
|
+
|
|
62
|
+
testing:
|
|
63
|
+
vitest: ^1.0.0
|
|
64
|
+
"@testing-library/react": ^14.0.0
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Reference named catalogs:
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"dependencies": {
|
|
72
|
+
"react": "catalog:react18",
|
|
73
|
+
"react-dom": "catalog:react18"
|
|
74
|
+
},
|
|
75
|
+
"devDependencies": {
|
|
76
|
+
"vitest": "catalog:testing"
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Benefits
|
|
82
|
+
|
|
83
|
+
1. **Single source of truth**: Update version in one place
|
|
84
|
+
2. **Consistency**: All packages use the same version
|
|
85
|
+
3. **Easy upgrades**: Change version once, affects entire workspace
|
|
86
|
+
4. **Type-safe**: TypeScript support in pnpm-workspace.yaml
|
|
87
|
+
|
|
88
|
+
## Catalog vs Overrides
|
|
89
|
+
|
|
90
|
+
| Feature | Catalogs | Overrides |
|
|
91
|
+
|---------|----------|-----------|
|
|
92
|
+
| Purpose | Define versions for direct dependencies | Force versions for any dependency |
|
|
93
|
+
| Scope | Direct dependencies only | All dependencies (including transitive) |
|
|
94
|
+
| Usage | `"pkg": "catalog:"` | Applied automatically |
|
|
95
|
+
| Opt-in | Explicit per package.json | Global to workspace |
|
|
96
|
+
|
|
97
|
+
## Publishing with Catalogs
|
|
98
|
+
|
|
99
|
+
When publishing, `catalog:` references are replaced with actual versions:
|
|
100
|
+
|
|
101
|
+
```json
|
|
102
|
+
// Before publish (source)
|
|
103
|
+
{
|
|
104
|
+
"dependencies": {
|
|
105
|
+
"react": "catalog:"
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// After publish (published package)
|
|
110
|
+
{
|
|
111
|
+
"dependencies": {
|
|
112
|
+
"react": "^18.2.0"
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Migration from Overrides
|
|
118
|
+
|
|
119
|
+
If you're using overrides for version consistency:
|
|
120
|
+
|
|
121
|
+
```yaml
|
|
122
|
+
# Before (using overrides)
|
|
123
|
+
overrides:
|
|
124
|
+
react: ^18.2.0
|
|
125
|
+
react-dom: ^18.2.0
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Migrate to catalogs for cleaner dependency management:
|
|
129
|
+
|
|
130
|
+
```yaml
|
|
131
|
+
# After (using catalogs)
|
|
132
|
+
catalog:
|
|
133
|
+
react: ^18.2.0
|
|
134
|
+
react-dom: ^18.2.0
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Then update package.json files to use `catalog:`.
|
|
138
|
+
|
|
139
|
+
## Best Practices
|
|
140
|
+
|
|
141
|
+
1. **Use default catalog** for commonly shared dependencies
|
|
142
|
+
2. **Use named catalogs** for version variants (e.g., different React versions)
|
|
143
|
+
3. **Keep catalog minimal** - only include shared dependencies
|
|
144
|
+
4. **Combine with workspace protocol** for internal packages
|
|
145
|
+
|
|
146
|
+
```yaml
|
|
147
|
+
catalog:
|
|
148
|
+
# External shared dependencies
|
|
149
|
+
lodash: ^4.17.21
|
|
150
|
+
zod: ^3.22.0
|
|
151
|
+
|
|
152
|
+
# Internal packages use workspace: protocol instead
|
|
153
|
+
# "dependencies": { "@myorg/utils": "workspace:^" }
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
<!--
|
|
157
|
+
Source references:
|
|
158
|
+
- https://pnpm.io/catalogs
|
|
159
|
+
-->
|