Import Conventions
Explicit Named Imports
ALWAYS use explicit named imports. NEVER use wildcard imports.
typescript
// CORRECT
import {Stack, Duration, RemovalPolicy} from 'aws-cdk-lib';
import {Bucket, BucketEncryption, BlockPublicAccess} from 'aws-cdk-lib/aws-s3';
import {Function, Runtime, Code} from 'aws-cdk-lib/aws-lambda';
// INCORRECT - Never do this
import * as cdk from 'aws-cdk-lib';
import * as s3 from 'aws-cdk-lib/aws-s3';
Import Order
Organize imports in this order:
- •Node.js built-in modules
- •External dependencies (
@aws-sdk/*, third-party) - •AWS CDK (
constructs,aws-cdk-lib) - •Internal monorepo packages (
@cdk-constructs/*) - •Local imports (
./,../)
typescript
import {readFileSync} from 'fs';
import {SecretsManagerClient} from '@aws-sdk/client-secrets-manager';
import {Construct} from 'constructs';
import {Stack, Duration} from 'aws-cdk-lib';
import {Bucket} from 'aws-cdk-lib/aws-s3';
import {Account, Region, Environment} from '@cdk-constructs/aws';
import {CodeArtifactStackProps} from '@cdk-constructs/codeartifact';
import {MyLocalType} from './types/my-types';
Workspace Package Imports
When importing from workspace packages, use the package name:
typescript
// CORRECT
import {Account, Region} from '@cdk-constructs/aws';
import {createCodeArtifact} from '@cdk-constructs/codeartifact';
// INCORRECT - Don't use relative paths to packages
import {Account} from '../../packages/aws/src';