- 🛡️ Type Safety - Generate TypeScript type definitions for your Storyblok components, ensuring type safety in your frontend applications
- 🔐 Authentication - Secure login system with support for different regions and CI environments
- 🧩 Component Management - Pull and push component schemas, groups, presets, and internal tags between spaces
- 🔄 Migration System - Generate and run migrations to transform or update field values across your Storyblok content
- 🌐 Language Management - Pull and manage languages for your Storyblok space
- 📁 File Organization - Organized file structure with the
.storyblok
directory as default - 🛠️ Customizable Paths - Flexible path configuration for all generated files
- 📝 Naming Conventions - Consistent file naming with customizable suffixes and prefixes
- 📂 Separate Files Support - Option to work with individual component files or consolidated files
- 👀 Dry Run Mode - Preview migrations changes before applying them to your Storyblok space
- 🔍 Filtering Capabilities - Filter components and stories using glob patterns and Storyblok query syntax
- 📊 Verbose Logging - Improved error handling and detailed logging options for debugging and monitoring
- Node.js >= 18.0.0
- Storyblok account (sign up here)
- Personal access token from Storyblok (get it here)
[!WARNING] Official documentation for this package v4 is still in development. In the meantime, please refer to the internal documentation for the v4 beta.
This package relies on pnpm to manage dependencies. For instructions on how to install pnpm, please visit pnpm.io.
pnpm install
pnpm build
To run the tests you can use the following command:
pnpm run test
If you prefer a more visual experience while writing tests you can use this command powered by vitest/ui:
pnpm run test:ui
You can also check the coverage with:
pnpm run coverage
To debug the CLI you can use the launch.json
configuration in the .vscode
folder. You can run any command with the debugger attached.
Then you can set breakpoints directly to the typescript files and the debugger will handle the rest with sourcempaps.
For help, discussion about best practices, or any other conversation that would benefit from being searchable:
For community support, chatting with other users, please visit:
For bugs or feature requests, please submit an issue.
[!IMPORTANT] Please search existing issues before submitting a new one. Issues without a minimal reproducible example will be closed. Why reproductions are Required.
We understand that you might not be able to share your company's project code. Please provide a minimal reproducible example that demonstrates the issue by using tools like Stackblitz or a link to a Github Repo lease make sure you include a README file with the instructions to build and run the project, important not to include any access token, password or personal information of any kind.
If you have a question, please ask in the Discuss Storyblok on Discord channel.
If you're interested in contributing to Storyblok CLI, please read our contributing docs before submitting a pull request.