Files
stack/v1/packages/mosaic/framework/skills/tsdown/references/advanced-ci.md
T

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',
});