Manage Drupal with Composer or Drush

We have a dilemma, we do.

Do we manage our Drupal 8 site with Drush or Composer?  We use Git for Version Control, and there are problems.

  • Composer is becoming the preferred method to install Modules and Themes, and will probably be the only way for Drupal 9.
    The main advantage of using Composer is that when you install a Module or Theme it will also install any dependencies eg. libraries.
    The main disadvantage we can find is that when you install a Module or Theme there will be a Git repo included as well. This has the effect of creating a Git Submodule. The contents of any folder below your Site Repo containing a Git repo will be ignored in a commit, so will not be pushed to origin, and not pulled to Dev or Production. Mmmmmm....
    To Remove a Module or Theme in Composer you need to issue the command composer remove <item> and the item will be deleted from he site. This is only one step.
     
  • Drush works, it is fast, but not perfect.
    The main advantage of using Drush is that when installing a Module or Theme it is fast and easy. Usually!
    The main disadvantage we can find is that when you install a Module or Theme which requires a library then you have to manually install that as well.
    To Remove a Module or Theme in Drush you need to disable it, then manually remove it from the site using the command line. This is two steps.