A path repository, for the package you are writing today

A path repository symlinks a local directory into vendor, so a change to the package is visible immediately without a version, a tag or a push.

{
  "repositories": [
    { "type": "path", "url": "../turkerdev-orders" }
  ],
  "require": { "turkerdev/orders": "*" }
}

// composer symlinks rather than copying, when it can.
// "options": { "symlink": false } forces a copy, which is
// what a Docker build usually needs.

The symlink is what makes it useful and what breaks in a container, because the target is outside the build context — which is why the copy option exists and why a development compose file usually mounts the package directory instead. The repository entry must be removed before release, and a lock file committed with a path repository in it will fail on every machine that does not have the directory.