{"action":"created","issue":{"url":"https://api.github.com/repos/composer/composer/issues/4011","labels_url":"https://api.github.com/repos/composer/composer/issues/4011/labels{/name}","comments_url":"https://api.github.com/repos/composer/composer/issues/4011/comments","events_url":"https://api.github.com/repos/composer/composer/issues/4011/events","html_url":"https://github.com/composer/composer/issues/4011","id":74034760,"number":4011,"title":"Support Development with local Dependencies","user":{"login":"gossi","id":283700,"avatar_url":"https://avatars.githubusercontent.com/u/283700?v=3","gravatar_id":"","url":"https://api.github.com/users/gossi","html_url":"https://github.com/gossi","followers_url":"https://api.github.com/users/gossi/followers","following_url":"https://api.github.com/users/gossi/following{/other_user}","gists_url":"https://api.github.com/users/gossi/gists{/gist_id}","starred_url":"https://api.github.com/users/gossi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gossi/subscriptions","organizations_url":"https://api.github.com/users/gossi/orgs","repos_url":"https://api.github.com/users/gossi/repos","events_url":"https://api.github.com/users/gossi/events{/privacy}","received_events_url":"https://api.github.com/users/gossi/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":3,"created_at":"2015-05-07T15:50:38Z","updated_at":"2015-05-08T14:11:02Z","closed_at":null,"body":"Hey guys,\r\n\r\nlet's face it, development with local dependencies is ... a nightmare. To clearify what I'm talking about. You write package A which depends on package B which you are parallely developing. There are some workarounds although they also have pitfalls. I summarized all this in a blog post: http://gos.si/blog/composer-development-with-local-dependencies\r\n\r\nI also have an idea what needs to be done to solve this issue (it's at the end of the article yet I repeat it here) which I put here for discussion:\r\n\r\nSimply spoken: “Hey composer, here are my local packages, whenever I try to install one of them (in a development version), point them there”. Your local development belongs to the developer and is very much different across developers. Every developer needs to describe its environment to its own composer installation. Luckily there is a global ~/composer.json that already manages global package installs. This can be used to tell composer about local packages. Something like this:\r\n\r\n```\r\n// ~/composer.json\r\n{\r\n  ..\r\n  \"extra\": {\r\n    \"packages\": {\r\n      \"\": \"path/to/packages\", // global location\r\n      \"<vendor>\": \"path/to/<vendor>\",\r\n      \"<vendor/pkg>\": \"this/is/somewhere/else\"\r\n    }\r\n  }\r\n  ..\r\n}\r\n```\r\n\r\nWhenever composer runs an update or install command, the first source to check for packages are those defined above. If they can’t be find locally, proceed with the current search progress. `composer.json` from local dependencies can be fetched from local sources and changed dependencies can be applied on either install or update. Locally defined packages are always symlinked to their desired location (that given, custom installers still work as expected), almost eliminating the need for composer update on code changes from local dependencies.\r\n\r\nRefs: #1299 #1017 #3658 #601 #2171 #3254"},"comment":{"url":"https://api.github.com/repos/composer/composer/issues/comments/100243552","html_url":"https://github.com/composer/composer/issues/4011#issuecomment-100243552","issue_url":"https://api.github.com/repos/composer/composer/issues/4011","id":100243552,"user":{"login":"aderuwe","id":1125184,"avatar_url":"https://avatars.githubusercontent.com/u/1125184?v=3","gravatar_id":"","url":"https://api.github.com/users/aderuwe","html_url":"https://github.com/aderuwe","followers_url":"https://api.github.com/users/aderuwe/followers","following_url":"https://api.github.com/users/aderuwe/following{/other_user}","gists_url":"https://api.github.com/users/aderuwe/gists{/gist_id}","starred_url":"https://api.github.com/users/aderuwe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aderuwe/subscriptions","organizations_url":"https://api.github.com/users/aderuwe/orgs","repos_url":"https://api.github.com/users/aderuwe/repos","events_url":"https://api.github.com/users/aderuwe/events{/privacy}","received_events_url":"https://api.github.com/users/aderuwe/received_events","type":"User","site_admin":false},"created_at":"2015-05-08T14:11:02Z","updated_at":"2015-05-08T14:11:02Z","body":"Yup. So you remove the custom namespace mapping at that point - I don't see what's different between that and removing your special key in \"extra\" ..."}}