Skip to content

storyblok/pluginsblok

Repository files navigation

Storyblok Logo

Pluginsblok

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.

Follow @Storyblok Follow @Storyblok

πŸ“¦ Packages

This monorepo contains all official plugin Storyblok libraries, SDK, CLI and starter templates:

Core libraries and SDKs

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.

Starter Templates

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.

🚧 Migration Status

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

πŸ› οΈ Development

Prerequisites

  • Node.js (v22 or later)
  • pnpm (v10 or later)
  • Git

Setup

  1. Clone the repository:

    git clone https://github.com/storyblok/pluginsblok.git
    cd pluginsblok
  2. Install dependencies:

    pnpm install

Package Management with PNPM

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>

Development with NX

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

Common NX Commands

# 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

Development Workflows

# 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:types

For more advanced NX usage, we recommend exploring:

Repository Administration

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.

πŸ“„ Contributing

We welcome contributions! Please see our Contributing Guide for details on:

  • Code style and standards
  • Pull request process
  • Development workflow
  • Testing requirements

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ”— Links