@optimizely/cms-cli
v1.0.0
Published
CLI application for integration with Optimizely CMS
Maintainers
Readme
@optimizely/cms-cli
The official command-line tool for Optimizely CMS that enables code-first content modeling. Sync your TypeScript content type definitions to Optimizely CMS, allowing you to manage content models alongside your code with full version control.
Features
- ContentTypes-to-CMS sync - Push your TypeScript definitions to Optimizely CMS
- Code-first workflow - Define content types in your preferred IDE with IntelliSense
- Version control - Manage content types alongside your application code
- Simple CLI commands - Intuitive interface for common tasks
- Seamless integration - Works perfectly with @optimizely/cms-sdk
Installation
Install as a development dependency:
npm install -D @optimizely/cms-cliOr using other package managers:
# pnpm
pnpm add -D @optimizely/cms-cli
# yarn
yarn add -D @optimizely/cms-cliQuick Start
1. Configure your environment
Create a .env file in your project root with your CMS credentials:
OPTIMIZELY_CMS_URL=https://your-cms-instance.com
OPTIMIZELY_CMS_CLIENT_ID=your-client-id
OPTIMIZELY_CMS_CLIENT_SECRET=your-client-secret2. Define your content types
Create TypeScript definitions for your content models:
import { contentType } from '@optimizely/cms-sdk';
export const ArticlePage = contentType({
key: 'Article',
displayName: 'Article page',
baseType: '_page',
properties: {
title: {
displayName: 'Title',
type: 'string',
},
subtitle: {
type: 'string',
displayName: 'Subtitle',
},
body: {
displayName: 'body ',
type: 'richText',
},
},
});3. Sync to CMS
Run the CLI to push your definitions to Optimizely CMS:
pnpm exec optimizely-cms-cli config push ./optimizely.config.mjsCommands
Configuration Management
Sync your TypeScript content type definitions with Optimizely CMS:
# Push content types to CMS (uses ./optimizely.config.mjs by default)
optimizely-cms-cli config push
# Push with custom config file
optimizely-cms-cli config push ./custom-config.mjs
# Force update (may result in data loss)
optimizely-cms-cli config push --force
# Pull current CMS configuration to JSON
optimizely-cms-cli config pull --output ./config.jsonAuthentication
Verify your CMS credentials are correctly configured:
# Test your credentials from environment variables
optimizely-cms-cli login
# Show detailed authentication output
optimizely-cms-cli login --verboseContent Type Operations
Manage individual content types:
# Delete a specific content type
optimizely-cms-cli content delete ArticlePage
# Delete with custom host
optimizely-cms-cli content delete ProductPage --host https://example.comDangerous Operations
⚠️ Use with extreme caution - these commands are destructive:
# Delete ALL user-defined content types (interactive confirmation required)
optimizely-cms-cli danger delete-all-content-typesGet Help
# Show all available commands
optimizely-cms-cli --help
# Show help for a specific command
optimizely-cms-cli config push --help
# Show help for a topic
optimizely-cms-cli config --helpDocumentation
For comprehensive guides and best practices:
Getting Started
- Installation - Set up your development environment
- Setup - Configure the SDK and CLI
- Modelling - Define your content types with TypeScript
Workflow Guides
- Create Content - Add content in Optimizely CMS after syncing types
- Fetching Content - Use the SDK to retrieve typed content
Best Practices
This CLI tool works best when used alongside the @optimizely/cms-sdk for a complete type-safe development experience:
# Install both packages
npm install @optimizely/cms-sdk
npm install -D @optimizely/cms-cliThe typical workflow:
- Define content types in TypeScript
- Use the CLI to sync definitions to CMS
- Create content in Optimizely CMS
- Fetch and render content with the SDK
For complete setup instructions, see the main repository README.
Support
- Community Slack - Join the Optimizely Community Slack
- GitHub Issues - Report bugs or request features on GitHub
License
Apache License 2.0
Built by the Optimizely CMS Team | Documentation | GitHub
