A monorepo that consolidates all plugins related open source projects from the Storyblok organization. This project aims to centralize the development, maintenance, and contribution to Storyblok's ecosystem of plugin libraries, SDK, CLI and starter templates.
This monorepo contains all official plugin Storyblok libraries, SDK, CLI and starter templates:
| Package | Description | Version | Downloads |
|---|---|---|---|
| @storyblok/app-extension-auth | A JavaScript library for managing authentication for Storyblok plugins. | ||
| @storyblok/field-plugin | Core JavaScript library for developing Storyblok Field Plugins. | ||
| @storyblok/field-plugin-cli | A CLI package that helps you create and deploy Field Plugins. |
| Package | Description |
|---|---|
| Field Plugin samples | A collection of Custom FieldType plugins by the community. |
| Tool & Space Plugin starters | A collection of starter templates for Storyblok Tool and Space Plugins. |
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 (v22 or later)
- pnpm (v10 or later)
- Git
-
Clone the repository:
git clone https://github.com/storyblok/pluginsblok.git cd pluginsblok -
Install dependencies:
pnpm install
This repository uses PNPM as its primary package manager, providing efficient dependency management and disk space usage. The workspace is configured in pnpm-workspace.yaml and includes all packages in the packages/ directory.
Common PNPM commands:
# Install dependencies
pnpm install
# Add a dependency to a specific package
pnpm add <package> --filter @storyblok/field-plugin
# Run a script in a specific package
pnpm --filter @storyblok/field-plugin <script>While PNPM manages our packages, we use NX to optimize our development workflow. NX provides powerful features for:
- Intelligent caching
- Affected package detection
- Dependency graph visualization
- Parallel task execution
- Project-specific configurations
# Build all packages
pnpm build
# Build a specific package
pnpm nx run @storyblok/field-plugin:build
# Run tests for affected packages
pnpm nx affected:test
# Show dependency graph
pnpm nx graph
# Show scripts for a specific project
pnpm nx show project @storyblok/field-plugin
# Run commands only on affected packages
pnpm nx affected --target=build# Start development mode for a package
pnpm nx run @storyblok/field-plugin:dev
# Run tests in watch mode
pnpm nx run @storyblok/field-plugin:test:watch
# Lint all packages
pnpm lint
# Format all packages
pnpm nx run-many --target=format
# Check types
pnpm nx run-many --target=test:typesFor more advanced NX usage, we recommend exploring:
For repository administrators, we provide the pluginsblok-cli tool to help manage the monorepo. This tool assists with:
- Package migration
- Dependency management
- Repository maintenance
- Release coordination
See the pluginsblok-cli tool for detailed documentation and usage instructions.
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.