A monorepo that consolidates all JavaScript projects from the Storyblok organization. This project aims to centralize the development, maintenance, and contribution to Storyblok's ecosystem of SDKs and tools.
This monorepo contains the following official Storyblok SDKs and integrations:
| Package | Description | Version | Downloads |
|---|---|---|---|
| @storyblok/js | Core JavaScript SDK for Storyblok | ||
| storyblok-js-client | JavaScript client for Storyblok's Content Delivery API | ||
| storyblok-cli | A powerful CLI tool to improve the DX of your Storyblok projects. | ||
| @storyblok/region-helper | A helper package to handle Storyblok APIs in different regions. |
| Package | Description | Version | Downloads |
|---|---|---|---|
| @storyblok/react | React SDK for Storyblok | ||
| @storyblok/vue | Vue SDK for Storyblok | ||
| @storyblok/nuxt | Nuxt SDK for Storyblok | ||
| @storyblok/svelte | Svelte SDK for Storyblok | ||
| @storyblok/astro | Astro SDK for Storyblok |
| Package | Description | Version | Downloads |
|---|---|---|---|
| @storyblok/richtext | Rich Text Renderer for Storyblok |
This repository represents an ongoing migration from a polyrepo structure to a unified monorepo. While we're actively working on this transition, please note:
- All new development should be done in this repository
- Existing packages are being migrated gradually
- Some packages may still be in their original repositories during the transition
- We're working to ensure a smooth migration with minimal disruption
- Node.js (v18 or later)
- pnpm (v10 or later)
- Git
- Vite+ (
vpCLI) β pin the version listed in.viteplus-version
-
Clone the repository:
git clone https://github.com/storyblok/monoblok.git cd monoblok -
Install dependencies:
pnpm install
This repository uses pnpm workspaces (configured in the root package.json) for dependency
management.
# Install dependencies
pnpm install
# Add a dependency to a specific package
pnpm add <package> --filter @storyblok/react
# Run a script in a specific package
pnpm --filter @storyblok/react <script>Packages share a unified toolchain via Vite+ (vp CLI):
vp pack/vp buildfor bundling (tsdown / Vite under the hood)vp testfor testing (Vitest)vp lintfor linting (Oxlint via@storyblok/lint-config)vp fmtfor formatting (Oxfmt)
Framework-specific builders (Angular CLI, Nuxt module builder, svelte-package, Redocly) are kept where Vite+ doesn't apply.
Every package exposes the same canonical script names. See AGENTS.md for the full
table.
NX orchestrates tasks across the monorepo with caching and affected-only execution:
# Build all packages
pnpm nx run-many --target=build
# Build a specific package
pnpm nx build @storyblok/react
# Run all tests (or affected only)
pnpm test
pnpm nx affected --target=test
# Lint, format, type-check the whole repo
pnpm lint
pnpm format
pnpm test:types
# Watch-build a single package while developing
pnpm --filter @storyblok/react dev
# Re-run a package's tests on change
pnpm --filter @storyblok/migrations test:watch
# Show the dependency graph
pnpm nx graphFor more advanced NX usage:
For repository administrators, the internal monoblok CLI helps manage the monorepo (license
checks, migration helpers, etc.). See tools/monoblok for details.
We welcome contributions! Please see our Contributing Guide for details on:
- Code style and standards
- Pull request process
- Development workflow
- Testing requirements
This project is licensed under the MIT License - see the LICENSE file for details.