β‘οΈ Framework for distributed commands on Yargs β‘οΈ
π Production Ready: Battle-tested framework used in production environments
π TypeScript: Full TypeScript support with strict type checking
β‘ Fast: Optimized for performance with minimal overhead
π§ Modular: Use only what you need, tree-shakeable packages
π¦ Well Documented: Comprehensive documentation and examples
π― Focused: Essential functionality without bloat
| Package | Version | Size | Description |
|---|---|---|---|
| ycmd | CLI framework for distributed commands on Yargs | ||
| @ycmd/commands | CLI commands for Ycmd framework (build, test, release, etc.) | ||
| @ycmd/creds | CLI tool for managing GitHub / GitLab secrets and credentials | ||
| @ycmd/spreadsheet | Download and convert Google Spreadsheets to various formats | ||
| @ycmd/run | Command execution utilities for Ycmd framework | ||
| @ycmd/spawn | Enhanced child process spawning with logging and error handling | ||
| @ycmd/helpers | Helper utilities for creating CLI applications with Ycmd framework | ||
| @ycmd/utils | Utility functions for Ycmd framework |
# pnpm
pnpm add -g ycmd
# yarn
yarn global add ycmd
# npm
npm i -g ycmdYcmd automatically discovers commands from multiple locations:
./scriptsdirectory./node_modules/ycmd/scriptsdirectory- Custom script directories configured in
ycmd.config.tsorpackage.json
# Run any discovered command
ycmd build
ycmd test
ycmd devYou can use ycmd with file configurations or in a property inside your package.json, and you can even use TypeScript and have type-safety while you are using it.
INFO: Most of these options can be overwritten using the CLI options
You can use any of these files:
ycmd.config.tsycmd.config.jsycmd.config.cjsycmd.config.jsonycmdproperty in yourpackage.json
INFO: In all the custom files you can export the options either as
ycmd,defaultormodule.exports =
You can also specify a custom filename using the --config flag, or passing --no-config to disable config files.
{
"ycmd": {
"concurrency": 20,
"scripts": [
"./scripts",
"./node_modules/ycmd/scripts"
]
}
}export default {
concurrency: 20,
scripts: [
"./scripts",
"./node_modules/ycmd/scripts"
]
}- Command Discovery - Automatically discovers commands from multiple directories
- Type-safe - Full TypeScript support with type checking
- Flexible - Works with JavaScript, TypeScript, and shell scripts
- Configurable - Multiple configuration options (file-based, package.json, CLI flags)
- Build Commands - TypeScript, Babel, SWC, Docker, NestJS, and more
- Development Commands - Watch mode, hot reload, development server
- Testing Commands - Jest, ESLint, Uvu, Size Limit
- Release Commands - Version bumping, changelog generation, publishing
- GitHub Integration - Manage GitHub secrets and variables
- GitLab Integration - Manage GitLab secrets and variables
- Encryption - Secure credential storage with libsodium
- Recursive Mode - Manage credentials across monorepo packages
- Google Sheets - Download and convert Google Spreadsheets
- Multiple Formats - CSV, JSON, YAML, and more
- Data Transformation - Transform data with custom schemas
- Type Safety - Full TypeScript support with Zod validation
- Command Execution - Execute commands with proper error handling
- Monorepo Support - Run commands across monorepo packages
- Parallel Execution - Run multiple commands in parallel
- Shell Integration - Execute shell commands with proper logging
- Enhanced Spawning - Improved child process spawning
- Logging - Built-in logging for stdout and stderr
- Error Handling - Proper error handling and reporting
- Silent Mode - Support for silent execution
- CLI Creation - Utilities for creating CLI applications
- Option Loading - Load and parse CLI options
- Error Handling - Standardized error handling
- Info Printing - Print formatted information and logos
- Path Utilities - File and directory path utilities
- File System - File system operations
- Project Information - Get project metadata and information
- Configuration - Load and parse configuration files
- Environment - Environment variable utilities
- Logging - Logging utilities
# Install dependencies
pnpm install
# Build all packages
pnpm run build
# Run tests
pnpm run test
# Start development mode
pnpm run dev
# Release packages
pnpm run releaseContributions are welcome! Please feel free to submit a Pull Request.
- Fork it (https://github.com/ycmds/ycmd/fork)
- Create your feature branch (
git checkout -b features/fooBar) - Commit your changes (
git commit -am 'feat: Add some fooBar') - Push to the branch (
git push origin features/fooBar) - Create a new Pull Request
MIT Β© Igor Suvorov
@ycmd β Framework for distributed commands on Yargs π―
