devskill 2.0.2
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 +123 -0
- package/README.vn.md +104 -0
- package/SKILL_GUIDE.vn.md +252 -0
- package/bin/devskill.js +11 -0
- package/meta.ts +123 -0
- package/package.json +21 -0
- package/publish.sh +50 -0
- package/scripts/cli.ts +556 -0
- package/skills/builderx_api-contexts/SKILL.md +63 -0
- package/skills/builderx_api-contexts/references/core-multi-outbox.md +57 -0
- package/skills/builderx_api-controllers/SKILL.md +49 -0
- package/skills/builderx_api-controllers/references/core-fallback.md +62 -0
- package/skills/builderx_api-schemas/SKILL.md +76 -0
- package/skills/builderx_api-schemas/references/core-schema.md +78 -0
- package/skills/builderx_spa-api/SKILL.md +67 -0
- package/skills/builderx_spa-api/references/base-api.md +97 -0
- package/skills/builderx_spa-api/references/fetch.md +70 -0
- package/skills/builderx_spa-design/SKILL.md +82 -0
- package/skills/builderx_spa-design/references/core-text-design.md +64 -0
- package/skills/builderx_spa-design/references/features-feedback-actions.md +76 -0
- package/skills/builderx_spa-design/references/features-forms.md +91 -0
- package/skills/builderx_spa-design/references/features-layout-navigation.md +121 -0
- package/skills/builderx_spa-permission/SKILL.md +38 -0
- package/skills/builderx_spa-permission/references/has-permission.md +34 -0
- package/skills/composition-patterns/AGENTS.md +946 -0
- package/skills/composition-patterns/README.md +60 -0
- package/skills/composition-patterns/SKILL.md +89 -0
- package/skills/composition-patterns/SYNC.md +5 -0
- package/skills/composition-patterns/metadata.json +11 -0
- package/skills/composition-patterns/rules/_sections.md +29 -0
- package/skills/composition-patterns/rules/_template.md +24 -0
- package/skills/composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
- package/skills/composition-patterns/rules/architecture-compound-components.md +112 -0
- package/skills/composition-patterns/rules/patterns-children-over-render-props.md +87 -0
- package/skills/composition-patterns/rules/patterns-explicit-variants.md +100 -0
- package/skills/composition-patterns/rules/react19-no-forwardref.md +42 -0
- package/skills/composition-patterns/rules/state-context-interface.md +191 -0
- package/skills/composition-patterns/rules/state-decouple-implementation.md +113 -0
- package/skills/composition-patterns/rules/state-lift-state.md +125 -0
- package/skills/deploy-to-vercel/Archive.zip +0 -0
- package/skills/deploy-to-vercel/SKILL.md +296 -0
- package/skills/deploy-to-vercel/SYNC.md +5 -0
- package/skills/deploy-to-vercel/resources/deploy-codex.sh +301 -0
- package/skills/deploy-to-vercel/resources/deploy.sh +301 -0
- package/skills/pinia/SKILL.md +105 -0
- package/skills/pinia/references/api-in-composables.md +139 -0
- package/skills/pinia/references/setup-stores.md +105 -0
- package/skills/pinia/references/using-in-components.md +91 -0
- package/skills/pinia-options/SKILL.md +72 -0
- package/skills/pinia-options/references/core-option-stores.md +149 -0
- package/skills/pinia-options/references/using-in-options-api.md +105 -0
- package/skills/react-best-practices/AGENTS.md +3373 -0
- package/skills/react-best-practices/README.md +123 -0
- package/skills/react-best-practices/SKILL.md +143 -0
- package/skills/react-best-practices/SYNC.md +5 -0
- package/skills/react-best-practices/metadata.json +15 -0
- package/skills/react-best-practices/rules/_sections.md +46 -0
- package/skills/react-best-practices/rules/_template.md +28 -0
- package/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/skills/react-best-practices/rules/advanced-init-once.md +42 -0
- package/skills/react-best-practices/rules/advanced-use-latest.md +39 -0
- package/skills/react-best-practices/rules/async-api-routes.md +38 -0
- package/skills/react-best-practices/rules/async-defer-await.md +80 -0
- package/skills/react-best-practices/rules/async-dependencies.md +51 -0
- package/skills/react-best-practices/rules/async-parallel.md +28 -0
- package/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/skills/react-best-practices/rules/bundle-conditional.md +31 -0
- package/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/skills/react-best-practices/rules/bundle-preload.md +50 -0
- package/skills/react-best-practices/rules/client-event-listeners.md +74 -0
- package/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/skills/react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/skills/react-best-practices/rules/js-cache-storage.md +70 -0
- package/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/skills/react-best-practices/rules/js-early-exit.md +50 -0
- package/skills/react-best-practices/rules/js-flatmap-filter.md +60 -0
- package/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/skills/react-best-practices/rules/js-index-maps.md +37 -0
- package/skills/react-best-practices/rules/js-length-check-first.md +49 -0
- package/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/skills/react-best-practices/rules/rendering-activity.md +26 -0
- package/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/skills/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/skills/react-best-practices/rules/rendering-resource-hints.md +85 -0
- package/skills/react-best-practices/rules/rendering-script-defer-async.md +68 -0
- package/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/skills/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/skills/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/skills/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/skills/react-best-practices/rules/rerender-memo.md +44 -0
- package/skills/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/skills/react-best-practices/rules/rerender-no-inline-components.md +82 -0
- package/skills/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/skills/react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
- package/skills/react-best-practices/rules/rerender-transitions.md +40 -0
- package/skills/react-best-practices/rules/rerender-use-deferred-value.md +59 -0
- package/skills/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/skills/react-best-practices/rules/server-auth-actions.md +96 -0
- package/skills/react-best-practices/rules/server-cache-lru.md +41 -0
- package/skills/react-best-practices/rules/server-cache-react.md +76 -0
- package/skills/react-best-practices/rules/server-dedup-props.md +65 -0
- package/skills/react-best-practices/rules/server-hoist-static-io.md +142 -0
- package/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/skills/react-best-practices/rules/server-serialization.md +38 -0
- package/skills/react-native-skills/AGENTS.md +2897 -0
- package/skills/react-native-skills/README.md +165 -0
- package/skills/react-native-skills/SKILL.md +121 -0
- package/skills/react-native-skills/SYNC.md +5 -0
- package/skills/react-native-skills/metadata.json +16 -0
- package/skills/react-native-skills/rules/_sections.md +86 -0
- package/skills/react-native-skills/rules/_template.md +28 -0
- package/skills/react-native-skills/rules/animation-derived-value.md +53 -0
- package/skills/react-native-skills/rules/animation-gesture-detector-press.md +95 -0
- package/skills/react-native-skills/rules/animation-gpu-properties.md +65 -0
- package/skills/react-native-skills/rules/design-system-compound-components.md +66 -0
- package/skills/react-native-skills/rules/fonts-config-plugin.md +71 -0
- package/skills/react-native-skills/rules/imports-design-system-folder.md +68 -0
- package/skills/react-native-skills/rules/js-hoist-intl.md +61 -0
- package/skills/react-native-skills/rules/list-performance-callbacks.md +44 -0
- package/skills/react-native-skills/rules/list-performance-function-references.md +132 -0
- package/skills/react-native-skills/rules/list-performance-images.md +53 -0
- package/skills/react-native-skills/rules/list-performance-inline-objects.md +97 -0
- package/skills/react-native-skills/rules/list-performance-item-expensive.md +94 -0
- package/skills/react-native-skills/rules/list-performance-item-memo.md +82 -0
- package/skills/react-native-skills/rules/list-performance-item-types.md +104 -0
- package/skills/react-native-skills/rules/list-performance-virtualize.md +67 -0
- package/skills/react-native-skills/rules/monorepo-native-deps-in-app.md +46 -0
- package/skills/react-native-skills/rules/monorepo-single-dependency-versions.md +63 -0
- package/skills/react-native-skills/rules/navigation-native-navigators.md +188 -0
- package/skills/react-native-skills/rules/react-compiler-destructure-functions.md +50 -0
- package/skills/react-native-skills/rules/react-compiler-reanimated-shared-values.md +48 -0
- package/skills/react-native-skills/rules/react-state-dispatcher.md +91 -0
- package/skills/react-native-skills/rules/react-state-fallback.md +56 -0
- package/skills/react-native-skills/rules/react-state-minimize.md +65 -0
- package/skills/react-native-skills/rules/rendering-no-falsy-and.md +74 -0
- package/skills/react-native-skills/rules/rendering-text-in-text-component.md +36 -0
- package/skills/react-native-skills/rules/scroll-position-no-state.md +82 -0
- package/skills/react-native-skills/rules/state-ground-truth.md +80 -0
- package/skills/react-native-skills/rules/ui-expo-image.md +66 -0
- package/skills/react-native-skills/rules/ui-image-gallery.md +104 -0
- package/skills/react-native-skills/rules/ui-measure-views.md +78 -0
- package/skills/react-native-skills/rules/ui-menus.md +174 -0
- package/skills/react-native-skills/rules/ui-native-modals.md +77 -0
- package/skills/react-native-skills/rules/ui-pressable.md +61 -0
- package/skills/react-native-skills/rules/ui-safe-area-scroll.md +65 -0
- package/skills/react-native-skills/rules/ui-scrollview-content-inset.md +45 -0
- package/skills/react-native-skills/rules/ui-styling.md +87 -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-frontmatter-merging.md +49 -0
- package/skills/slidev/references/syntax-importing-slides.md +60 -0
- package/skills/slidev/references/syntax-mdc.md +51 -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 +407 -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 +178 -0
- package/skills/tsdown/references/guide-introduction.md +42 -0
- package/skills/tsdown/references/guide-migrate-from-tsup.md +189 -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 +281 -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 +270 -0
- package/skills/tsdown/references/option-output-format.md +181 -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 +46 -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/vercel-cli-with-tokens/SKILL.md +328 -0
- package/skills/vercel-cli-with-tokens/SYNC.md +5 -0
- package/skills/vue/SKILL.md +90 -0
- package/skills/vue/references/composables.md +54 -0
- package/skills/vue/references/lifecycle.md +31 -0
- package/skills/vue/references/props-emits.md +62 -0
- package/skills/vue/references/provide-inject.md +47 -0
- package/skills/vue/references/state.md +65 -0
- package/skills/vue-antdv-tailwind/SKILL.md +33 -0
- package/skills/vue-antdv-tailwind/references/styling-rules.md +61 -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-jsx-best-practices/LICENSE.md +21 -0
- package/skills/vue-jsx-best-practices/SKILL.md +12 -0
- package/skills/vue-jsx-best-practices/SYNC.md +5 -0
- package/skills/vue-jsx-best-practices/reference/render-function-jsx-vue-vs-react.md +141 -0
- package/skills/vue-options/SKILL.md +98 -0
- package/skills/vue-options/references/lifecycle.md +107 -0
- package/skills/vue-options/references/mixins.md +96 -0
- package/skills/vue-options/references/props-emits.md +106 -0
- package/skills/vue-options/references/provide-inject.md +92 -0
- package/skills/vue-options/references/state.md +115 -0
- package/skills/vue-options-api-best-practices/LICENSE.md +21 -0
- package/skills/vue-options-api-best-practices/SKILL.md +23 -0
- package/skills/vue-options-api-best-practices/SYNC.md +5 -0
- package/skills/vue-options-api-best-practices/reference/no-arrow-functions-in-lifecycle-hooks.md +95 -0
- package/skills/vue-options-api-best-practices/reference/no-arrow-functions-in-methods.md +68 -0
- package/skills/vue-options-api-best-practices/reference/stateful-methods-lifecycle.md +61 -0
- package/skills/vue-options-api-best-practices/reference/ts-options-api-arrow-functions-validators.md +141 -0
- package/skills/vue-options-api-best-practices/reference/ts-options-api-computed-return-types.md +192 -0
- package/skills/vue-options-api-best-practices/reference/ts-options-api-proptype-complex-types.md +212 -0
- package/skills/vue-options-api-best-practices/reference/ts-options-api-provide-inject-limitations.md +135 -0
- package/skills/vue-options-api-best-practices/reference/ts-options-api-type-event-handlers.md +202 -0
- package/skills/vue-options-api-best-practices/reference/ts-options-api-use-definecomponent.md +172 -0
- package/skills/vue-options-api-best-practices/reference/ts-strict-mode-options-api.md +197 -0
- package/skills/vue-pinia-best-practices/LICENSE.md +21 -0
- package/skills/vue-pinia-best-practices/SKILL.md +21 -0
- package/skills/vue-pinia-best-practices/SYNC.md +5 -0
- package/skills/vue-pinia-best-practices/reference/pinia-no-active-pinia-error.md +248 -0
- package/skills/vue-pinia-best-practices/reference/pinia-setup-store-return-all-state.md +227 -0
- package/skills/vue-pinia-best-practices/reference/pinia-store-destructuring-breaks-reactivity.md +193 -0
- package/skills/vue-pinia-best-practices/reference/state-url-for-ephemeral-filters.md +238 -0
- package/skills/vue-pinia-best-practices/reference/state-use-pinia-for-large-apps.md +262 -0
- package/skills/vue-pinia-best-practices/reference/store-method-binding-parentheses.md +191 -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 +215 -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 +357 -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 +221 -0
- package/skills/vueuse-functions/references/onElementRemoval.md +88 -0
- package/skills/vueuse-functions/references/onKeyStroke.md +211 -0
- package/skills/vueuse-functions/references/onLongPress.md +227 -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 +44 -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 +75 -0
- package/skills/vueuse-functions/references/toRefs.md +81 -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 +85 -0
- package/skills/vueuse-functions/references/useAnimate.md +181 -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 +78 -0
- package/skills/vueuse-functions/references/useBluetooth.md +175 -0
- package/skills/vueuse-functions/references/useBreakpoints.md +172 -0
- package/skills/vueuse-functions/references/useBroadcastChannel.md +74 -0
- package/skills/vueuse-functions/references/useBrowserLocation.md +83 -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 +123 -0
- package/skills/vueuse-functions/references/useClipboardItems.md +94 -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 +35 -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 +144 -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 +86 -0
- package/skills/vueuse-functions/references/useDeviceOrientation.md +62 -0
- package/skills/vueuse-functions/references/useDevicePixelRatio.md +44 -0
- package/skills/vueuse-functions/references/useDevicesList.md +90 -0
- package/skills/vueuse-functions/references/useDisplayMedia.md +71 -0
- package/skills/vueuse-functions/references/useDocumentVisibility.md +45 -0
- package/skills/vueuse-functions/references/useDraggable.md +317 -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 +48 -0
- package/skills/vueuse-functions/references/useElementHover.md +79 -0
- package/skills/vueuse-functions/references/useElementSize.md +78 -0
- package/skills/vueuse-functions/references/useElementVisibility.md +123 -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 +71 -0
- package/skills/vueuse-functions/references/useFavicon.md +67 -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 +162 -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 +75 -0
- package/skills/vueuse-functions/references/useFuse.md +107 -0
- package/skills/vueuse-functions/references/useGamepad.md +222 -0
- package/skills/vueuse-functions/references/useGeolocation.md +85 -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 +86 -0
- package/skills/vueuse-functions/references/useInfiniteScroll.md +157 -0
- package/skills/vueuse-functions/references/useIntersectionObserver.md +118 -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 +571 -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 +71 -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 +123 -0
- package/skills/vueuse-functions/references/useMousePressed.md +112 -0
- package/skills/vueuse-functions/references/useMutationObserver.md +61 -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 +79 -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 +42 -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 +79 -0
- package/skills/vueuse-functions/references/usePointer.md +89 -0
- package/skills/vueuse-functions/references/usePointerLock.md +60 -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 +109 -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 +96 -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 +68 -0
- package/skills/vueuse-functions/references/useSortable.md +235 -0
- package/skills/vueuse-functions/references/useSorted.md +90 -0
- package/skills/vueuse-functions/references/useSpeechRecognition.md +94 -0
- package/skills/vueuse-functions/references/useSpeechSynthesis.md +105 -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 +40 -0
- package/skills/vueuse-functions/references/useTextareaAutosize.md +97 -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 +89 -0
- package/skills/vueuse-functions/references/useTitle.md +113 -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 +1138 -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 +87 -0
- package/skills/vueuse-functions/references/useVirtualList.md +182 -0
- package/skills/vueuse-functions/references/useWakeLock.md +50 -0
- package/skills/vueuse-functions/references/useWebNotification.md +176 -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 +61 -0
- package/skills/vueuse-functions/references/useWindowSize.md +76 -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 +55 -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 +100 -0
- package/skills/web-design-guidelines/SKILL.md +39 -0
- package/skills/web-design-guidelines/SYNC.md +5 -0
- package/tsconfig.json +17 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
# Entry Points
|
|
2
|
+
|
|
3
|
+
Configure which files to bundle as entry points.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Entry points are the starting files for the bundling process. Each entry point generates a separate bundle.
|
|
8
|
+
|
|
9
|
+
## Usage Patterns
|
|
10
|
+
|
|
11
|
+
### CLI
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# Single entry
|
|
15
|
+
tsdown src/index.ts
|
|
16
|
+
|
|
17
|
+
# Multiple entries
|
|
18
|
+
tsdown src/index.ts src/cli.ts
|
|
19
|
+
|
|
20
|
+
# Glob patterns
|
|
21
|
+
tsdown 'src/*.ts'
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### Config File
|
|
25
|
+
|
|
26
|
+
#### Single Entry
|
|
27
|
+
|
|
28
|
+
```ts
|
|
29
|
+
export default defineConfig({
|
|
30
|
+
entry: 'src/index.ts',
|
|
31
|
+
})
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
#### Multiple Entries (Array)
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
export default defineConfig({
|
|
38
|
+
entry: ['src/entry1.ts', 'src/entry2.ts'],
|
|
39
|
+
})
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
#### Named Entries (Object)
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
export default defineConfig({
|
|
46
|
+
entry: {
|
|
47
|
+
main: 'src/index.ts',
|
|
48
|
+
utils: 'src/utils.ts',
|
|
49
|
+
cli: 'src/cli.ts',
|
|
50
|
+
},
|
|
51
|
+
})
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Output files will match the keys:
|
|
55
|
+
- `dist/main.mjs`
|
|
56
|
+
- `dist/utils.mjs`
|
|
57
|
+
- `dist/cli.mjs`
|
|
58
|
+
|
|
59
|
+
## Glob Patterns
|
|
60
|
+
|
|
61
|
+
Match multiple files dynamically using glob patterns:
|
|
62
|
+
|
|
63
|
+
### All TypeScript Files
|
|
64
|
+
|
|
65
|
+
```ts
|
|
66
|
+
export default defineConfig({
|
|
67
|
+
entry: 'src/**/*.ts',
|
|
68
|
+
})
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Exclude Test Files
|
|
72
|
+
|
|
73
|
+
```ts
|
|
74
|
+
export default defineConfig({
|
|
75
|
+
entry: ['src/*.ts', '!src/*.test.ts'],
|
|
76
|
+
})
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Object Entries with Glob Patterns
|
|
80
|
+
|
|
81
|
+
Use glob wildcards (`*`) in both keys and values. The `*` in the key acts as a placeholder replaced with the matched file name (without extension):
|
|
82
|
+
|
|
83
|
+
```ts
|
|
84
|
+
export default defineConfig({
|
|
85
|
+
entry: {
|
|
86
|
+
// Maps src/foo.ts → dist/lib/foo.js, src/bar.ts → dist/lib/bar.js
|
|
87
|
+
'lib/*': 'src/*.ts',
|
|
88
|
+
},
|
|
89
|
+
})
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
#### Negation Patterns in Object Entries
|
|
93
|
+
|
|
94
|
+
Values can be an array with negation patterns (`!`):
|
|
95
|
+
|
|
96
|
+
```ts
|
|
97
|
+
export default defineConfig({
|
|
98
|
+
entry: {
|
|
99
|
+
'hooks/*': ['src/hooks/*.ts', '!src/hooks/index.ts'],
|
|
100
|
+
},
|
|
101
|
+
})
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Multiple positive and negation patterns:
|
|
105
|
+
|
|
106
|
+
```ts
|
|
107
|
+
export default defineConfig({
|
|
108
|
+
entry: {
|
|
109
|
+
'utils/*': [
|
|
110
|
+
'src/utils/*.ts',
|
|
111
|
+
'src/utils/*.tsx',
|
|
112
|
+
'!src/utils/index.ts',
|
|
113
|
+
'!src/utils/internal.ts',
|
|
114
|
+
],
|
|
115
|
+
},
|
|
116
|
+
})
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**Warning:** Multiple positive patterns in an array value must share the same base directory.
|
|
120
|
+
|
|
121
|
+
### Mixed Entries
|
|
122
|
+
|
|
123
|
+
Mix strings, glob patterns, and object entries in an array:
|
|
124
|
+
|
|
125
|
+
```ts
|
|
126
|
+
export default defineConfig({
|
|
127
|
+
entry: [
|
|
128
|
+
'src/*',
|
|
129
|
+
'!src/foo.ts',
|
|
130
|
+
{ main: 'index.ts' },
|
|
131
|
+
{ 'lib/*': ['src/*.ts', '!src/bar.ts'] },
|
|
132
|
+
],
|
|
133
|
+
})
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Object entries take precedence when output names conflict.
|
|
137
|
+
|
|
138
|
+
### Windows Compatibility
|
|
139
|
+
|
|
140
|
+
Use forward slashes `/` instead of backslashes `\` on Windows:
|
|
141
|
+
|
|
142
|
+
```ts
|
|
143
|
+
// ✅ Correct
|
|
144
|
+
entry: 'src/utils/*.ts'
|
|
145
|
+
|
|
146
|
+
// ❌ Wrong on Windows
|
|
147
|
+
entry: 'src\\utils\\*.ts'
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Common Patterns
|
|
151
|
+
|
|
152
|
+
### Library with Main Export
|
|
153
|
+
|
|
154
|
+
```ts
|
|
155
|
+
export default defineConfig({
|
|
156
|
+
entry: 'src/index.ts',
|
|
157
|
+
format: ['esm', 'cjs'],
|
|
158
|
+
dts: true,
|
|
159
|
+
})
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Library with Multiple Exports
|
|
163
|
+
|
|
164
|
+
```ts
|
|
165
|
+
export default defineConfig({
|
|
166
|
+
entry: {
|
|
167
|
+
index: 'src/index.ts',
|
|
168
|
+
client: 'src/client.ts',
|
|
169
|
+
server: 'src/server.ts',
|
|
170
|
+
},
|
|
171
|
+
format: ['esm', 'cjs'],
|
|
172
|
+
dts: true,
|
|
173
|
+
})
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### CLI Tool
|
|
177
|
+
|
|
178
|
+
```ts
|
|
179
|
+
export default defineConfig({
|
|
180
|
+
entry: {
|
|
181
|
+
cli: 'src/cli.ts',
|
|
182
|
+
},
|
|
183
|
+
format: ['esm'],
|
|
184
|
+
platform: 'node',
|
|
185
|
+
})
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Preserve Directory Structure
|
|
189
|
+
|
|
190
|
+
Use with `unbundle: true` to keep file structure:
|
|
191
|
+
|
|
192
|
+
```ts
|
|
193
|
+
export default defineConfig({
|
|
194
|
+
entry: ['src/**/*.ts', '!**/*.test.ts'],
|
|
195
|
+
unbundle: true,
|
|
196
|
+
format: ['esm'],
|
|
197
|
+
dts: true,
|
|
198
|
+
})
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
This will output files matching the source structure:
|
|
202
|
+
- `src/index.ts` → `dist/index.mjs`
|
|
203
|
+
- `src/utils/helper.ts` → `dist/utils/helper.mjs`
|
|
204
|
+
|
|
205
|
+
## Tips
|
|
206
|
+
|
|
207
|
+
1. **Use glob patterns** for multiple related files
|
|
208
|
+
2. **Use object syntax** for custom output names
|
|
209
|
+
3. **Exclude test files** with negation patterns `!**/*.test.ts`
|
|
210
|
+
4. **Combine with unbundle** to preserve directory structure
|
|
211
|
+
5. **Use named entries** for better control over output filenames
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# Executable - `exe`
|
|
2
|
+
|
|
3
|
+
**[experimental]** Bundle as a standalone executable using [Node.js Single Executable Applications](https://nodejs.org/api/single-executable-applications.html).
|
|
4
|
+
|
|
5
|
+
## Requirements
|
|
6
|
+
|
|
7
|
+
- Node.js >= 25.5.0 (ESM support requires >= 25.7.0)
|
|
8
|
+
- Not supported in Bun or Deno
|
|
9
|
+
|
|
10
|
+
## Basic Usage
|
|
11
|
+
|
|
12
|
+
```ts
|
|
13
|
+
export default defineConfig({
|
|
14
|
+
entry: ['src/cli.ts'],
|
|
15
|
+
exe: true,
|
|
16
|
+
})
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Behavior When Enabled
|
|
20
|
+
|
|
21
|
+
- Default output format changes from `esm` to `cjs` (unless Node.js >= 25.7.0)
|
|
22
|
+
- Declaration file generation (`dts`) is disabled by default
|
|
23
|
+
- Code splitting is disabled
|
|
24
|
+
- Only single entry points are supported
|
|
25
|
+
- Legacy CJS warnings are suppressed
|
|
26
|
+
|
|
27
|
+
## Advanced Configuration
|
|
28
|
+
|
|
29
|
+
```ts
|
|
30
|
+
export default defineConfig({
|
|
31
|
+
entry: ['src/cli.ts'],
|
|
32
|
+
exe: {
|
|
33
|
+
fileName: 'my-tool',
|
|
34
|
+
seaConfig: {
|
|
35
|
+
disableExperimentalSEAWarning: true,
|
|
36
|
+
useCodeCache: true,
|
|
37
|
+
useSnapshot: false,
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
})
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## `ExeOptions`
|
|
44
|
+
|
|
45
|
+
| Option | Type | Description |
|
|
46
|
+
|--------|------|-------------|
|
|
47
|
+
| `seaConfig` | `Omit<SeaConfig, 'main' \| 'output' \| 'mainFormat'>` | Node.js configuration options |
|
|
48
|
+
| `fileName` | `string \| ((chunk) => string)` | Custom output file name (without `.exe` or platform suffixes) |
|
|
49
|
+
| `targets` | `ExeTarget[]` | Cross-platform build targets (requires `@tsdown/exe`) |
|
|
50
|
+
|
|
51
|
+
## `SeaConfig`
|
|
52
|
+
|
|
53
|
+
See [Node.js Single Executable Applications documentation](https://nodejs.org/api/single-executable-applications.html).
|
|
54
|
+
|
|
55
|
+
| Option | Type | Default | Description |
|
|
56
|
+
|--------|------|---------|-------------|
|
|
57
|
+
| `disableExperimentalSEAWarning` | `boolean` | `true` | Disable the experimental warning |
|
|
58
|
+
| `useSnapshot` | `boolean` | `false` | Use V8 snapshot |
|
|
59
|
+
| `useCodeCache` | `boolean` | `false` | Use V8 code cache |
|
|
60
|
+
| `execArgv` | `string[]` | - | Extra Node.js arguments |
|
|
61
|
+
| `execArgvExtension` | `'none' \| 'env' \| 'cli'` | `'env'` | How to extend execArgv |
|
|
62
|
+
| `assets` | `Record<string, string>` | - | Assets to embed |
|
|
63
|
+
|
|
64
|
+
## Cross-Platform Builds
|
|
65
|
+
|
|
66
|
+
Install `@tsdown/exe` to build executables for multiple platforms from a single machine:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
pnpm add -D @tsdown/exe
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
```ts
|
|
73
|
+
export default defineConfig({
|
|
74
|
+
entry: ['src/cli.ts'],
|
|
75
|
+
exe: {
|
|
76
|
+
targets: [
|
|
77
|
+
{ platform: 'linux', arch: 'x64', nodeVersion: '25.7.0' },
|
|
78
|
+
{ platform: 'darwin', arch: 'arm64', nodeVersion: '25.7.0' },
|
|
79
|
+
{ platform: 'win', arch: 'x64', nodeVersion: '25.7.0' },
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
})
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
This downloads the target platform's Node.js binary, caches it locally, and produces platform-suffixed output:
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
dist/
|
|
89
|
+
cli-linux-x64
|
|
90
|
+
cli-darwin-arm64
|
|
91
|
+
cli-win-x64.exe
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### `ExeTarget`
|
|
95
|
+
|
|
96
|
+
| Field | Type | Description |
|
|
97
|
+
|-------|------|-------------|
|
|
98
|
+
| `platform` | `'win' \| 'darwin' \| 'linux'` | Target OS (nodejs.org naming) |
|
|
99
|
+
| `arch` | `'x64' \| 'arm64'` | Target CPU architecture |
|
|
100
|
+
| `nodeVersion` | `string` | Node.js version (must be `>=25.7.0`) |
|
|
101
|
+
|
|
102
|
+
### Caching
|
|
103
|
+
|
|
104
|
+
Downloaded Node.js binaries are cached in system cache directories:
|
|
105
|
+
- **macOS:** `~/Library/Caches/tsdown/node/`
|
|
106
|
+
- **Linux:** `~/.cache/tsdown/node/`
|
|
107
|
+
- **Windows:** `%LOCALAPPDATA%/tsdown/Caches/node/`
|
|
108
|
+
|
|
109
|
+
## Platform Notes
|
|
110
|
+
|
|
111
|
+
- On macOS, the executable is automatically codesigned (ad-hoc) for Gatekeeper compatibility
|
|
112
|
+
- On Windows, the `.exe` extension is automatically appended
|
|
113
|
+
- When `targets` is specified, `seaConfig.executable` is ignored
|
|
114
|
+
|
|
115
|
+
## CLI
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
tsdown --exe
|
|
119
|
+
tsdown src/cli.ts --exe
|
|
120
|
+
```
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# Package Validation (publint & attw)
|
|
2
|
+
|
|
3
|
+
Validate your package configuration and type declarations before publishing.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
tsdown integrates with [publint](https://publint.dev/) and [Are the types wrong?](https://arethetypeswrong.github.io/) (attw) to catch common packaging issues. Both are optional dependencies.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# publint only
|
|
13
|
+
npm install -D publint
|
|
14
|
+
|
|
15
|
+
# attw only
|
|
16
|
+
npm install -D @arethetypeswrong/core
|
|
17
|
+
|
|
18
|
+
# both
|
|
19
|
+
npm install -D publint @arethetypeswrong/core
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## publint
|
|
23
|
+
|
|
24
|
+
Checks that `package.json` fields (`exports`, `main`, `module`, `types`) match your actual output files.
|
|
25
|
+
|
|
26
|
+
### Enable
|
|
27
|
+
|
|
28
|
+
```ts
|
|
29
|
+
export default defineConfig({
|
|
30
|
+
publint: true,
|
|
31
|
+
})
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Configuration
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
export default defineConfig({
|
|
38
|
+
publint: {
|
|
39
|
+
level: 'error', // 'warning' | 'error' | 'suggestion'
|
|
40
|
+
},
|
|
41
|
+
})
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### CLI
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
tsdown --publint
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## attw (Are the types wrong?)
|
|
51
|
+
|
|
52
|
+
Verifies TypeScript declarations are correct across different module resolution strategies (`node10`, `node16`, `bundler`).
|
|
53
|
+
|
|
54
|
+
### Enable
|
|
55
|
+
|
|
56
|
+
```ts
|
|
57
|
+
export default defineConfig({
|
|
58
|
+
attw: true,
|
|
59
|
+
})
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Configuration
|
|
63
|
+
|
|
64
|
+
```ts
|
|
65
|
+
export default defineConfig({
|
|
66
|
+
attw: {
|
|
67
|
+
profile: 'node16', // 'strict' | 'node16' | 'esm-only'
|
|
68
|
+
level: 'error', // 'warn' | 'error'
|
|
69
|
+
ignoreRules: ['false-cjs', 'cjs-resolves-to-esm'],
|
|
70
|
+
},
|
|
71
|
+
})
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Profiles
|
|
75
|
+
|
|
76
|
+
| Profile | Description |
|
|
77
|
+
|---------|-------------|
|
|
78
|
+
| `strict` | Requires all resolutions to pass (default) |
|
|
79
|
+
| `node16` | Ignores `node10` resolution failures |
|
|
80
|
+
| `esm-only` | Ignores `node10` and `node16-cjs` resolution failures |
|
|
81
|
+
|
|
82
|
+
### Ignore Rules
|
|
83
|
+
|
|
84
|
+
Suppress specific problem types with `ignoreRules`:
|
|
85
|
+
|
|
86
|
+
| Rule | Description |
|
|
87
|
+
|------|-------------|
|
|
88
|
+
| `no-resolution` | Module could not be resolved |
|
|
89
|
+
| `untyped-resolution` | Resolution succeeded but has no types |
|
|
90
|
+
| `false-cjs` | Types indicate CJS but implementation is ESM |
|
|
91
|
+
| `false-esm` | Types indicate ESM but implementation is CJS |
|
|
92
|
+
| `cjs-resolves-to-esm` | CJS resolution points to an ESM module |
|
|
93
|
+
| `fallback-condition` | A fallback/wildcard condition was used |
|
|
94
|
+
| `cjs-only-exports-default` | CJS module only exports a default |
|
|
95
|
+
| `named-exports` | Named exports mismatch between types and implementation |
|
|
96
|
+
| `false-export-default` | Types declare a default export that doesn't exist |
|
|
97
|
+
| `missing-export-equals` | Types are missing `export =` for CJS |
|
|
98
|
+
| `unexpected-module-syntax` | File uses unexpected module syntax |
|
|
99
|
+
| `internal-resolution-error` | Internal resolution error in type checking |
|
|
100
|
+
|
|
101
|
+
### CLI
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
tsdown --attw
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## CI Integration
|
|
108
|
+
|
|
109
|
+
Both tools support CI-aware options:
|
|
110
|
+
|
|
111
|
+
```ts
|
|
112
|
+
export default defineConfig({
|
|
113
|
+
publint: 'ci-only',
|
|
114
|
+
attw: {
|
|
115
|
+
enabled: 'ci-only',
|
|
116
|
+
profile: 'node16',
|
|
117
|
+
level: 'error',
|
|
118
|
+
},
|
|
119
|
+
})
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Both tools require a `package.json` in your project directory.
|
|
123
|
+
|
|
124
|
+
## Related Options
|
|
125
|
+
|
|
126
|
+
- [CI Environment](advanced-ci.md) - CI-aware option details
|
|
127
|
+
- [Package Exports](option-package-exports.md) - Auto-generate exports field
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Log Level
|
|
2
|
+
|
|
3
|
+
Control the verbosity of build output.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The `logLevel` option controls how much information tsdown displays during the build process.
|
|
8
|
+
|
|
9
|
+
## Type
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
logLevel?: 'silent' | 'error' | 'warn' | 'info'
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**Default:** `'info'`
|
|
16
|
+
|
|
17
|
+
## Basic Usage
|
|
18
|
+
|
|
19
|
+
### CLI
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Suppress all output
|
|
23
|
+
tsdown --log-level silent
|
|
24
|
+
|
|
25
|
+
# Only show errors
|
|
26
|
+
tsdown --log-level error
|
|
27
|
+
|
|
28
|
+
# Show warnings and errors
|
|
29
|
+
tsdown --log-level warn
|
|
30
|
+
|
|
31
|
+
# Show all info (default)
|
|
32
|
+
tsdown --log-level info
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Config File
|
|
36
|
+
|
|
37
|
+
```ts
|
|
38
|
+
export default defineConfig({
|
|
39
|
+
entry: ['src/index.ts'],
|
|
40
|
+
logLevel: 'error',
|
|
41
|
+
})
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Available Levels
|
|
45
|
+
|
|
46
|
+
| Level | Shows | Use Case |
|
|
47
|
+
|-------|-------|----------|
|
|
48
|
+
| `silent` | Nothing | CI/CD pipelines, scripting |
|
|
49
|
+
| `error` | Errors only | Minimal output |
|
|
50
|
+
| `warn` | Warnings + errors | Standard CI/CD |
|
|
51
|
+
| `info` | All messages | Development (default) |
|
|
52
|
+
|
|
53
|
+
## Common Patterns
|
|
54
|
+
|
|
55
|
+
### CI/CD Pipeline
|
|
56
|
+
|
|
57
|
+
```ts
|
|
58
|
+
export default defineConfig({
|
|
59
|
+
entry: ['src/index.ts'],
|
|
60
|
+
logLevel: 'error', // Only show errors in CI
|
|
61
|
+
})
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Scripting
|
|
65
|
+
|
|
66
|
+
```ts
|
|
67
|
+
export default defineConfig({
|
|
68
|
+
entry: ['src/index.ts'],
|
|
69
|
+
logLevel: 'silent', // No output for automation
|
|
70
|
+
})
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Fail on Warnings
|
|
74
|
+
|
|
75
|
+
The `failOnWarn` option controls whether warnings cause the build to exit with a non-zero code. Defaults to `false` — warnings never fail the build.
|
|
76
|
+
|
|
77
|
+
```ts
|
|
78
|
+
export default defineConfig({
|
|
79
|
+
failOnWarn: false, // Default: never fail on warnings
|
|
80
|
+
// failOnWarn: true, // Always fail on warnings
|
|
81
|
+
// failOnWarn: 'ci-only', // Fail on warnings only in CI
|
|
82
|
+
})
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
See [CI Environment](advanced-ci.md) for more about CI-aware options.
|
|
86
|
+
|
|
87
|
+
## Related Options
|
|
88
|
+
|
|
89
|
+
- [CI Environment](advanced-ci.md) - CI-aware option details
|
|
90
|
+
- [CLI Reference](reference-cli.md) - All CLI options
|
|
91
|
+
- [Config File](option-config-file.md) - Configuration setup
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# Minification
|
|
2
|
+
|
|
3
|
+
Compress code to reduce bundle size.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Minification removes unnecessary characters (whitespace, comments) and optimizes code for production, reducing bundle size and improving load times.
|
|
8
|
+
|
|
9
|
+
**Note:** Uses [Oxc minifier](https://oxc.rs/docs/contribute/minifier) internally. The minifier is currently in alpha.
|
|
10
|
+
|
|
11
|
+
## Type
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
minify?: boolean | 'dce-only' | MinifyOptions
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
- `true` — Enable full minification (whitespace removal, mangling, compression)
|
|
18
|
+
- `false` — Disable minification (default)
|
|
19
|
+
- `'dce-only'` — Only perform dead code elimination without full minification
|
|
20
|
+
- `MinifyOptions` — Pass detailed options to the Oxc minifier
|
|
21
|
+
|
|
22
|
+
## Basic Usage
|
|
23
|
+
|
|
24
|
+
### CLI
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# Enable minification
|
|
28
|
+
tsdown --minify
|
|
29
|
+
|
|
30
|
+
# Disable minification
|
|
31
|
+
tsdown --no-minify
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**Note:** The CLI `--minify` flag is a boolean toggle. For `'dce-only'` mode or advanced options, use the config file.
|
|
35
|
+
|
|
36
|
+
### Config File
|
|
37
|
+
|
|
38
|
+
```ts
|
|
39
|
+
export default defineConfig({
|
|
40
|
+
entry: ['src/index.ts'],
|
|
41
|
+
minify: true,
|
|
42
|
+
})
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### DCE-Only Mode
|
|
46
|
+
|
|
47
|
+
Remove dead code without full minification (keeps readable output):
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
export default defineConfig({
|
|
51
|
+
entry: ['src/index.ts'],
|
|
52
|
+
minify: 'dce-only',
|
|
53
|
+
})
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Example Output
|
|
57
|
+
|
|
58
|
+
### Without Minification
|
|
59
|
+
|
|
60
|
+
```js
|
|
61
|
+
// dist/index.mjs
|
|
62
|
+
const x = 1
|
|
63
|
+
|
|
64
|
+
function hello(x$1) {
|
|
65
|
+
console.log('Hello World')
|
|
66
|
+
console.log(x$1)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
hello(x)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### With Minification
|
|
73
|
+
|
|
74
|
+
```js
|
|
75
|
+
// dist/index.mjs
|
|
76
|
+
const e=1;function t(e){console.log(`Hello World`),console.log(e)}t(e);
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Common Patterns
|
|
80
|
+
|
|
81
|
+
### Production Build
|
|
82
|
+
|
|
83
|
+
```ts
|
|
84
|
+
export default defineConfig({
|
|
85
|
+
entry: ['src/index.ts'],
|
|
86
|
+
format: ['esm', 'cjs'],
|
|
87
|
+
minify: true,
|
|
88
|
+
clean: true,
|
|
89
|
+
})
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Conditional Minification
|
|
93
|
+
|
|
94
|
+
```ts
|
|
95
|
+
export default defineConfig((options) => ({
|
|
96
|
+
entry: ['src/index.ts'],
|
|
97
|
+
format: ['esm'],
|
|
98
|
+
minify: !options.watch, // Only minify in production
|
|
99
|
+
}))
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Browser Library
|
|
103
|
+
|
|
104
|
+
```ts
|
|
105
|
+
export default defineConfig({
|
|
106
|
+
entry: ['src/index.ts'],
|
|
107
|
+
format: ['iife'],
|
|
108
|
+
platform: 'browser',
|
|
109
|
+
globalName: 'MyLib',
|
|
110
|
+
minify: true,
|
|
111
|
+
})
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Multiple Builds
|
|
115
|
+
|
|
116
|
+
```ts
|
|
117
|
+
export default defineConfig([
|
|
118
|
+
// Development build
|
|
119
|
+
{
|
|
120
|
+
entry: ['src/index.ts'],
|
|
121
|
+
format: ['esm'],
|
|
122
|
+
minify: false,
|
|
123
|
+
outDir: 'dist/dev',
|
|
124
|
+
},
|
|
125
|
+
// Production build
|
|
126
|
+
{
|
|
127
|
+
entry: ['src/index.ts'],
|
|
128
|
+
format: ['esm'],
|
|
129
|
+
minify: true,
|
|
130
|
+
outDir: 'dist/prod',
|
|
131
|
+
},
|
|
132
|
+
])
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## CLI Examples
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# Production build with minification
|
|
139
|
+
tsdown --minify --clean
|
|
140
|
+
|
|
141
|
+
# Multiple formats with minification
|
|
142
|
+
tsdown --format esm --format cjs --minify
|
|
143
|
+
|
|
144
|
+
# Conditional minification (only when not watching)
|
|
145
|
+
tsdown --minify # Or omit --watch
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Tips
|
|
149
|
+
|
|
150
|
+
1. **Use `minify: true`** for production builds
|
|
151
|
+
2. **Use `'dce-only'`** to remove dead code while keeping output readable
|
|
152
|
+
3. **Skip minification** during development for faster rebuilds
|
|
153
|
+
4. **Combine with tree shaking** for best results
|
|
154
|
+
5. **Test minified output** thoroughly (Oxc minifier is in alpha)
|
|
155
|
+
|
|
156
|
+
## Troubleshooting
|
|
157
|
+
|
|
158
|
+
### Minified Code Has Bugs
|
|
159
|
+
|
|
160
|
+
Oxc minifier is in alpha and may have issues:
|
|
161
|
+
|
|
162
|
+
1. **Use DCE-only mode**: `minify: 'dce-only'`
|
|
163
|
+
2. **Report bug** to [Oxc project](https://github.com/oxc-project/oxc/issues)
|
|
164
|
+
3. **Disable minification**: `minify: false`
|
|
165
|
+
|
|
166
|
+
### Unexpected Output
|
|
167
|
+
|
|
168
|
+
- **Test unminified** first to isolate issue
|
|
169
|
+
- **Check source maps** for debugging
|
|
170
|
+
- **Verify target compatibility**
|
|
171
|
+
|
|
172
|
+
## Related Options
|
|
173
|
+
|
|
174
|
+
- [Tree Shaking](option-tree-shaking.md) - Remove unused code
|
|
175
|
+
- [Target](option-target.md) - Syntax transformations
|
|
176
|
+
- [Output Format](option-output-format.md) - Module formats
|
|
177
|
+
- [Sourcemap](option-sourcemap.md) - Debug information
|