CDK Terrain CLI
raw JSON → 0.22.1 verified Sat Apr 25 auth: no javascript
CLI for CDK Terrain, an open-source infrastructure-as-code framework leveraging Terraform providers via CDK constructs. Current version 0.22.1, released with monthly cadence. Renamed from `cdktf-cli` in v0.22.0 as part of the fork from CDKTF, with breaking package rename and Maven Central artifact publishing. Key differentiators include TypeScript-first design, tight integration with Terraform providers, and a provider generator for custom resources.
Common errors
error Error: Cannot find module 'cdktn-cli' ↓
cause Package renamed to cdktn-cli after v0.22.0
fix
Run: npm uninstall cdktf-cli && npm install cdktn-cli
error TypeError: cdktn_cli_1.CdktnCli is not a constructor ↓
cause CommonJS require() used with ESM-only package
fix
Change to ESM import: import { CdktnCli } from 'cdktn-cli'
error SyntaxError: Unexpected token 'export' ↓
cause Running TypeScript <5.x with cdktn-cli v0.22.1 which expects TS 5.x
fix
Install TypeScript 5.x: npm install -D typescript@^5.0.0
error ENOENT: no such file or directory, open 'cdktf.json' ↓
cause Config file renamed to cdktn.json in v0.22.0
fix
Rename cdktf.json to cdktn.json or create cdktn.json
Warnings
breaking Package renamed from 'cdktf-cli' to 'cdktn-cli' in v0.22.0; all existing imports break. ↓
fix Replace all `import from 'cdktf-cli'` with `import from 'cdktn-cli'`
breaking TypeScript pinned to 5.x in v0.22.1; using TS 4.x causes syntax errors. ↓
fix npm install typescript@^5.0.0
deprecated Config key 'cdktf.json' is deprecated; migrate to 'cdktn.json' ↓
fix Rename cdktf.json to cdktn.json in project root
gotcha ESM-only: require() not supported in Node >=16; use import/import() ↓
fix Set { "type": "module" } in package.json or use .mjs extension
gotcha Environment variable CDKTF_* still read for legacy support; may conflict with CDKTN_* ↓
fix Unset CDKTF_* env vars if using CDKTN_* to avoid unexpected overrides
Install
npm install cdktn-cli yarn add cdktn-cli pnpm add cdktn-cli Imports
- CdktnCli wrong
const CdktnCli = require('cdktn-cli')correctimport { CdktnCli } from 'cdktn-cli' - main wrong
import { main } from 'cdktn-cli'correctimport { main } from 'cdktn-cli/bin/index.js' - Providers wrong
import { Providers } from 'cdktn-cli'correctimport { Providers } from '@cdktn/providers'
Quickstart
import { CdktnCli } from 'cdktn-cli';
const app = new CdktnCli.App();
new MyStack(app, 'my-stack', { env: { region: 'us-east-1' } });
app.synth();