Quick start
Create the plugin file
Create a Fallow auto-discovers
fallow-plugin-<name>.jsonc file in your project root:fallow-plugin-* files in your project root.Configure the fields
Customize the plugin fields for your framework. Only
name is required. Add the fields relevant to your use case.Required
| Field | Type | Description |
|---|---|---|
name | string | Unique plugin name (shown in fallow list --plugins) |
Optional
| Field | Type | Description |
|---|---|---|
enablers | string[] | Package names that activate this plugin |
entryPoints | string[] | Glob patterns for entry point files |
configPatterns | string[] | Glob patterns for config files (always-used) |
alwaysUsed | string[] | Files always considered used |
toolingDependencies | string[] | Packages used via CLI, not imports |
detection | object | Rich activation logic (see below) |
usedExports | object[] | Exports always considered used |
Supported formats
| Format | Extension | Comments |
|---|---|---|
| JSONC | .jsonc | // and /* */ |
| JSON | .json | No |
| TOML | .toml | # |
Detection strategies
Plugins can use simple enablers or rich detection logic with boolean combinators.Simple detection (enablers)
Simple detection (enablers)
The simplest way to activate a plugin. Package names are checked against A trailing
package.json. The plugin activates if any enabler matches:/ enables prefix matching, so @myorg/ matches any package in the @myorg scope.File-based detection
File-based detection
Activate a plugin when specific config files exist in the project:
Combined detection (boolean logic)
Combined detection (boolean logic)
Combine multiple conditions with This plugin only activates when both
all (AND), any (OR), or not:@my-org/core is installed and a my-org.config.* file exists.Used exports
Mark specific exports as always-used for convention-based frameworks where exports are consumed by name at runtime:Discovery order
Fallow searches for plugin files in this order:- Explicit paths from the
pluginsconfig field .fallow/plugins/directory- Project root:
fallow-plugin-*.{jsonc,json,toml}files
Using the plugins config field
Examples
React Router
Internal tooling
External plugins cover the vast majority of use cases. AST-based config parsing (like the built-in ESLint or Vite plugins do) requires a built-in Rust plugin.
JSON Schema
Generate the schema locally for IDE autocomplete:See also
Built-in plugins
Browse the 84 built-in framework plugins.
fallow list
Verify active plugins and inspect project metadata.