A monorepo containing Combino and its official plugins.
packages/combino
- The main Combino scaffolding tool
packages/plugins/ejs
- @combino/plugin-ejs - EJS template engine pluginpackages/plugins/eta
- @combino/plugin-eta - ETA template engine pluginpackages/plugins/edge
- @combino/plugin-edge - Edge.js template engine pluginpackages/plugins/ejs-mate
- @combino/plugin-ejs-mate - EJS-Mate template engine plugin with layout supportpackages/plugins/strip-ts
- @combino/plugin-strip-ts - TypeScript stripping plugin
- Node.js 18+
- npm 10+
# Install dependencies
npm install
# Build all packages
npm run build
# Run tests
npm run test
# Watch mode for development
npm run build:watch
npm run build
- Build all packagesnpm run test
- Run tests for all packagesnpm run lint
- Lint all packagesnpm run format
- Format all packagesnpm run clean
- Clean build artifacts
Each plugin follows a standard structure:
packages/plugins/[plugin-name]/
├── src/
│ └── index.ts # Main plugin code
├── dist/ # Built files (auto-generated)
├── package.json # Plugin package configuration
├── tsconfig.json # TypeScript configuration
└── README.md # Plugin documentation
- Create a new directory in
packages/plugins/
- Copy the structure from an existing plugin
- Update
package.json
with your plugin details - Implement the plugin interface in
src/index.ts
- Add tests and documentation
All plugins must implement the Combino plugin interface:
export interface Plugin {
discover?: (context: any) => Promise<any> | any;
compile?: (context: any) => Promise<any> | any;
assemble?: (context: any) => Promise<any> | any;
output?: (context: any) => Promise<void> | void;
}
# Publish all plugins
npm run publish:plugins
# Or publish individual plugins
npm publish --workspace=@combino/plugin-ejs
This monorepo uses Changesets for version management:
# Create a changeset
npm run changeset
# Version packages
npm run version
# Publish packages
npm run release
MIT