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.
Files changed (608) hide show
  1. package/README.md +99 -0
  2. package/dist/cli.js +545 -0
  3. package/dist/meta.js +93 -0
  4. package/package.json +43 -0
  5. package/skill.md +66 -0
  6. package/skills/core/SKILL.md +66 -0
  7. package/skills/core/references/app-development.md +45 -0
  8. package/skills/core/references/git.md +66 -0
  9. package/skills/core/references/monorepo.md +124 -0
  10. package/skills/element-plus-vue3/LICENSE.md +405 -0
  11. package/skills/element-plus-vue3/LICENSE.txt +202 -0
  12. package/skills/element-plus-vue3/SKILL.md +218 -0
  13. package/skills/element-plus-vue3/SYNC.md +5 -0
  14. package/skills/element-plus-vue3/api/component-api.md +94 -0
  15. package/skills/element-plus-vue3/api/global-config.md +89 -0
  16. package/skills/element-plus-vue3/api/props-and-events.md +101 -0
  17. package/skills/element-plus-vue3/examples/components/button.md +99 -0
  18. package/skills/element-plus-vue3/examples/components/date-picker.md +115 -0
  19. package/skills/element-plus-vue3/examples/components/dialog.md +106 -0
  20. package/skills/element-plus-vue3/examples/components/form.md +127 -0
  21. package/skills/element-plus-vue3/examples/components/input.md +123 -0
  22. package/skills/element-plus-vue3/examples/components/message.md +93 -0
  23. package/skills/element-plus-vue3/examples/components/overview.md +59 -0
  24. package/skills/element-plus-vue3/examples/components/select.md +133 -0
  25. package/skills/element-plus-vue3/examples/components/table.md +166 -0
  26. package/skills/element-plus-vue3/examples/guide/design.md +68 -0
  27. package/skills/element-plus-vue3/examples/guide/global-config.md +95 -0
  28. package/skills/element-plus-vue3/examples/guide/i18n.md +95 -0
  29. package/skills/element-plus-vue3/examples/guide/installation.md +110 -0
  30. package/skills/element-plus-vue3/examples/guide/quick-start.md +103 -0
  31. package/skills/element-plus-vue3/examples/guide/theme.md +78 -0
  32. package/skills/element-plus-vue3/templates/component-usage.md +92 -0
  33. package/skills/element-plus-vue3/templates/installation.md +82 -0
  34. package/skills/element-plus-vue3/templates/project-setup.md +83 -0
  35. package/skills/node/LICENSE.md +21 -0
  36. package/skills/node/SKILL.md +94 -0
  37. package/skills/node/SYNC.md +5 -0
  38. package/skills/node/rules/assets/graceful-server.test.ts +88 -0
  39. package/skills/node/rules/assets/graceful-server.ts +80 -0
  40. package/skills/node/rules/async-patterns.md +136 -0
  41. package/skills/node/rules/caching.md +198 -0
  42. package/skills/node/rules/environment.md +253 -0
  43. package/skills/node/rules/error-handling.md +164 -0
  44. package/skills/node/rules/flaky-tests.md +439 -0
  45. package/skills/node/rules/graceful-shutdown.md +204 -0
  46. package/skills/node/rules/logging.md +205 -0
  47. package/skills/node/rules/modules.md +105 -0
  48. package/skills/node/rules/node-modules-exploration.md +172 -0
  49. package/skills/node/rules/performance.md +130 -0
  50. package/skills/node/rules/profiling.md +183 -0
  51. package/skills/node/rules/streams.md +213 -0
  52. package/skills/node/rules/stuck-processes-and-tests.md +124 -0
  53. package/skills/node/rules/testing.md +218 -0
  54. package/skills/node/rules/typescript.md +262 -0
  55. package/skills/node/tile.json +11 -0
  56. package/skills/nuxt/GENERATION.md +5 -0
  57. package/skills/nuxt/LICENSE.md +21 -0
  58. package/skills/nuxt/SKILL.md +55 -0
  59. package/skills/nuxt/SYNC.md +5 -0
  60. package/skills/nuxt/references/advanced-hooks.md +289 -0
  61. package/skills/nuxt/references/advanced-layers.md +299 -0
  62. package/skills/nuxt/references/advanced-module-authoring.md +554 -0
  63. package/skills/nuxt/references/best-practices-data-fetching.md +357 -0
  64. package/skills/nuxt/references/best-practices-ssr.md +355 -0
  65. package/skills/nuxt/references/core-cli.md +263 -0
  66. package/skills/nuxt/references/core-config.md +162 -0
  67. package/skills/nuxt/references/core-data-fetching.md +236 -0
  68. package/skills/nuxt/references/core-deployment.md +224 -0
  69. package/skills/nuxt/references/core-directory-structure.md +269 -0
  70. package/skills/nuxt/references/core-modules.md +292 -0
  71. package/skills/nuxt/references/core-routing.md +226 -0
  72. package/skills/nuxt/references/features-components-autoimport.md +328 -0
  73. package/skills/nuxt/references/features-components.md +264 -0
  74. package/skills/nuxt/references/features-composables.md +276 -0
  75. package/skills/nuxt/references/features-server.md +265 -0
  76. package/skills/nuxt/references/features-state.md +194 -0
  77. package/skills/nuxt/references/rendering-modes.md +237 -0
  78. package/skills/pinia/GENERATION.md +5 -0
  79. package/skills/pinia/LICENSE.md +21 -0
  80. package/skills/pinia/SKILL.md +59 -0
  81. package/skills/pinia/SYNC.md +5 -0
  82. package/skills/pinia/references/advanced-hmr.md +61 -0
  83. package/skills/pinia/references/advanced-nuxt.md +119 -0
  84. package/skills/pinia/references/advanced-ssr.md +121 -0
  85. package/skills/pinia/references/best-practices-outside-component.md +115 -0
  86. package/skills/pinia/references/best-practices-testing.md +212 -0
  87. package/skills/pinia/references/core-stores.md +389 -0
  88. package/skills/pinia/references/features-composables.md +114 -0
  89. package/skills/pinia/references/features-composing-stores.md +134 -0
  90. package/skills/pinia/references/features-plugins.md +203 -0
  91. package/skills/pnpm/GENERATION.md +5 -0
  92. package/skills/pnpm/LICENSE.md +21 -0
  93. package/skills/pnpm/SKILL.md +42 -0
  94. package/skills/pnpm/SYNC.md +5 -0
  95. package/skills/pnpm/references/best-practices-ci.md +285 -0
  96. package/skills/pnpm/references/best-practices-migration.md +291 -0
  97. package/skills/pnpm/references/best-practices-performance.md +284 -0
  98. package/skills/pnpm/references/core-cli.md +229 -0
  99. package/skills/pnpm/references/core-config.md +188 -0
  100. package/skills/pnpm/references/core-store.md +179 -0
  101. package/skills/pnpm/references/core-workspaces.md +205 -0
  102. package/skills/pnpm/references/features-aliases.md +168 -0
  103. package/skills/pnpm/references/features-catalogs.md +159 -0
  104. package/skills/pnpm/references/features-hooks.md +233 -0
  105. package/skills/pnpm/references/features-overrides.md +184 -0
  106. package/skills/pnpm/references/features-patches.md +201 -0
  107. package/skills/pnpm/references/features-peer-deps.md +250 -0
  108. package/skills/slidev/LICENSE.md +21 -0
  109. package/skills/slidev/README.md +61 -0
  110. package/skills/slidev/SKILL.md +189 -0
  111. package/skills/slidev/SYNC.md +5 -0
  112. package/skills/slidev/references/animation-click-marker.md +37 -0
  113. package/skills/slidev/references/animation-drawing.md +68 -0
  114. package/skills/slidev/references/animation-rough-marker.md +53 -0
  115. package/skills/slidev/references/api-slide-hooks.md +37 -0
  116. package/skills/slidev/references/build-og-image.md +36 -0
  117. package/skills/slidev/references/build-pdf.md +40 -0
  118. package/skills/slidev/references/build-remote-assets.md +34 -0
  119. package/skills/slidev/references/build-seo-meta.md +43 -0
  120. package/skills/slidev/references/code-groups.md +64 -0
  121. package/skills/slidev/references/code-import-snippet.md +55 -0
  122. package/skills/slidev/references/code-line-highlighting.md +50 -0
  123. package/skills/slidev/references/code-line-numbers.md +46 -0
  124. package/skills/slidev/references/code-magic-move.md +57 -0
  125. package/skills/slidev/references/code-max-height.md +37 -0
  126. package/skills/slidev/references/code-twoslash.md +42 -0
  127. package/skills/slidev/references/core-animations.md +196 -0
  128. package/skills/slidev/references/core-cli.md +140 -0
  129. package/skills/slidev/references/core-components.md +197 -0
  130. package/skills/slidev/references/core-exporting.md +148 -0
  131. package/skills/slidev/references/core-frontmatter.md +195 -0
  132. package/skills/slidev/references/core-global-context.md +155 -0
  133. package/skills/slidev/references/core-headmatter.md +188 -0
  134. package/skills/slidev/references/core-hosting.md +152 -0
  135. package/skills/slidev/references/core-layouts.md +286 -0
  136. package/skills/slidev/references/core-syntax.md +155 -0
  137. package/skills/slidev/references/diagram-latex.md +55 -0
  138. package/skills/slidev/references/diagram-mermaid.md +44 -0
  139. package/skills/slidev/references/diagram-plantuml.md +45 -0
  140. package/skills/slidev/references/editor-monaco-run.md +44 -0
  141. package/skills/slidev/references/editor-monaco-write.md +24 -0
  142. package/skills/slidev/references/editor-monaco.md +50 -0
  143. package/skills/slidev/references/editor-prettier.md +40 -0
  144. package/skills/slidev/references/editor-side.md +23 -0
  145. package/skills/slidev/references/editor-vscode.md +55 -0
  146. package/skills/slidev/references/layout-canvas-size.md +25 -0
  147. package/skills/slidev/references/layout-draggable.md +57 -0
  148. package/skills/slidev/references/layout-global-layers.md +50 -0
  149. package/skills/slidev/references/layout-slots.md +75 -0
  150. package/skills/slidev/references/layout-transform.md +33 -0
  151. package/skills/slidev/references/layout-zoom.md +39 -0
  152. package/skills/slidev/references/presenter-notes-ruby.md +35 -0
  153. package/skills/slidev/references/presenter-recording.md +30 -0
  154. package/skills/slidev/references/presenter-remote.md +40 -0
  155. package/skills/slidev/references/presenter-timer.md +34 -0
  156. package/skills/slidev/references/style-direction.md +34 -0
  157. package/skills/slidev/references/style-icons.md +46 -0
  158. package/skills/slidev/references/style-scoped.md +50 -0
  159. package/skills/slidev/references/syntax-block-frontmatter.md +39 -0
  160. package/skills/slidev/references/syntax-comark.md +51 -0
  161. package/skills/slidev/references/syntax-frontmatter-merging.md +49 -0
  162. package/skills/slidev/references/syntax-importing-slides.md +60 -0
  163. package/skills/slidev/references/tool-eject-theme.md +27 -0
  164. package/skills/tsdown/LICENSE.md +22 -0
  165. package/skills/tsdown/README.md +77 -0
  166. package/skills/tsdown/SKILL.md +416 -0
  167. package/skills/tsdown/SYNC.md +5 -0
  168. package/skills/tsdown/references/README.md +139 -0
  169. package/skills/tsdown/references/advanced-benchmark.md +8 -0
  170. package/skills/tsdown/references/advanced-ci.md +89 -0
  171. package/skills/tsdown/references/advanced-hooks.md +363 -0
  172. package/skills/tsdown/references/advanced-plugins.md +381 -0
  173. package/skills/tsdown/references/advanced-programmatic.md +378 -0
  174. package/skills/tsdown/references/advanced-rolldown-options.md +117 -0
  175. package/skills/tsdown/references/guide-getting-started.md +183 -0
  176. package/skills/tsdown/references/guide-introduction.md +42 -0
  177. package/skills/tsdown/references/guide-migrate-from-tsup.md +199 -0
  178. package/skills/tsdown/references/option-cjs-default.md +98 -0
  179. package/skills/tsdown/references/option-cleaning.md +275 -0
  180. package/skills/tsdown/references/option-config-file.md +291 -0
  181. package/skills/tsdown/references/option-css.md +301 -0
  182. package/skills/tsdown/references/option-dependencies.md +385 -0
  183. package/skills/tsdown/references/option-dts.md +251 -0
  184. package/skills/tsdown/references/option-entry.md +211 -0
  185. package/skills/tsdown/references/option-exe.md +120 -0
  186. package/skills/tsdown/references/option-lint.md +127 -0
  187. package/skills/tsdown/references/option-log-level.md +91 -0
  188. package/skills/tsdown/references/option-minification.md +177 -0
  189. package/skills/tsdown/references/option-output-directory.md +272 -0
  190. package/skills/tsdown/references/option-output-format.md +183 -0
  191. package/skills/tsdown/references/option-package-exports.md +320 -0
  192. package/skills/tsdown/references/option-platform.md +256 -0
  193. package/skills/tsdown/references/option-root.md +88 -0
  194. package/skills/tsdown/references/option-shims.md +299 -0
  195. package/skills/tsdown/references/option-sourcemap.md +301 -0
  196. package/skills/tsdown/references/option-target.md +222 -0
  197. package/skills/tsdown/references/option-tree-shaking.md +335 -0
  198. package/skills/tsdown/references/option-unbundle.md +310 -0
  199. package/skills/tsdown/references/option-watch-mode.md +261 -0
  200. package/skills/tsdown/references/recipe-react.md +338 -0
  201. package/skills/tsdown/references/recipe-solid.md +42 -0
  202. package/skills/tsdown/references/recipe-svelte.md +54 -0
  203. package/skills/tsdown/references/recipe-vue.md +387 -0
  204. package/skills/tsdown/references/recipe-wasm.md +125 -0
  205. package/skills/tsdown/references/reference-cli.md +472 -0
  206. package/skills/turborepo/LICENSE.md +7 -0
  207. package/skills/turborepo/SKILL.md +951 -0
  208. package/skills/turborepo/SYNC.md +5 -0
  209. package/skills/turborepo/command/turborepo.md +70 -0
  210. package/skills/turborepo/references/best-practices/RULE.md +241 -0
  211. package/skills/turborepo/references/best-practices/dependencies.md +246 -0
  212. package/skills/turborepo/references/best-practices/packages.md +335 -0
  213. package/skills/turborepo/references/best-practices/structure.md +297 -0
  214. package/skills/turborepo/references/boundaries/RULE.md +126 -0
  215. package/skills/turborepo/references/caching/RULE.md +153 -0
  216. package/skills/turborepo/references/caching/gotchas.md +190 -0
  217. package/skills/turborepo/references/caching/remote-cache.md +127 -0
  218. package/skills/turborepo/references/ci/RULE.md +79 -0
  219. package/skills/turborepo/references/ci/github-actions.md +162 -0
  220. package/skills/turborepo/references/ci/patterns.md +145 -0
  221. package/skills/turborepo/references/ci/vercel.md +103 -0
  222. package/skills/turborepo/references/cli/RULE.md +100 -0
  223. package/skills/turborepo/references/cli/commands.md +297 -0
  224. package/skills/turborepo/references/configuration/RULE.md +235 -0
  225. package/skills/turborepo/references/configuration/global-options.md +239 -0
  226. package/skills/turborepo/references/configuration/gotchas.md +368 -0
  227. package/skills/turborepo/references/configuration/tasks.md +325 -0
  228. package/skills/turborepo/references/environment/RULE.md +123 -0
  229. package/skills/turborepo/references/environment/gotchas.md +175 -0
  230. package/skills/turborepo/references/environment/modes.md +101 -0
  231. package/skills/turborepo/references/filtering/RULE.md +148 -0
  232. package/skills/turborepo/references/filtering/patterns.md +152 -0
  233. package/skills/turborepo/references/watch/RULE.md +99 -0
  234. package/skills/vite/GENERATION.md +5 -0
  235. package/skills/vite/LICENSE.md +21 -0
  236. package/skills/vite/SKILL.md +72 -0
  237. package/skills/vite/SYNC.md +5 -0
  238. package/skills/vite/references/build-and-ssr.md +164 -0
  239. package/skills/vite/references/core-config.md +162 -0
  240. package/skills/vite/references/core-features.md +205 -0
  241. package/skills/vite/references/core-plugin-api.md +235 -0
  242. package/skills/vite/references/environment-api.md +108 -0
  243. package/skills/vite/references/rolldown-migration.md +157 -0
  244. package/skills/vitepress/GENERATION.md +5 -0
  245. package/skills/vitepress/LICENSE.md +21 -0
  246. package/skills/vitepress/SKILL.md +65 -0
  247. package/skills/vitepress/SYNC.md +5 -0
  248. package/skills/vitepress/references/advanced-i18n.md +299 -0
  249. package/skills/vitepress/references/advanced-ssr.md +228 -0
  250. package/skills/vitepress/references/core-cli.md +119 -0
  251. package/skills/vitepress/references/core-config.md +189 -0
  252. package/skills/vitepress/references/core-markdown.md +277 -0
  253. package/skills/vitepress/references/core-routing.md +169 -0
  254. package/skills/vitepress/references/features-code-blocks.md +243 -0
  255. package/skills/vitepress/references/features-data-loading.md +220 -0
  256. package/skills/vitepress/references/features-dynamic-routes.md +235 -0
  257. package/skills/vitepress/references/features-vue.md +224 -0
  258. package/skills/vitepress/references/recipes-deploy.md +240 -0
  259. package/skills/vitepress/references/theme-config.md +315 -0
  260. package/skills/vitepress/references/theme-custom.md +269 -0
  261. package/skills/vitepress/references/theme-customization.md +290 -0
  262. package/skills/vitest/GENERATION.md +5 -0
  263. package/skills/vitest/LICENSE.md +21 -0
  264. package/skills/vitest/SKILL.md +52 -0
  265. package/skills/vitest/SYNC.md +5 -0
  266. package/skills/vitest/references/advanced-environments.md +264 -0
  267. package/skills/vitest/references/advanced-projects.md +300 -0
  268. package/skills/vitest/references/advanced-type-testing.md +237 -0
  269. package/skills/vitest/references/advanced-vi.md +249 -0
  270. package/skills/vitest/references/core-cli.md +166 -0
  271. package/skills/vitest/references/core-config.md +174 -0
  272. package/skills/vitest/references/core-describe.md +193 -0
  273. package/skills/vitest/references/core-expect.md +219 -0
  274. package/skills/vitest/references/core-hooks.md +244 -0
  275. package/skills/vitest/references/core-test-api.md +233 -0
  276. package/skills/vitest/references/features-concurrency.md +250 -0
  277. package/skills/vitest/references/features-context.md +238 -0
  278. package/skills/vitest/references/features-coverage.md +207 -0
  279. package/skills/vitest/references/features-filtering.md +211 -0
  280. package/skills/vitest/references/features-mocking.md +265 -0
  281. package/skills/vitest/references/features-snapshots.md +207 -0
  282. package/skills/vue/GENERATION.md +5 -0
  283. package/skills/vue/LICENSE.md +21 -0
  284. package/skills/vue/SKILL.md +84 -0
  285. package/skills/vue/SYNC.md +5 -0
  286. package/skills/vue/references/advanced-patterns.md +314 -0
  287. package/skills/vue/references/core-new-apis.md +264 -0
  288. package/skills/vue/references/script-setup-macros.md +204 -0
  289. package/skills/vue-best-practices/LICENSE.md +21 -0
  290. package/skills/vue-best-practices/SKILL.md +154 -0
  291. package/skills/vue-best-practices/SYNC.md +5 -0
  292. package/skills/vue-best-practices/references/animation-class-based-technique.md +254 -0
  293. package/skills/vue-best-practices/references/animation-state-driven-technique.md +291 -0
  294. package/skills/vue-best-practices/references/component-async.md +97 -0
  295. package/skills/vue-best-practices/references/component-data-flow.md +307 -0
  296. package/skills/vue-best-practices/references/component-fallthrough-attrs.md +174 -0
  297. package/skills/vue-best-practices/references/component-keep-alive.md +137 -0
  298. package/skills/vue-best-practices/references/component-slots.md +216 -0
  299. package/skills/vue-best-practices/references/component-suspense.md +228 -0
  300. package/skills/vue-best-practices/references/component-teleport.md +108 -0
  301. package/skills/vue-best-practices/references/component-transition-group.md +128 -0
  302. package/skills/vue-best-practices/references/component-transition.md +125 -0
  303. package/skills/vue-best-practices/references/composables.md +290 -0
  304. package/skills/vue-best-practices/references/directives.md +162 -0
  305. package/skills/vue-best-practices/references/perf-avoid-component-abstraction-in-lists.md +159 -0
  306. package/skills/vue-best-practices/references/perf-v-once-v-memo-directives.md +182 -0
  307. package/skills/vue-best-practices/references/perf-virtualize-large-lists.md +187 -0
  308. package/skills/vue-best-practices/references/plugins.md +166 -0
  309. package/skills/vue-best-practices/references/reactivity.md +344 -0
  310. package/skills/vue-best-practices/references/render-functions.md +201 -0
  311. package/skills/vue-best-practices/references/sfc.md +310 -0
  312. package/skills/vue-best-practices/references/state-management.md +135 -0
  313. package/skills/vue-best-practices/references/updated-hook-performance.md +187 -0
  314. package/skills/vue-router-best-practices/LICENSE.md +21 -0
  315. package/skills/vue-router-best-practices/SKILL.md +23 -0
  316. package/skills/vue-router-best-practices/SYNC.md +5 -0
  317. package/skills/vue-router-best-practices/reference/router-beforeenter-no-param-trigger.md +167 -0
  318. package/skills/vue-router-best-practices/reference/router-beforerouteenter-no-this.md +176 -0
  319. package/skills/vue-router-best-practices/reference/router-guard-async-await-pattern.md +227 -0
  320. package/skills/vue-router-best-practices/reference/router-navigation-guard-infinite-loop.md +187 -0
  321. package/skills/vue-router-best-practices/reference/router-navigation-guard-next-deprecated.md +150 -0
  322. package/skills/vue-router-best-practices/reference/router-param-change-no-lifecycle.md +181 -0
  323. package/skills/vue-router-best-practices/reference/router-simple-routing-cleanup.md +209 -0
  324. package/skills/vue-router-best-practices/reference/router-use-vue-router-for-production.md +183 -0
  325. package/skills/vue-testing-best-practices/LICENSE.md +21 -0
  326. package/skills/vue-testing-best-practices/SKILL.md +29 -0
  327. package/skills/vue-testing-best-practices/SYNC.md +5 -0
  328. package/skills/vue-testing-best-practices/reference/async-component-testing.md +163 -0
  329. package/skills/vue-testing-best-practices/reference/teleport-testing-complexity.md +158 -0
  330. package/skills/vue-testing-best-practices/reference/testing-async-await-flushpromises.md +175 -0
  331. package/skills/vue-testing-best-practices/reference/testing-browser-vs-node-runners.md +208 -0
  332. package/skills/vue-testing-best-practices/reference/testing-component-blackbox-approach.md +144 -0
  333. package/skills/vue-testing-best-practices/reference/testing-composables-helper-wrapper.md +238 -0
  334. package/skills/vue-testing-best-practices/reference/testing-e2e-playwright-recommended.md +242 -0
  335. package/skills/vue-testing-best-practices/reference/testing-no-snapshot-only.md +197 -0
  336. package/skills/vue-testing-best-practices/reference/testing-pinia-store-setup.md +228 -0
  337. package/skills/vue-testing-best-practices/reference/testing-suspense-async-components.md +229 -0
  338. package/skills/vue-testing-best-practices/reference/testing-vitest-recommended-for-vue.md +204 -0
  339. package/skills/vueuse-functions/LICENSE.md +21 -0
  340. package/skills/vueuse-functions/SKILL.md +419 -0
  341. package/skills/vueuse-functions/SYNC.md +5 -0
  342. package/skills/vueuse-functions/references/computedAsync.md +195 -0
  343. package/skills/vueuse-functions/references/computedEager.md +62 -0
  344. package/skills/vueuse-functions/references/computedInject.md +137 -0
  345. package/skills/vueuse-functions/references/computedWithControl.md +98 -0
  346. package/skills/vueuse-functions/references/createEventHook.md +86 -0
  347. package/skills/vueuse-functions/references/createGenericProjection.md +25 -0
  348. package/skills/vueuse-functions/references/createGlobalState.md +95 -0
  349. package/skills/vueuse-functions/references/createInjectionState.md +226 -0
  350. package/skills/vueuse-functions/references/createProjection.md +31 -0
  351. package/skills/vueuse-functions/references/createRef.md +54 -0
  352. package/skills/vueuse-functions/references/createReusableTemplate.md +361 -0
  353. package/skills/vueuse-functions/references/createSharedComposable.md +42 -0
  354. package/skills/vueuse-functions/references/createTemplatePromise.md +306 -0
  355. package/skills/vueuse-functions/references/createUnrefFn.md +51 -0
  356. package/skills/vueuse-functions/references/extendRef.md +76 -0
  357. package/skills/vueuse-functions/references/from.md +80 -0
  358. package/skills/vueuse-functions/references/get.md +30 -0
  359. package/skills/vueuse-functions/references/injectLocal.md +35 -0
  360. package/skills/vueuse-functions/references/isDefined.md +31 -0
  361. package/skills/vueuse-functions/references/logicAnd.md +40 -0
  362. package/skills/vueuse-functions/references/logicNot.md +36 -0
  363. package/skills/vueuse-functions/references/logicOr.md +40 -0
  364. package/skills/vueuse-functions/references/makeDestructurable.md +41 -0
  365. package/skills/vueuse-functions/references/onClickOutside.md +228 -0
  366. package/skills/vueuse-functions/references/onElementRemoval.md +88 -0
  367. package/skills/vueuse-functions/references/onKeyStroke.md +212 -0
  368. package/skills/vueuse-functions/references/onLongPress.md +235 -0
  369. package/skills/vueuse-functions/references/onStartTyping.md +53 -0
  370. package/skills/vueuse-functions/references/provideLocal.md +37 -0
  371. package/skills/vueuse-functions/references/reactify.md +144 -0
  372. package/skills/vueuse-functions/references/reactifyObject.md +62 -0
  373. package/skills/vueuse-functions/references/reactiveComputed.md +34 -0
  374. package/skills/vueuse-functions/references/reactiveOmit.md +86 -0
  375. package/skills/vueuse-functions/references/reactivePick.md +106 -0
  376. package/skills/vueuse-functions/references/refAutoReset.md +46 -0
  377. package/skills/vueuse-functions/references/refDebounced.md +81 -0
  378. package/skills/vueuse-functions/references/refDefault.md +36 -0
  379. package/skills/vueuse-functions/references/refManualReset.md +48 -0
  380. package/skills/vueuse-functions/references/refThrottled.md +99 -0
  381. package/skills/vueuse-functions/references/refWithControl.md +146 -0
  382. package/skills/vueuse-functions/references/set.md +30 -0
  383. package/skills/vueuse-functions/references/syncRef.md +195 -0
  384. package/skills/vueuse-functions/references/syncRefs.md +128 -0
  385. package/skills/vueuse-functions/references/templateRef.md +86 -0
  386. package/skills/vueuse-functions/references/toObserver.md +38 -0
  387. package/skills/vueuse-functions/references/toReactive.md +41 -0
  388. package/skills/vueuse-functions/references/toRef.md +74 -0
  389. package/skills/vueuse-functions/references/toRefs.md +78 -0
  390. package/skills/vueuse-functions/references/tryOnBeforeMount.md +34 -0
  391. package/skills/vueuse-functions/references/tryOnBeforeUnmount.md +32 -0
  392. package/skills/vueuse-functions/references/tryOnMounted.md +34 -0
  393. package/skills/vueuse-functions/references/tryOnScopeDispose.md +31 -0
  394. package/skills/vueuse-functions/references/tryOnUnmounted.md +32 -0
  395. package/skills/vueuse-functions/references/unrefElement.md +54 -0
  396. package/skills/vueuse-functions/references/until.md +161 -0
  397. package/skills/vueuse-functions/references/useAbs.md +31 -0
  398. package/skills/vueuse-functions/references/useActiveElement.md +86 -0
  399. package/skills/vueuse-functions/references/useAnimate.md +180 -0
  400. package/skills/vueuse-functions/references/useArrayDifference.md +84 -0
  401. package/skills/vueuse-functions/references/useArrayEvery.md +59 -0
  402. package/skills/vueuse-functions/references/useArrayFilter.md +63 -0
  403. package/skills/vueuse-functions/references/useArrayFind.md +50 -0
  404. package/skills/vueuse-functions/references/useArrayFindIndex.md +59 -0
  405. package/skills/vueuse-functions/references/useArrayFindLast.md +52 -0
  406. package/skills/vueuse-functions/references/useArrayIncludes.md +63 -0
  407. package/skills/vueuse-functions/references/useArrayJoin.md +74 -0
  408. package/skills/vueuse-functions/references/useArrayMap.md +59 -0
  409. package/skills/vueuse-functions/references/useArrayReduce.md +81 -0
  410. package/skills/vueuse-functions/references/useArraySome.md +59 -0
  411. package/skills/vueuse-functions/references/useArrayUnique.md +76 -0
  412. package/skills/vueuse-functions/references/useAsyncQueue.md +136 -0
  413. package/skills/vueuse-functions/references/useAsyncState.md +185 -0
  414. package/skills/vueuse-functions/references/useAsyncValidator.md +70 -0
  415. package/skills/vueuse-functions/references/useAuth.md +123 -0
  416. package/skills/vueuse-functions/references/useAverage.md +36 -0
  417. package/skills/vueuse-functions/references/useAxios.md +325 -0
  418. package/skills/vueuse-functions/references/useBase64.md +136 -0
  419. package/skills/vueuse-functions/references/useBattery.md +80 -0
  420. package/skills/vueuse-functions/references/useBluetooth.md +174 -0
  421. package/skills/vueuse-functions/references/useBreakpoints.md +176 -0
  422. package/skills/vueuse-functions/references/useBroadcastChannel.md +73 -0
  423. package/skills/vueuse-functions/references/useBrowserLocation.md +56 -0
  424. package/skills/vueuse-functions/references/useCached.md +52 -0
  425. package/skills/vueuse-functions/references/useCeil.md +31 -0
  426. package/skills/vueuse-functions/references/useChangeCase.md +79 -0
  427. package/skills/vueuse-functions/references/useClamp.md +85 -0
  428. package/skills/vueuse-functions/references/useClipboard.md +122 -0
  429. package/skills/vueuse-functions/references/useClipboardItems.md +93 -0
  430. package/skills/vueuse-functions/references/useCloned.md +91 -0
  431. package/skills/vueuse-functions/references/useColorMode.md +172 -0
  432. package/skills/vueuse-functions/references/useConfirmDialog.md +159 -0
  433. package/skills/vueuse-functions/references/useCookies.md +162 -0
  434. package/skills/vueuse-functions/references/useCountdown.md +105 -0
  435. package/skills/vueuse-functions/references/useCounter.md +86 -0
  436. package/skills/vueuse-functions/references/useCssSupports.md +33 -0
  437. package/skills/vueuse-functions/references/useCssVar.md +50 -0
  438. package/skills/vueuse-functions/references/useCurrentElement.md +61 -0
  439. package/skills/vueuse-functions/references/useCycleList.md +75 -0
  440. package/skills/vueuse-functions/references/useDark.md +142 -0
  441. package/skills/vueuse-functions/references/useDateFormat.md +145 -0
  442. package/skills/vueuse-functions/references/useDebounceFn.md +100 -0
  443. package/skills/vueuse-functions/references/useDebouncedRefHistory.md +40 -0
  444. package/skills/vueuse-functions/references/useDeviceMotion.md +80 -0
  445. package/skills/vueuse-functions/references/useDeviceOrientation.md +64 -0
  446. package/skills/vueuse-functions/references/useDevicePixelRatio.md +47 -0
  447. package/skills/vueuse-functions/references/useDevicesList.md +89 -0
  448. package/skills/vueuse-functions/references/useDisplayMedia.md +67 -0
  449. package/skills/vueuse-functions/references/useDocumentVisibility.md +44 -0
  450. package/skills/vueuse-functions/references/useDraggable.md +289 -0
  451. package/skills/vueuse-functions/references/useDrauu.md +65 -0
  452. package/skills/vueuse-functions/references/useDropZone.md +83 -0
  453. package/skills/vueuse-functions/references/useElementBounding.md +131 -0
  454. package/skills/vueuse-functions/references/useElementByPoint.md +46 -0
  455. package/skills/vueuse-functions/references/useElementHover.md +79 -0
  456. package/skills/vueuse-functions/references/useElementSize.md +79 -0
  457. package/skills/vueuse-functions/references/useElementVisibility.md +163 -0
  458. package/skills/vueuse-functions/references/useEventBus.md +101 -0
  459. package/skills/vueuse-functions/references/useEventListener.md +226 -0
  460. package/skills/vueuse-functions/references/useEventSource.md +204 -0
  461. package/skills/vueuse-functions/references/useExtractedObservable.md +198 -0
  462. package/skills/vueuse-functions/references/useEyeDropper.md +72 -0
  463. package/skills/vueuse-functions/references/useFavicon.md +69 -0
  464. package/skills/vueuse-functions/references/useFetch.md +546 -0
  465. package/skills/vueuse-functions/references/useFileDialog.md +91 -0
  466. package/skills/vueuse-functions/references/useFileSystemAccess.md +161 -0
  467. package/skills/vueuse-functions/references/useFirestore.md +129 -0
  468. package/skills/vueuse-functions/references/useFloor.md +31 -0
  469. package/skills/vueuse-functions/references/useFocus.md +99 -0
  470. package/skills/vueuse-functions/references/useFocusTrap.md +245 -0
  471. package/skills/vueuse-functions/references/useFocusWithin.md +57 -0
  472. package/skills/vueuse-functions/references/useFps.md +28 -0
  473. package/skills/vueuse-functions/references/useFullscreen.md +74 -0
  474. package/skills/vueuse-functions/references/useFuse.md +75 -0
  475. package/skills/vueuse-functions/references/useGamepad.md +176 -0
  476. package/skills/vueuse-functions/references/useGeolocation.md +63 -0
  477. package/skills/vueuse-functions/references/useIDBKeyval.md +93 -0
  478. package/skills/vueuse-functions/references/useIdle.md +88 -0
  479. package/skills/vueuse-functions/references/useImage.md +90 -0
  480. package/skills/vueuse-functions/references/useInfiniteScroll.md +156 -0
  481. package/skills/vueuse-functions/references/useIntersectionObserver.md +117 -0
  482. package/skills/vueuse-functions/references/useInterval.md +112 -0
  483. package/skills/vueuse-functions/references/useIntervalFn.md +50 -0
  484. package/skills/vueuse-functions/references/useIpcRenderer.md +144 -0
  485. package/skills/vueuse-functions/references/useIpcRendererInvoke.md +58 -0
  486. package/skills/vueuse-functions/references/useIpcRendererOn.md +52 -0
  487. package/skills/vueuse-functions/references/useJwt.md +57 -0
  488. package/skills/vueuse-functions/references/useKeyModifier.md +87 -0
  489. package/skills/vueuse-functions/references/useLastChanged.md +63 -0
  490. package/skills/vueuse-functions/references/useLocalStorage.md +41 -0
  491. package/skills/vueuse-functions/references/useMagicKeys.md +245 -0
  492. package/skills/vueuse-functions/references/useManualRefHistory.md +204 -0
  493. package/skills/vueuse-functions/references/useMath.md +47 -0
  494. package/skills/vueuse-functions/references/useMax.md +36 -0
  495. package/skills/vueuse-functions/references/useMediaControls.md +201 -0
  496. package/skills/vueuse-functions/references/useMediaQuery.md +53 -0
  497. package/skills/vueuse-functions/references/useMemoize.md +175 -0
  498. package/skills/vueuse-functions/references/useMemory.md +70 -0
  499. package/skills/vueuse-functions/references/useMin.md +36 -0
  500. package/skills/vueuse-functions/references/useMounted.md +38 -0
  501. package/skills/vueuse-functions/references/useMouse.md +113 -0
  502. package/skills/vueuse-functions/references/useMouseInElement.md +132 -0
  503. package/skills/vueuse-functions/references/useMousePressed.md +116 -0
  504. package/skills/vueuse-functions/references/useMutationObserver.md +60 -0
  505. package/skills/vueuse-functions/references/useNProgress.md +78 -0
  506. package/skills/vueuse-functions/references/useNavigatorLanguage.md +57 -0
  507. package/skills/vueuse-functions/references/useNetwork.md +106 -0
  508. package/skills/vueuse-functions/references/useNow.md +83 -0
  509. package/skills/vueuse-functions/references/useObjectUrl.md +55 -0
  510. package/skills/vueuse-functions/references/useObservable.md +91 -0
  511. package/skills/vueuse-functions/references/useOffsetPagination.md +199 -0
  512. package/skills/vueuse-functions/references/useOnline.md +41 -0
  513. package/skills/vueuse-functions/references/usePageLeave.md +43 -0
  514. package/skills/vueuse-functions/references/useParallax.md +58 -0
  515. package/skills/vueuse-functions/references/useParentElement.md +54 -0
  516. package/skills/vueuse-functions/references/usePerformanceObserver.md +48 -0
  517. package/skills/vueuse-functions/references/usePermission.md +78 -0
  518. package/skills/vueuse-functions/references/usePointer.md +91 -0
  519. package/skills/vueuse-functions/references/usePointerLock.md +59 -0
  520. package/skills/vueuse-functions/references/usePointerSwipe.md +80 -0
  521. package/skills/vueuse-functions/references/usePrecision.md +49 -0
  522. package/skills/vueuse-functions/references/usePreferredColorScheme.md +42 -0
  523. package/skills/vueuse-functions/references/usePreferredContrast.md +42 -0
  524. package/skills/vueuse-functions/references/usePreferredDark.md +41 -0
  525. package/skills/vueuse-functions/references/usePreferredLanguages.md +41 -0
  526. package/skills/vueuse-functions/references/usePreferredReducedMotion.md +42 -0
  527. package/skills/vueuse-functions/references/usePreferredReducedTransparency.md +42 -0
  528. package/skills/vueuse-functions/references/usePrevious.md +40 -0
  529. package/skills/vueuse-functions/references/useProjection.md +38 -0
  530. package/skills/vueuse-functions/references/useQRCode.md +53 -0
  531. package/skills/vueuse-functions/references/useRTDB.md +83 -0
  532. package/skills/vueuse-functions/references/useRafFn.md +68 -0
  533. package/skills/vueuse-functions/references/useRefHistory.md +285 -0
  534. package/skills/vueuse-functions/references/useResizeObserver.md +108 -0
  535. package/skills/vueuse-functions/references/useRound.md +31 -0
  536. package/skills/vueuse-functions/references/useRouteHash.md +27 -0
  537. package/skills/vueuse-functions/references/useRouteParams.md +38 -0
  538. package/skills/vueuse-functions/references/useRouteQuery.md +79 -0
  539. package/skills/vueuse-functions/references/useSSRWidth.md +47 -0
  540. package/skills/vueuse-functions/references/useScreenOrientation.md +98 -0
  541. package/skills/vueuse-functions/references/useScreenSafeArea.md +60 -0
  542. package/skills/vueuse-functions/references/useScriptTag.md +116 -0
  543. package/skills/vueuse-functions/references/useScroll.md +238 -0
  544. package/skills/vueuse-functions/references/useScrollLock.md +66 -0
  545. package/skills/vueuse-functions/references/useSessionStorage.md +41 -0
  546. package/skills/vueuse-functions/references/useShare.md +67 -0
  547. package/skills/vueuse-functions/references/useSortable.md +276 -0
  548. package/skills/vueuse-functions/references/useSorted.md +90 -0
  549. package/skills/vueuse-functions/references/useSpeechRecognition.md +90 -0
  550. package/skills/vueuse-functions/references/useSpeechSynthesis.md +101 -0
  551. package/skills/vueuse-functions/references/useStepper.md +137 -0
  552. package/skills/vueuse-functions/references/useStorage.md +278 -0
  553. package/skills/vueuse-functions/references/useStorageAsync.md +136 -0
  554. package/skills/vueuse-functions/references/useStyleTag.md +131 -0
  555. package/skills/vueuse-functions/references/useSubject.md +77 -0
  556. package/skills/vueuse-functions/references/useSubscription.md +33 -0
  557. package/skills/vueuse-functions/references/useSum.md +36 -0
  558. package/skills/vueuse-functions/references/useSupported.md +29 -0
  559. package/skills/vueuse-functions/references/useSwipe.md +75 -0
  560. package/skills/vueuse-functions/references/useTemplateRefsList.md +37 -0
  561. package/skills/vueuse-functions/references/useTextDirection.md +75 -0
  562. package/skills/vueuse-functions/references/useTextSelection.md +43 -0
  563. package/skills/vueuse-functions/references/useTextareaAutosize.md +94 -0
  564. package/skills/vueuse-functions/references/useThrottleFn.md +57 -0
  565. package/skills/vueuse-functions/references/useThrottledRefHistory.md +47 -0
  566. package/skills/vueuse-functions/references/useTimeAgo.md +154 -0
  567. package/skills/vueuse-functions/references/useTimeAgoIntl.md +117 -0
  568. package/skills/vueuse-functions/references/useTimeout.md +113 -0
  569. package/skills/vueuse-functions/references/useTimeoutFn.md +51 -0
  570. package/skills/vueuse-functions/references/useTimeoutPoll.md +47 -0
  571. package/skills/vueuse-functions/references/useTimestamp.md +93 -0
  572. package/skills/vueuse-functions/references/useTitle.md +115 -0
  573. package/skills/vueuse-functions/references/useToNumber.md +54 -0
  574. package/skills/vueuse-functions/references/useToString.md +34 -0
  575. package/skills/vueuse-functions/references/useToggle.md +103 -0
  576. package/skills/vueuse-functions/references/useTransition.md +265 -0
  577. package/skills/vueuse-functions/references/useTrunc.md +33 -0
  578. package/skills/vueuse-functions/references/useUrlSearchParams.md +121 -0
  579. package/skills/vueuse-functions/references/useUserMedia.md +96 -0
  580. package/skills/vueuse-functions/references/useVModel.md +182 -0
  581. package/skills/vueuse-functions/references/useVModels.md +67 -0
  582. package/skills/vueuse-functions/references/useVibrate.md +86 -0
  583. package/skills/vueuse-functions/references/useVirtualList.md +182 -0
  584. package/skills/vueuse-functions/references/useWakeLock.md +51 -0
  585. package/skills/vueuse-functions/references/useWebNotification.md +175 -0
  586. package/skills/vueuse-functions/references/useWebSocket.md +299 -0
  587. package/skills/vueuse-functions/references/useWebWorker.md +60 -0
  588. package/skills/vueuse-functions/references/useWebWorkerFn.md +102 -0
  589. package/skills/vueuse-functions/references/useWindowFocus.md +46 -0
  590. package/skills/vueuse-functions/references/useWindowScroll.md +46 -0
  591. package/skills/vueuse-functions/references/useWindowSize.md +78 -0
  592. package/skills/vueuse-functions/references/useZoomFactor.md +53 -0
  593. package/skills/vueuse-functions/references/useZoomLevel.md +53 -0
  594. package/skills/vueuse-functions/references/watchArray.md +53 -0
  595. package/skills/vueuse-functions/references/watchAtMost.md +63 -0
  596. package/skills/vueuse-functions/references/watchDebounced.md +101 -0
  597. package/skills/vueuse-functions/references/watchDeep.md +54 -0
  598. package/skills/vueuse-functions/references/watchExtractedObservable.md +192 -0
  599. package/skills/vueuse-functions/references/watchIgnorable.md +120 -0
  600. package/skills/vueuse-functions/references/watchImmediate.md +44 -0
  601. package/skills/vueuse-functions/references/watchOnce.md +41 -0
  602. package/skills/vueuse-functions/references/watchPausable.md +86 -0
  603. package/skills/vueuse-functions/references/watchThrottled.md +108 -0
  604. package/skills/vueuse-functions/references/watchTriggerable.md +98 -0
  605. package/skills/vueuse-functions/references/watchWithFilter.md +54 -0
  606. package/skills/vueuse-functions/references/whenever.md +108 -0
  607. package/skills/web-design-guidelines/SKILL.md +39 -0
  608. package/skills/web-design-guidelines/SYNC.md +5 -0
@@ -0,0 +1,363 @@
1
+ # Lifecycle Hooks
2
+
3
+ Extend the build process with lifecycle hooks.
4
+
5
+ ## Overview
6
+
7
+ Hooks provide a way to inject custom logic at specific stages of the build lifecycle. Inspired by [unbuild](https://github.com/unjs/unbuild).
8
+
9
+ **Recommendation:** Use [plugins](advanced-plugins.md) for most extensions. Use hooks for simple custom tasks or Rolldown plugin injection.
10
+
11
+ ## Usage Patterns
12
+
13
+ ### Object Syntax
14
+
15
+ ```ts
16
+ export default defineConfig({
17
+ entry: ['src/index.ts'],
18
+ hooks: {
19
+ 'build:prepare': async (context) => {
20
+ console.log('Build starting...')
21
+ },
22
+ 'build:done': async (context) => {
23
+ console.log('Build complete!')
24
+ },
25
+ },
26
+ })
27
+ ```
28
+
29
+ ### Function Syntax
30
+
31
+ ```ts
32
+ export default defineConfig({
33
+ entry: ['src/index.ts'],
34
+ hooks(hooks) {
35
+ hooks.hook('build:prepare', () => {
36
+ console.log('Preparing build...')
37
+ })
38
+
39
+ hooks.hook('build:before', (context) => {
40
+ console.log(`Building format: ${context.format}`)
41
+ })
42
+ },
43
+ })
44
+ ```
45
+
46
+ ## Available Hooks
47
+
48
+ ### `build:prepare`
49
+
50
+ Called before the build process starts.
51
+
52
+ **When:** Once per build session
53
+
54
+ **Context:**
55
+ ```ts
56
+ {
57
+ options: ResolvedConfig,
58
+ hooks: Hookable
59
+ }
60
+ ```
61
+
62
+ **Use cases:**
63
+ - Setup tasks
64
+ - Validation
65
+ - Environment preparation
66
+
67
+ **Example:**
68
+ ```ts
69
+ hooks: {
70
+ 'build:prepare': async (context) => {
71
+ console.log('Starting build for:', context.options.entry)
72
+ await cleanOldFiles()
73
+ },
74
+ }
75
+ ```
76
+
77
+ ### `build:before`
78
+
79
+ Called before each Rolldown build.
80
+
81
+ **When:** Once per format (ESM, CJS, etc.)
82
+
83
+ **Context:**
84
+ ```ts
85
+ {
86
+ options: ResolvedConfig,
87
+ buildOptions: BuildOptions,
88
+ hooks: Hookable
89
+ }
90
+ ```
91
+
92
+ **Use cases:**
93
+ - Modify build options per format
94
+ - Inject plugins dynamically
95
+ - Format-specific setup
96
+
97
+ **Example:**
98
+ ```ts
99
+ hooks: {
100
+ 'build:before': async (context) => {
101
+ console.log(`Building ${context.buildOptions.format} format...`)
102
+
103
+ // Add format-specific plugin
104
+ if (context.buildOptions.format === 'iife') {
105
+ context.buildOptions.plugins.push(browserPlugin())
106
+ }
107
+ },
108
+ }
109
+ ```
110
+
111
+ ### `build:done`
112
+
113
+ Called after the build completes.
114
+
115
+ **When:** Once per build session
116
+
117
+ **Context:**
118
+ ```ts
119
+ {
120
+ options: ResolvedConfig,
121
+ chunks: RolldownChunk[],
122
+ hooks: Hookable
123
+ }
124
+ ```
125
+
126
+ **Use cases:**
127
+ - Post-processing
128
+ - Asset copying
129
+ - Notifications
130
+ - Deployment
131
+
132
+ **Example:**
133
+ ```ts
134
+ hooks: {
135
+ 'build:done': async (context) => {
136
+ console.log(`Built ${context.chunks.length} chunks`)
137
+
138
+ // Copy additional files
139
+ await copyAssets()
140
+
141
+ // Send notification
142
+ notifyBuildComplete()
143
+ },
144
+ }
145
+ ```
146
+
147
+ ## Common Patterns
148
+
149
+ ### Build Notifications
150
+
151
+ ```ts
152
+ export default defineConfig({
153
+ hooks: {
154
+ 'build:prepare': () => {
155
+ console.log('🚀 Starting build...')
156
+ },
157
+ 'build:done': (context) => {
158
+ const size = context.chunks.reduce((sum, c) => sum + c.code.length, 0)
159
+ console.log(`✅ Build complete! Total size: ${size} bytes`)
160
+ },
161
+ },
162
+ })
163
+ ```
164
+
165
+ ### Conditional Plugin Injection
166
+
167
+ ```ts
168
+ export default defineConfig({
169
+ hooks(hooks) {
170
+ hooks.hook('build:before', (context) => {
171
+ // Add minification only for production
172
+ if (process.env.NODE_ENV === 'production') {
173
+ context.buildOptions.plugins.push(minifyPlugin())
174
+ }
175
+ })
176
+ },
177
+ })
178
+ ```
179
+
180
+ ### Custom File Copy
181
+
182
+ ```ts
183
+ import { copyFile } from 'fs/promises'
184
+
185
+ export default defineConfig({
186
+ hooks: {
187
+ 'build:done': async (context) => {
188
+ // Copy README to dist
189
+ await copyFile('README.md', `${context.options.outDir}/README.md`)
190
+ },
191
+ },
192
+ })
193
+ ```
194
+
195
+ ### Build Metrics
196
+
197
+ ```ts
198
+ export default defineConfig({
199
+ hooks: {
200
+ 'build:prepare': (context) => {
201
+ context.startTime = Date.now()
202
+ },
203
+ 'build:done': (context) => {
204
+ const duration = Date.now() - context.startTime
205
+ console.log(`Build took ${duration}ms`)
206
+
207
+ // Log chunk sizes
208
+ context.chunks.forEach((chunk) => {
209
+ console.log(`${chunk.fileName}: ${chunk.code.length} bytes`)
210
+ })
211
+ },
212
+ },
213
+ })
214
+ ```
215
+
216
+ ### Format-Specific Logic
217
+
218
+ ```ts
219
+ export default defineConfig({
220
+ format: ['esm', 'cjs', 'iife'],
221
+ hooks: {
222
+ 'build:before': (context) => {
223
+ const format = context.buildOptions.format
224
+
225
+ if (format === 'iife') {
226
+ // Browser-specific setup
227
+ context.buildOptions.globalName = 'MyLib'
228
+ } else if (format === 'cjs') {
229
+ // Node-specific setup
230
+ context.buildOptions.platform = 'node'
231
+ }
232
+ },
233
+ },
234
+ })
235
+ ```
236
+
237
+ ### Deployment Hook
238
+
239
+ ```ts
240
+ export default defineConfig({
241
+ hooks: {
242
+ 'build:done': async (context) => {
243
+ if (process.env.DEPLOY === 'true') {
244
+ console.log('Deploying to CDN...')
245
+ await deployToCDN(context.options.outDir)
246
+ }
247
+ },
248
+ },
249
+ })
250
+ ```
251
+
252
+ ## Advanced Usage
253
+
254
+ ### Multiple Hooks
255
+
256
+ ```ts
257
+ export default defineConfig({
258
+ hooks(hooks) {
259
+ // Register multiple hooks
260
+ hooks.hook('build:prepare', setupEnvironment)
261
+ hooks.hook('build:prepare', validateConfig)
262
+
263
+ hooks.hook('build:before', injectPlugins)
264
+ hooks.hook('build:before', logFormat)
265
+
266
+ hooks.hook('build:done', generateManifest)
267
+ hooks.hook('build:done', notifyComplete)
268
+ },
269
+ })
270
+ ```
271
+
272
+ ### Async Hooks
273
+
274
+ ```ts
275
+ export default defineConfig({
276
+ hooks: {
277
+ 'build:prepare': async (context) => {
278
+ await fetchRemoteConfig()
279
+ await initializeDatabase()
280
+ },
281
+ 'build:done': async (context) => {
282
+ await uploadToS3(context.chunks)
283
+ await invalidateCDN()
284
+ },
285
+ },
286
+ })
287
+ ```
288
+
289
+ ### Error Handling
290
+
291
+ ```ts
292
+ export default defineConfig({
293
+ hooks: {
294
+ 'build:done': async (context) => {
295
+ try {
296
+ await riskyOperation()
297
+ } catch (error) {
298
+ console.error('Hook failed:', error)
299
+ // Don't throw - allow build to complete
300
+ }
301
+ },
302
+ },
303
+ })
304
+ ```
305
+
306
+ ## Hookable API
307
+
308
+ tsdown uses [hookable](https://github.com/unjs/hookable) for hooks. Additional methods:
309
+
310
+ ```ts
311
+ export default defineConfig({
312
+ hooks(hooks) {
313
+ // Register hook
314
+ hooks.hook('build:done', handler)
315
+
316
+ // Register hook once
317
+ hooks.hookOnce('build:prepare', handler)
318
+
319
+ // Remove hook
320
+ hooks.removeHook('build:done', handler)
321
+
322
+ // Clear all hooks for event
323
+ hooks.removeHooks('build:done')
324
+
325
+ // Call hooks manually
326
+ await hooks.callHook('build:done', context)
327
+ },
328
+ })
329
+ ```
330
+
331
+ ## Tips
332
+
333
+ 1. **Use plugins** for most extensions
334
+ 2. **Hooks for simple tasks** like notifications or file copying
335
+ 3. **Async hooks supported** for I/O operations
336
+ 4. **Don't throw errors** unless you want to fail the build
337
+ 5. **Context is mutable** in `build:before` for advanced use cases
338
+ 6. **Multiple hooks allowed** for the same event
339
+
340
+ ## Troubleshooting
341
+
342
+ ### Hook Not Called
343
+
344
+ - Verify hook name is correct
345
+ - Check hook is registered in config
346
+ - Ensure async hooks are awaited
347
+
348
+ ### Build Fails in Hook
349
+
350
+ - Add try/catch for error handling
351
+ - Don't throw unless intentional
352
+ - Log errors for debugging
353
+
354
+ ### Context Undefined
355
+
356
+ - Check which hook you're using
357
+ - Verify context properties available for that hook
358
+
359
+ ## Related
360
+
361
+ - [Plugins](advanced-plugins.md) - Plugin system
362
+ - [Rolldown Options](advanced-rolldown-options.md) - Build options
363
+ - [Watch Mode](option-watch-mode.md) - Development workflow
@@ -0,0 +1,381 @@
1
+ # Plugins
2
+
3
+ Extend tsdown with plugins from multiple ecosystems.
4
+
5
+ ## Overview
6
+
7
+ tsdown, built on Rolldown, supports plugins from multiple ecosystems to extend and customize the bundling process.
8
+
9
+ ## Supported Ecosystems
10
+
11
+ ### 1. Rolldown Plugins
12
+
13
+ Native plugins designed for Rolldown:
14
+
15
+ ```ts
16
+ import RolldownPlugin from 'rolldown-plugin-something'
17
+
18
+ export default defineConfig({
19
+ plugins: [RolldownPlugin()],
20
+ })
21
+ ```
22
+
23
+ **Compatibility:** ✅ Full support
24
+
25
+ ### 2. Unplugin
26
+
27
+ Universal plugins that work across bundlers:
28
+
29
+ ```ts
30
+ import UnpluginPlugin from 'unplugin-something'
31
+
32
+ export default defineConfig({
33
+ plugins: [UnpluginPlugin.rolldown()],
34
+ })
35
+ ```
36
+
37
+ **Compatibility:** ✅ Most unplugin-* plugins work
38
+
39
+ **Examples:**
40
+ - `unplugin-vue-components`
41
+ - `unplugin-auto-import`
42
+ - `unplugin-icons`
43
+
44
+ ### 3. Rollup Plugins
45
+
46
+ Most Rollup plugins work with tsdown:
47
+
48
+ ```ts
49
+ import RollupPlugin from '@rollup/plugin-something'
50
+
51
+ export default defineConfig({
52
+ plugins: [RollupPlugin()],
53
+ })
54
+ ```
55
+
56
+ **Compatibility:** ✅ High compatibility
57
+
58
+ **Type Issues:** May cause TypeScript errors - use type casting:
59
+
60
+ ```ts
61
+ import RollupPlugin from 'rollup-plugin-something'
62
+
63
+ export default defineConfig({
64
+ plugins: [
65
+ // @ts-expect-error Rollup plugin type mismatch
66
+ RollupPlugin(),
67
+ // Or cast to any
68
+ RollupPlugin() as any,
69
+ ],
70
+ })
71
+ ```
72
+
73
+ ### 4. Vite Plugins
74
+
75
+ Some Vite plugins may work:
76
+
77
+ ```ts
78
+ import VitePlugin from 'vite-plugin-something'
79
+
80
+ export default defineConfig({
81
+ plugins: [
82
+ // @ts-expect-error Vite plugin type mismatch
83
+ VitePlugin(),
84
+ ],
85
+ })
86
+ ```
87
+
88
+ **Compatibility:** ⚠️ Limited - only if not using Vite-specific APIs
89
+
90
+ **Note:** Improved support planned for future releases.
91
+
92
+ ## Usage
93
+
94
+ ### Basic Plugin Usage
95
+
96
+ ```ts
97
+ import { defineConfig } from 'tsdown'
98
+ import SomePlugin from 'some-plugin'
99
+
100
+ export default defineConfig({
101
+ entry: ['src/index.ts'],
102
+ plugins: [SomePlugin()],
103
+ })
104
+ ```
105
+
106
+ ### Multiple Plugins
107
+
108
+ ```ts
109
+ import PluginA from 'plugin-a'
110
+ import PluginB from 'plugin-b'
111
+ import PluginC from 'plugin-c'
112
+
113
+ export default defineConfig({
114
+ entry: ['src/index.ts'],
115
+ plugins: [
116
+ PluginA(),
117
+ PluginB({ option: true }),
118
+ PluginC(),
119
+ ],
120
+ })
121
+ ```
122
+
123
+ ### Conditional Plugins
124
+
125
+ ```ts
126
+ export default defineConfig((options) => ({
127
+ entry: ['src/index.ts'],
128
+ plugins: [
129
+ SomePlugin(),
130
+ options.watch && DevPlugin(),
131
+ !options.watch && ProdPlugin(),
132
+ ].filter(Boolean),
133
+ }))
134
+ ```
135
+
136
+ ## Common Plugin Patterns
137
+
138
+ ### JSON Import
139
+
140
+ ```ts
141
+ import json from '@rollup/plugin-json'
142
+
143
+ export default defineConfig({
144
+ plugins: [json()],
145
+ })
146
+ ```
147
+
148
+ ### Node Resolve
149
+
150
+ ```ts
151
+ import { nodeResolve } from '@rollup/plugin-node-resolve'
152
+
153
+ export default defineConfig({
154
+ plugins: [nodeResolve()],
155
+ })
156
+ ```
157
+
158
+ ### CommonJS
159
+
160
+ ```ts
161
+ import commonjs from '@rollup/plugin-commonjs'
162
+
163
+ export default defineConfig({
164
+ plugins: [commonjs()],
165
+ })
166
+ ```
167
+
168
+ ### Replace
169
+
170
+ ```ts
171
+ import replace from '@rollup/plugin-replace'
172
+
173
+ export default defineConfig({
174
+ plugins: [
175
+ replace({
176
+ 'process.env.NODE_ENV': JSON.stringify('production'),
177
+ __VERSION__: JSON.stringify('1.0.0'),
178
+ }),
179
+ ],
180
+ })
181
+ ```
182
+
183
+ ### Auto Import
184
+
185
+ ```ts
186
+ import AutoImport from 'unplugin-auto-import/rolldown'
187
+
188
+ export default defineConfig({
189
+ plugins: [
190
+ AutoImport({
191
+ imports: ['vue', 'vue-router'],
192
+ dts: 'src/auto-imports.d.ts',
193
+ }),
194
+ ],
195
+ })
196
+ ```
197
+
198
+ ### Vue Components
199
+
200
+ ```ts
201
+ import Components from 'unplugin-vue-components/rolldown'
202
+
203
+ export default defineConfig({
204
+ plugins: [
205
+ Components({
206
+ dts: 'src/components.d.ts',
207
+ }),
208
+ ],
209
+ })
210
+ ```
211
+
212
+ ## Framework-Specific Plugins
213
+
214
+ ### React
215
+
216
+ ```ts
217
+ import react from '@vitejs/plugin-react'
218
+
219
+ export default defineConfig({
220
+ entry: ['src/index.tsx'],
221
+ plugins: [
222
+ // @ts-expect-error Vite plugin
223
+ react(),
224
+ ],
225
+ })
226
+ ```
227
+
228
+ ### Vue
229
+
230
+ ```ts
231
+ import vue from '@vitejs/plugin-vue'
232
+
233
+ export default defineConfig({
234
+ entry: ['src/index.ts'],
235
+ plugins: [
236
+ // @ts-expect-error Vite plugin
237
+ vue(),
238
+ ],
239
+ })
240
+ ```
241
+
242
+ ### Solid
243
+
244
+ ```ts
245
+ import solid from 'vite-plugin-solid'
246
+
247
+ export default defineConfig({
248
+ entry: ['src/index.tsx'],
249
+ plugins: [
250
+ // @ts-expect-error Vite plugin
251
+ solid(),
252
+ ],
253
+ })
254
+ ```
255
+
256
+ ### Svelte
257
+
258
+ ```ts
259
+ import { svelte } from '@sveltejs/vite-plugin-svelte'
260
+
261
+ export default defineConfig({
262
+ entry: ['src/index.ts'],
263
+ plugins: [
264
+ // @ts-expect-error Vite plugin
265
+ svelte(),
266
+ ],
267
+ })
268
+ ```
269
+
270
+ ## Writing Custom Plugins
271
+
272
+ Follow Rolldown's plugin development guide:
273
+
274
+ ### Basic Plugin Structure
275
+
276
+ ```ts
277
+ import type { Plugin } from 'rolldown'
278
+
279
+ function myPlugin(): Plugin {
280
+ return {
281
+ name: 'my-plugin',
282
+
283
+ // Transform hook
284
+ transform(code, id) {
285
+ if (id.endsWith('.custom')) {
286
+ return {
287
+ code: transformCode(code),
288
+ map: null,
289
+ }
290
+ }
291
+ },
292
+
293
+ // Other hooks...
294
+ }
295
+ }
296
+ ```
297
+
298
+ ### Using Custom Plugin
299
+
300
+ ```ts
301
+ import { myPlugin } from './my-plugin'
302
+
303
+ export default defineConfig({
304
+ plugins: [myPlugin()],
305
+ })
306
+ ```
307
+
308
+ ## Plugin Configuration
309
+
310
+ ### Plugin-Specific Options
311
+
312
+ Refer to each plugin's documentation for configuration options.
313
+
314
+ ### Plugin Order
315
+
316
+ Plugins run in the order they're defined:
317
+
318
+ ```ts
319
+ export default defineConfig({
320
+ plugins: [
321
+ PluginA(), // Runs first
322
+ PluginB(), // Runs second
323
+ PluginC(), // Runs last
324
+ ],
325
+ })
326
+ ```
327
+
328
+ ## Troubleshooting
329
+
330
+ ### Type Errors with Rollup/Vite Plugins
331
+
332
+ Use type casting:
333
+
334
+ ```ts
335
+ plugins: [
336
+ // Option 1: @ts-expect-error
337
+ // @ts-expect-error Plugin type mismatch
338
+ SomePlugin(),
339
+
340
+ // Option 2: as any
341
+ SomePlugin() as any,
342
+ ]
343
+ ```
344
+
345
+ ### Plugin Not Working
346
+
347
+ 1. **Check compatibility** - Verify plugin supports your bundler
348
+ 2. **Read documentation** - Follow plugin's setup instructions
349
+ 3. **Check plugin order** - Some plugins depend on execution order
350
+ 4. **Enable debug mode** - Use `--debug` flag
351
+
352
+ ### Vite Plugin Fails
353
+
354
+ Vite plugins may rely on Vite-specific APIs:
355
+
356
+ 1. **Find Rollup equivalent** - Look for Rollup version of plugin
357
+ 2. **Use Unplugin version** - Check for `unplugin-*` alternative
358
+ 3. **Wait for support** - Vite plugin support improving
359
+
360
+ ## Resources
361
+
362
+ - [Rolldown Plugin Development](https://rolldown.rs/apis/plugin-api)
363
+ - [Unplugin Documentation](https://unplugin.unjs.io/)
364
+ - [Rollup Plugins](https://github.com/rollup/plugins)
365
+ - [Vite Plugins](https://vitejs.dev/plugins/)
366
+
367
+ ## Tips
368
+
369
+ 1. **Prefer Rolldown plugins** for best compatibility
370
+ 2. **Use Unplugin** for cross-bundler support
371
+ 3. **Cast types** for Rollup/Vite plugins
372
+ 4. **Test thoroughly** when using cross-ecosystem plugins
373
+ 5. **Check plugin docs** for specific configuration
374
+ 6. **Write custom plugins** for unique needs
375
+
376
+ ## Related
377
+
378
+ - [Hooks](advanced-hooks.md) - Lifecycle hooks
379
+ - [Rolldown Options](advanced-rolldown-options.md) - Advanced Rolldown config
380
+ - [React Recipe](recipe-react.md) - React setup with plugins
381
+ - [Vue Recipe](recipe-vue.md) - Vue setup with plugins