Common Tasks
Adding a New Construct to an Existing Package
- •Create the construct in
packages/{package}/src/constructs/ - •Create types in
packages/{package}/src/types/ - •Export from
packages/{package}/src/index.ts - •Create test file in
packages/{package}/test/ - •Create example stack in
packages/{package}/test/ - •Update package README
Creating a New Subpackage
- •Create directory:
mkdir -p packages/{name}/src - •Create
package.jsonwith correct dependencies - •Create
tsconfig.jsonextending../../tsconfig-strict.json - •Create
src/index.tswith exports - •Add to
tsconfig.build.jsonreferences (in dependency order) - •Update root README packages table
- •Create package README
- •Create test folder with test files
- •Create docs folder with documentation
Using Root Package Types
Import shared types from @cdk-constructs/cdk:
typescript
import {
EnvironmentConfig,
// Add other shared types as they're created
} from '@cdk-constructs/cdk';
Using Workspace Packages
Import from workspace packages:
typescript
import {Account, Region, Environment} from '@cdk-constructs/aws';
import {createCodeArtifact} from '@cdk-constructs/codeartifact';
Adding Integration Test Stack
- •Create stack class in
lib/stacks/{stack-name}-stack.ts - •Add environment configuration to
bin/environment.ts - •Import and instantiate in
bin/app.ts
Formatting Code
bash
# Format all files npm run format # Check formatting npm run format:check # Format and fix linting npm run format:fix
Key Reminders
- •New constructs go in subpackages, not the root package
- •Always use explicit imports, never wildcards
- •Match CDK versions across all packages
- •Include environment in resource names to prevent collisions
- •Gate expensive features to production environments
- •Export everything from
src/index.ts - •Create test files for all constructs
- •Add JSDoc comments to all public APIs
- •Run lint and format before committing
- •Follow dependency order when adding packages