Files
stack/packages/mosaic/framework/skills/tsdown/references/advanced-ci.md
T
fargo 1a822493ba format: apply repo prettier (3.8.1) to the folded skills tree
963 markdown files reformatted with the repository's pinned prettier so
pnpm format:check covers the folded tree like every other repo file.

The formatter's embedded-language pass also normalized code fences
(TS semicolons, closed HTML tags in examples, lowercased CSS hex colors,
one renumbered list that skipped an index). Alphanumeric token deltas vs
the fold commit were audited file-by-file; all are formatter-equivalent
markup normalizations plus the four sanitized skills.
2026-08-19 14:37:17 -05:00

2.1 KiB

CI Environment Support

Automatically detect CI environments and toggle features based on local vs CI builds.

Overview

tsdown uses the is-in-ci package to detect CI environments. This covers GitHub Actions, GitLab CI, Jenkins, CircleCI, Travis CI, and more.

CI-Aware Values

Several options accept CI-aware string values:

Value Behavior
true Always enabled
false Always disabled
'ci-only' Enabled only in CI, disabled locally
'local-only' Enabled only locally, disabled in CI

Supported Options

These options accept CI-aware values:

  • dts - TypeScript declaration file generation
  • publint - Package lint validation
  • attw - "Are the types wrong" validation
  • report - Bundle size reporting
  • exports - Auto-generate package.json exports
  • unused - Unused dependency check
  • devtools - DevTools integration
  • failOnWarn - Fail on warnings (defaults to 'ci-only')

Usage

String Form

export default defineConfig({
  dts: 'local-only', // Skip DTS in CI for faster builds
  publint: 'ci-only', // Only run publint in CI
  failOnWarn: 'ci-only', // Fail on warnings in CI only (default)
});

Object Form

When an option takes a configuration object, set enabled to a CI-aware value:

export default defineConfig({
  publint: {
    enabled: 'ci-only',
    level: 'error',
  },
  attw: {
    enabled: 'ci-only',
    profile: 'node16',
  },
});

Config Function

The config function receives a ci boolean in its context:

export default defineConfig((_, { ci }) => ({
  minify: ci,
  sourcemap: !ci,
}));

Typical CI Configuration

export default defineConfig({
  entry: 'src/index.ts',
  format: ['esm', 'cjs'],
  dts: true,
  failOnWarn: 'ci-only',
  publint: 'ci-only',
  attw: 'ci-only',
});