Symlink plugins easily on composer events


Symlinked extensions is a new composer library I’ve recently released under the MIT license . The point of the project is to share replace a composer installed plugin or theme with a symlink to another directory. I use this so that I can easily work on the plugins concurrently with the website development. This is also enables sharing of plugins between projects. This comes in pretty handy when I try to fix various bugs I have encountered. Then I can fix in one place and can test it in numerous projects without having to push separate branch to the BitBucket or GitHub repository and then update the composer json for each project to try out the changes.

I also use the script in another scenario and that relates to commercial plugins. I store all commercial plugins in their own BitBucket repos but this seup makes it possible to easily update the local directory with latest version and try things out without having to push to a test branch on BitBucket.

The last scenario I use the script is symlinking development or test plugins without having to add to composer or symlink manually.

The configuration is pretty straightforward.

  "mu-plugins": {
    "target": "web/app/mu-plugins/",
    "src": []
  "plugins": {
    "target": "web/app/plugins/", //where the script should place plugin symlinks, if folder exists it is removed.
    "src": [
  "themes": {
    "target": "web/app/themes/",
    "src": [

Install it using composer require goose-studio/symlinked-extensions. You can find the code on GitHub.

Recent posts

Recommended Services

We use Cloudways to host this site