Skip to content

feat: monorepo β€” each command as an independent workspace package - #32

Draft
agrublev with Copilot wants to merge 2 commits into
monofrom
copilot/separate-monorepo-items
Draft

feat: monorepo β€” each command as an independent workspace package#32
agrublev with Copilot wants to merge 2 commits into
monofrom
copilot/separate-monorepo-items

Conversation

Copilot AI commented Jul 4, 2026

Copy link
Copy Markdown
Contributor

Splits the single-package repo into a Yarn workspaces monorepo where every command is an independently versioned/publishable package.

Layout

packages/
β”œβ”€β”€ core/           @fsr/core          shared utils, parsers, UI, running, plugins, cache
β”œβ”€β”€ cli/            fscr               bin entrypoint
β”œβ”€β”€ cmd-branch/     @fsr/cmd-branch
β”œβ”€β”€ cmd-commit/     @fsr/cmd-commit
β”œβ”€β”€ cmd-start/      @fsr/cmd-start     start / list / scripts
β”œβ”€β”€ cmd-run/        @fsr/cmd-run       run / run-s / run-p
β”œβ”€β”€ cmd-upgrade/    @fsr/cmd-upgrade
β”œβ”€β”€ cmd-bump/       @fsr/cmd-bump
β”œβ”€β”€ cmd-encryption/ @fsr/cmd-encryption
β”œβ”€β”€ cmd-generate/   @fsr/cmd-generate
β”œβ”€β”€ cmd-doctor/     @fsr/cmd-doctor
β”œβ”€β”€ cmd-completion/ @fsr/cmd-completion
β”œβ”€β”€ cmd-greet/      @fsr/cmd-greet
β”œβ”€β”€ cmd-clear/      @fsr/cmd-clear
└── cmd-plugins/    @fsr/cmd-plugins

Key changes

  • Root package.json: private: true, workspaces: ["packages/*"]; existing deps hoisted to root
  • @fsr/core: all lib/ internals extracted; exports a flat public API (fsrLog, parseScriptFile, loadPlugins, etc.)
  • Command packages: each exports a command definition object { cmd, desc, builder?, handler, examples?, menu? } (arrays for multi-sub-command packages); all cross-package imports use @fsr/core named exports
  • packages/cli: publishable fscr package; assembles COMMANDS from @fsr/cmd-* imports
  • Root index.js: unchanged public behaviour β€” now delegates entirely to package imports
  • vitest.config.js: path aliases for all @fsr/* packages + esbuild JSX config for .js files containing JSX
  • scripts/bun.build.mjs: alias map updated to resolve @fsr/* during bundling
  • lib/: preserved untouched; test files outside tests/index.test.js still import from it directly

Copilot AI changed the title feat: restructure into monorepo with separate packages per command feat: monorepo β€” each command as an independent workspace package Jul 4, 2026
Copilot AI requested a review from agrublev July 4, 2026 07:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants