Pricore can now serve several Composer packages from a single Git repository. You point it at the directories that hold them, and it builds a dist archive for each package.

New Features

  • Monorepo support (#176): Point Pricore at the directories where the composer.json files of a repository live. You can set these package paths when connecting the repository, or later from its Edit page. A path can be a directory (packages/billing), a wildcard (packages/*), or . for the root. Every tag yields a version for each package present at that tag. Subdirectory packages install from dist archives, so keep dist mirroring enabled. Changing the paths removes packages that are no longer selected and starts a full sync.
  • Forced sync from the CLI: php artisan sync:repository --force revisits every tag and branch, even when its commit has not changed.

Improvements

  • Removed packages: When a package's composer.json disappears from a branch or tag, that version is removed on the next sync. This also applies to single-package repositories. Other versions of the package are kept.
  • Invalid composer.json: A composer.json that fails to parse now skips only that package, and the package keeps its existing version. Other packages at the same tag or branch still sync.
  • Package name conflicts: A repository can no longer attach versions to a package name that already belongs to another repository or mirror in the organization. The sync now skips that package and logs a warning.
  • README links: README links and images in subdirectory packages resolve against the package's own directory. Links starting with / resolve against the repository root.

Fixes

  • Fixed a branch or tag without a composer.json on GitHub or GitLab failing the sync job instead of being skipped.
  • Fixed Composer continuing to offer a deleted version, because the package metadata still reported an unchanged Last-Modified date.
  • Fixed a Git clone reused between syncs serving outdated branches and missing new tags.