Roots Discourse

Bedrock and Wordmove — what to include in push?

Hello everyone, since (partially) moving to an Apple M1 laptop I’ve had to find a replacement for VVV as a local environment and I’m using the opportunity to re-think my local and remote deployment workflow. I would like to write up a small guide to share with everyone (probably on dev.to), but want to make sure the whole thing is sound first.

Background

Basically I use Laravel Valet for my local environment (here’s a good guide on how to install it + homebrew on the m1), download bedrock via composer, use that as my development environment and then use wordmove to push / pull to staging / production. I would maintain the composer.json only locally, require everything there and then push accordingly.

There are advantages and disadvantages to this compared to Trellis / VVV (most of all parity), if anybody is interested in getting into the details let me know.

Wordmove — My Question

Anyways, on to my question: how to best push a local bedrock install to a production / staging site. I could either push the bedrock folder including the vendor, config and web folders and exclude the .env, composer.json, composer.lock or manually copy everything above the /web/ folder and merely push / pull the /web/ folder.

My abbreviated movefile.yml (WIP) looks something like this now:

local:
  vhost: http://<local_site>.test
  wordpress_path: <path_to_bedrock_folder>

  database:
    name: <local_db>
    user: <local_user>
    password: "<local_pw>"
    host: localhost

  paths:
    wp_content: web/wp/wp-content
    uploads: web/app/uploads
    plugins: web/app/plugins
    mu_plugins: web/app/mu-plugins
    themes: web/app/themes
    languages: web/app/languages

Alternatively I could point the wordpress_path not to the bedrock folder but the /web/ folder and change paths accordingly:

  paths:
    wp_content: wp/wp-content
    uploads: app/uploads
    plugins: app/plugins
    mu_plugins: app/mu-plugins
    themes: app/themes
    languages: app/languages

I would then have to either download bedrock via composer on my staging / production server and Push (mirror) from local, this would take care of everything above /web/ or simply manually copy the necessary folders (which I assume are vendor and config).

I am also open to ideas of any kind on how to improve this.

Kind regards,
Martin