Usage
puck doctor # blockers before switching
puck install # install from composer.lock
puck install --no-dev # production install
puck install --offline # warm store only; no network
puck dump-autoload -o # regenerate optimized autoload
puck require vendor/package
puck remove vendor/package
puck update # refresh lock + install
puck upgrade # self-update from GitHub Releases
puck store path # print the global store path
puck store gc # garbage-collect unused store entriesTimings
Set PUCK_TIMINGS=1 to print phase timings on stderr (plan_ms, download_ms, extract_ms, overlap_ms, link_ms, dump_ms, ...).download_ms is a sum across concurrent fetches;overlap_ms is (download_ms + extract_ms) − wall (mostly HTTP concurrency).
What stays the same
composer.json/composer.lock: same format Composer readsvendor/: real directory (hardlink / reflink / copy from the store). Shared inodes mean edits undervendor/can change the store — do not hand-edit.- You can run Composer again on the same project after puck