{"id":13653977,"url":"https://github.com/bradp/vv","last_synced_at":"2025-09-29T20:30:54.332Z","repository":{"id":24451887,"uuid":"27854470","full_name":"bradp/vv","owner":"bradp","description":":globe_with_meridians: Variable VVV - a VVV Site Creation Wizard.‎ ‎ ‎ ‎  ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎  ‎  ‎ ‎ ‎ ‎ ‎ ‎ ‎  ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎  ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ :x: This project is no longer maintained. Please update your copy of VVV , which has most of the vv features built in.","archived":true,"fork":false,"pushed_at":"2017-09-08T05:10:02.000Z","size":639,"stargazers_count":1000,"open_issues_count":42,"forks_count":89,"subscribers_count":59,"default_branch":"master","last_synced_at":"2024-12-19T17:03:16.499Z","etag":null,"topics":["local-development","varying-vagrant-vagrants","vv","vvv","wordpress"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bradp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-12-11T04:43:23.000Z","updated_at":"2024-11-25T15:36:21.000Z","dependencies_parsed_at":"2022-07-19T23:17:58.985Z","dependency_job_id":null,"html_url":"https://github.com/bradp/vv","commit_stats":null,"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradp%2Fvv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradp%2Fvv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradp%2Fvv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradp%2Fvv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bradp","download_url":"https://codeload.github.com/bradp/vv/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234659851,"owners_count":18867628,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["local-development","varying-vagrant-vagrants","vv","vvv","wordpress"],"created_at":"2024-08-02T02:01:21.416Z","updated_at":"2025-09-29T20:30:49.033Z","avatar_url":"https://github.com/bradp.png","language":"Shell","funding_links":[],"categories":["Dev Tools"],"sub_categories":[],"readme":"# Variable VVV - The Best VVV Site Wizard\n\n\t ██    ██ ██    ██\n\t░██   ░██░██   ░██     Variable VVV 1.12\n\t░░██ ░██ ░░██ ░██\n\t ░░████   ░░████       The easiest way to set up\n\t  ░░██     ░░██        WordPress sites with VVV!\n\t   ░░       ░░\n\n\n`vv` makes it extremely easy to create a new WordPress site using [Varying Vagrant Vagrants](https://github.com/Varying-Vagrant-Vagrants/VVV). `vv` supports site creation with many different options; site blueprints to set up all your plugins, themes, and more; deployments; and lots more features.\n\n[![Travis](https://img.shields.io/travis/bradp/vv.svg)](https://travis-ci.org/bradp/vv)\n\n*Tired of the time it takes to do a `vagrant provision` or create new sites?* Check out [flip](https://github.com/bradp/vvv-provision-flipper), a simple utility to solve that issue.\n\n# Table of Contents\n\n- [Installation](#installation)\n  - [OS X Installation](#os-x-installation)\n  - [Windows Installation](#windows-installation)\n  - [Linux Installation](#linux-installation)\n- [Adding tab-completion to vv](#adding-tab-completion-to-vv)\n- [Updating](#updating)\n- [Usage](#usage)\n- [Site Creation](#site-creation)\n  - [Subdomain Multisite Installation](#subdomain-multisite-installation)\n- [Site Deletion](#site-deletion)\n- [Deployments](#deployments)\n- [Advanced Usage](#advanced-usage)\n  - [Airplane Mode](#airplane-mode)\n  - [Flags](#flags)\n- [Blueprints](#blueprints)\n  - [Blueprints for Multisite configurations](#blueprints-for-multisite-configurations)\n  - [Blueprints for Multi-Network configurations](#blueprints-for-multi-network-configurations)\n- [Vagrant Proxy](#vagrant-proxy)\n- [vv Options](#vv-options)\n  - [Commands](#commands)\n  - [Options for Site Creation](#options-for-site-creation)\n  - [Options for Site Removal](#options-for-site-removal)\n  - [Options for Deployment Setup](#options-for-deployment-setup)\n- [.vv-config](#vv-config)\n- [vv Hooks](#vv-hooks)\n- [Thanks](#thanks)\n\n## Installation\n\n### OS X Installation\n\nIf you have [Homebrew](http://brew.sh/) installed, you run the following in your terminal application:\n\n\t$ brew install bradp/vv/vv\n\nOtherwise, clone this repositoy and edit your `$PATH` to include the `vv` core file:\n\n1. Clone this repo: `git clone https://github.com/bradp/vv.git`\n1. Add the `vv` core script to your shell's `$PATH`:\n    * If you're using `bash`: ``touch ~/.bash_profile \u0026\u0026 echo \"export PATH=\\$PATH:`pwd`/vv\" \u003e\u003e ~/.bash_profile``\n\n### Windows Installation\n\n* Clone `vv` to a folder somewhere.\n\n    `$ git clone https://github.com/bradp/vv.git`\n\n* Add that folder to your system path. See [here](http://windowsitpro.com/systems-management/how-can-i-add-new-folder-my-system-path) if you need help.\n\n* Open an explorer window and go to My Computer (or This PC).\n* Right click and choose properties\n* Choose Advanced System Settings\n* Choose Environmental Variables form the Advanced Tab\n* Choose the \"Path\" variable and edit it.\n* Add a semicolon to end the previous path item and then add the `vv` folder path (Example: `;C:\\Users\\Name\\Documents\\vv`)\n* Open Git Bash and run `vv`\n\nAlternately, you can use cmd.exe with `bash vv`.\n\nProps to [Vinsanity](https://github.com/Vinsanity) for these instructions. If you're having issues, please see [this issue](https://github.com/bradp/vv/issues/33).\n\n### Linux Installation\n\n* Clone vv into a folder.\n\n    `$ git clone https://github.com/bradp/vv.git`\n\n* Access the directory that you cloned vv into.\n\n* Copy the vv executable to /usr/local/bin\n\n    `$ sudo cp vv /usr/local/bin`\n\n* You should now be able to easily run vv from anywhere in your system.\n\n## Adding tab-completion to `vv`\n\nCurrently, `vv` supports tab-completion of arguments and options in both bash and ZSH. To enable this, you'll first want to make sure you're on the most current version of `vv`. Then simply add `source $( echo $(which vv)-completions)` to the end of your .bash_profile, .bashrc or .zshrc.\n\n## Updating\n\nvv is currently under development, and you'll probably want the latest and greatest version at all times.\n\nYou can run `vv --update` to update to the latest version. This will update via Homebrew if you've installed it that way, otherwise vv will bootstrap an update on where ever you've installed it.\n\nvv will automatically check for updates and update itself once a week. You can disable this by adding `\"auto_update_disable\": false` to the JSON config in `~/.vv-config`.\n\nIf you have trouble updating, you may want to try some of the options below:\n\nHomebrew sometimes caches a version of Variable VV causing you to receive a message saying you are out of date with the Github version, however running `vv --update` simply downloads a version you already have installed. In cases like this, there are two safe options you can try.\n\nFirst, and simplest, run `vv --force-update`. Second, if that does not work you can safely uninstall Variable VV and re-install it via homebrew, you can do this with these commands: `brew remove vv` then `brew untap bradp/vv` and finally, run the install command `brew install bradp/vv/vv`as mentioned above. You will not lose any settings or sites.\n\n## Usage\n\nOnce installed, you can run `vv` anywhere you'd like. If vv can't automatically find your VVV installation, you will be prompted for the path. It will also save this into a configuration file in `~/.vv-config`, so you won't be prompted again.\n\nAt any time, you can run `vv` or `vv --help` to see a list of all possible options and flags.\n\nvv will prompt you for a value for any required flags that were not specified.\n\nThe main commands are `list`, `create`, `delete`. These will list your sites, create a site, and delete a site. These each have a few aliases, so for example, if you run `vv show`, vv will know you meant `vv list`.\n\nTo start creating a site, simply do `vv create` ( you can also do `vv --create`, or simply `vv -c`). You will then be prompted for all required options.\n\nAll options and flags are [listed below](#vv-options).\n\n## Site Creation\n\n`vv create`\n\nCreating a site does the following:\n\n* Halts Vagrant (if running)\n* Creates a web root for the site in the `www` folder containing three files: `vvv-init.sh`, `wp-cli.yml`, and `vvv-hosts`\n\t* `vvv-init.sh` tells Vagrant to create a database if one does not exist and install the latest version of WordPress (via WP-CLI) the next time Vagrant is provisioned\n\t* `wp-cli.yml` tells WP-CLI that WordPress is in the htdocs folder\n\t* `vvv-hosts` contains the hosts entry to give your site a nice custom domain (the domain is set in the wizard)\n* Creates a file in the `nginx-config` folder to handle server settings for your site\n* Restarts Vagrant with `vagrant up --provision`\n\nProvisioning Vagrant takes a couple of minutes, but this is a crucial step as it downloads WordPress into your site's htdocs directory and runs the installation. If you want to skip provisioning and install WordPress manually, you can run the new site's `vvv-init.sh` file directly in the Vagrant shell.\n\n### Subdomain Multisite Installation\n\nIf you are using a subdomain multisite, you must edit vvv-hosts file inside of that site's folder with each subdomain on a new line. For example:\n\n \u003e mysite.dev\n\n \u003e siteA.mysite.dev\n\n \u003e siteB.mysite.dev\n\n\nAfter this, run `vagrant reload --provision` and your subdomains should resolve. *Please note*, any sites set up prior to version 1.7.3 will need more configuration for this, either delete and re-set up the site or [ping me on Twitter](http://twitter.com/bradparbs) for help.\n\n## Site Deletion\n\n`vv delete site_name`\n\nYou can also leave off site_name to be prompted for it.\n\nDeleting a site does the following:\n\n* Halts Vagrant (if running)\n* Deletes the site's web root (which deletes the `vvv-init.sh`, `wp-cli.yml`, and `vvv-hosts` files as well)\n* Deletes the file in the `nginx-config` folder pertaining to the site\n* Deletes the database associated with the site\n\n## Deployments\n\n`vv deployment-create`, `vv deployment-remove`, `vv deployment-config`\n\nvv supports setting up deployments that work with [Vagrant Push](https://docs.vagrantup.com/v2/push/index.html). You'll need to be on version 1.7.0 or later of Vagrant. Simply run `vv --deployment-create` and walk through the wizard.\n\nTo deploy a site, you can do `vv vagrant push \u003csitename\u003e-\u003cdeployment_name\u003e`.\n\nWhen removing a deployment, your current Vagrantfile will be backed up as Vagrantfile-backup.\n\n\n## Advanced Usage\n\n### Airplane Mode\n\nUsing `x` as the first argument with `vv` will force airplane mode. This will cut off update checks on usage. This is useful if you're using `vv` without an internet connection. The provision state of VVV will probably fail at some point, though.\n\n### Flags\nAnything that vv prompts you for, you can pass in as an argument. Most of this is realized in the site creation. In fact, there are a few arguments you can pass in that aren't prompted. This gives you total control over creating a new site.\n\nTo create a new site named 'mysite' that has the domain 'mysite.dev' and is a multisite with subdomains, with `WP_Debug` turned on would be:\n\n`vv create -d mysite.dev -n mysite -m subdomains -x`\n\nOr, the more readable version with all expanded flags.\n\n`vv create --domain mysite.dev --name mysite --multisite subdomains --debug`\n\nTo use a custom database prefix, simply use the `vv create --prefix myprefix` when creating a new site.\n\n## Blueprints\n\nBlueprints allow you to set up different plugins, themes, mu-plugins, options, widgets, menus, or constants that will be installed to a new site you create. First, run `vv --blueprint-init` to have vv create a `vv-blueprints.json` file in your VVV directory. You can edit this file to create and set up different blueprints.\n\nA simple blueprint should look like this:\n```json\n{\n  \"sample\": {\n    \"themes\": [\n      {\n        \"location\": \"automattic/_s\",\n        \"activate\": true\n      }\n    ],\n    \"mu_plugins\": [\n      {\n        \"location\": \"https://github.com/WebDevStudios/WDS-Required-Plugins.git\"\n      }\n    ],\n    \"plugins\": [\n      {\n        \"location\": \"https://github.com/clef/wordpress/archive/master.zip\",\n        \"version\": null,\n        \"force\": false,\n        \"activate\": true,\n        \"activate_network\": false\n      },\n      {\n        \"location\": \"cmb2\",\n        \"version\": \"2.0.5\",\n        \"force\": false,\n        \"activate\": true,\n        \"activate_network\": false\n      }\n    ],\n    \"options\": [\n      \"current_theme::_s\"\n    ],\n    \"widgets\": [\n      {\n        \"name\": \"meta\",\n        \"location\": \"sidebar-1\",\n        \"position\": 1,\n        \"options\": {\n          \"title\": \"Site login or logout\"\n        }\n      },\n      {\n        \"name\": \"text\",\n        \"location\": \"sidebar-2\",\n        \"position\": 4,\n        \"options\": {\n          \"title\": \"Hello world.\",\n          \"text\": \"I'm a new widget.\"\n        }\n      }\n    ],\n    \"menus\": [\n      {\n        \"name\": \"Example Menu\",\n        \"locations\": [\n          \"primary\",\n          \"social\"\n        ],\n        \"items\": [\n          {\n            \"type\": \"post\",\n            \"post_id\": 2,\n            \"options\": {\n              \"title\": \"Read the 'Sample Post'\"\n            }\n          },\n          {\n            \"type\": \"custom\",\n            \"title\": \"Our Partner Site\",\n            \"link\": \"//example.com/\",\n            \"options\": {\n              \"description\": \"Check out our partner's awesome website.\"\n            }\n          },\n          {\n            \"type\": \"term\",\n            \"taxonomy\": \"category\",\n            \"term_id\": 1,\n            \"options\": {\n              \"title\": \"Example category\"\n            }\n          }\n        ]\n      }\n    ],\n    \"demo_content\": [\n      \"link::https://raw.githubusercontent.com/manovotny/wptest/master/wptest.xml\"\n    ],\n    \"defines\": [\n      \"WP_CACHE::false\"\n    ]\n  }\n}\n\n```\n\nFor themes, plugins, and mu-plugins, you can use:\n\n* Github username/repo\n* Full git url\n* Url to zip file\n* WordPress.org slug\n\nThe options for plugins, themes, widgets, and menus correspond to the equivalent [WP CLI](http://wp-cli.org) option.\n\nFor options, demo content, and constants, please note the `::` as a separator between the key and value.\n\nCustom demo content can be imported through the blueprint. Be sure to use a link that points to just the xml code, like [this](https://raw.githubusercontent.com/manovotny/wptest/master/wptest.xml). You can add as many demo content files as you'd like, just separate each line with a comma as usual.\n\nA multisite's Network Settings can be configured using a `network_options` array in the blueprint.\n\nYou can create as many named blueprints in this file as you would like, all with as many different settings as you'd like.\n\nWhen creating a site, the name you've specified (in this example, \"sample\") is what you'll need to specify to use this blueprint.\n\nYou can use 'SITENAME' or 'SITEDOMAIN' anywhere in the blueprint, and that will be replaced with the actual site name or local domain when installing.\n\n### Blueprints for Multisite configurations\n\nBlueprints also let you set up individual subsites in a Multisite network. For example, you can define a blueprint for a multisite network in which certain plugins or themes are activated across the whole network, or just for specific subsites.\n\nTo add multisite support to your blueprint, add a `sites` key to a specific blueprint, like this:\n\n```json\n\"sites\": {\n  \"site2\": {\n    \"plugins\": [\n      \"...(same as above)...\"\n    ]\n  }\n}\n```\n\nThe `sites` object holds a subsite definition, which has the same capabilities as a regular site's blueprint (so `plugins`, `themes`, etc. are all the same), and also includes keys for [WP-CLI's `wp site create` command](http://wp-cli.org/commands/site/create/). For example, to create a subsite whose slug is `subsite2`, titled \"Second Subsite\" with an admin email address of `subsite2admin@localhost.dev` with `robots.txt` exclusions, use:\n\n```json\n\"sites\": {\n  \"subsite2\": {\n    \"title\": \"Second Subsite\",\n    \"email\": \"subsite2admin@localhost.dev\"\n  }\n}\n```\n\nIf your multisite network uses subdomains, you can include a blueprint-level key named like `BLUEPRINT_NAME::subdomains` to have `vv` configure your subdomains for you. `BLUEPRINT_NAME` should match the name of your blueprint, and the value should be a space-separated list of subdomains that match your subsite slugs. A complete example for the `sample` blueprint shown above using subdomain-based multisite configurations might look like this:\n\n```json\n{\n  \"sample\": {\n    \"sample::subdomains\": \"site2 site3\",\n    \"sites\": {\n      \"site2\": {\n        \"title\": \"Child Site (subsite2)\",\n        \"plugins\": [\n          {\n            \"location\": \"buddypress\",\n            \"activate\": true\n          }\n        ]\n      },\n      \"site3\": {\n        \"title\": \"Private Child Site\",\n        \"private\": true,\n        \"email\": \"site2admin@local.dev\",\n        \"themes\": [\n          {\n            \"location\": \"https://github.com/glocalcoop/anp-network-main-child/archive/master.zip\",\n            \"activate\": true\n          }\n        ]\n      }\n    },\n    \"themes\": [\n      {\n        \"location\": \"automattic/_s\",\n        \"enable_network\": true\n      },\n      {\n        \"location\": \"glocalcoop/anp-network-main-v2\",\n        \"activate\": true\n      }\n    ],\n    \"mu_plugins\": [\n      {\n        \"location\": \"https://github.com/WebDevStudios/WDS-Required-Plugins.git\"\n      }\n    ],\n    \"plugins\": [\n      {\n        \"location\": \"https://github.com/clef/wordpress/archive/master.zip\",\n        \"version\": null,\n        \"force\": false,\n        \"activate\": true,\n        \"activate_network\": false\n      },\n      {\n        \"location\": \"cmb2\",\n        \"version\": \"2.0.5\",\n        \"force\": false,\n        \"activate\": true,\n        \"activate_network\": false\n      },\n    ],\n    \"demo_content\": [\n      \"link::https://raw.githubusercontent.com/manovotny/wptest/master/wptest.xml\"\n    ],\n    \"defines\": [\n      \"WP_CACHE::false\"\n    ]\n  }\n}\n```\n\nThe above installs [BuddyPress](https://buddypress.org/) but activates it only for `site2`, enables the `_s` theme for the entire network but activates `anp-network-main-v2` for the network's main site and `anp-network-main-child` for `site3`, which is also given its own site admin user.\n\nBe sure to run `vv` with the `--multisite subdomain` option when you use a blueprint like this.\n\n### Blueprints for Multi-Network configurations\n\nIn addition to a [multisite configuration](#blueprints-for-multisite-configurations), VV recognizes blueprints that will configure a WP Multi-Network (a network of WP Multisite networks). VV's Multi-Network blueprints work just like Multisite blueprints, but have the following required additions:\n\n* A `BLUEPRINT_NAME::subnetwork_domains` key must be present listing the root domains for each network.\n* A `networks` object must be present, whose keys match the domains listed in the `BLUEPRINT_NAME::subnetwork_domains` member.\n\nFor example, this Multi-Network configuration defines two WP Multisite subnetworks (for a total of three WP Multisites) in the blueprint called `multinet`.\n\n```json\n{\n  \"multinet\": {\n    \"multinet::subdomains\": \"site2 site3\",\n    \"multinet::subnetwork_domains\": \"wpsubnet1.dev wpsubnet2.dev\",\n    \"networks\": {\n      \"wpsubnet1.dev\": {\n        \"path\": \"/\",\n        \"site_name\": \"WP Subnetwork Example 1\"\n      },\n      \"wpsubnet2.dev\": {\n        \"path\": \"/\",\n        \"site_name\": \"WP Subnetwork Example 2\"\n      }\n    }\n  }\n}\n```\n\nNote that empty network objects are allowed (i.e., `path` and `site_name` are optional), but not recommended.\n\nTo associate a given subsite with a network, you can either use the `network_id` key or a `network_domain` key in the subsite object. A `network_domain` is recommended. For example, this object will associate the `site2` subsite with the main network (because no `network_domain` or `network_id` key is defined), and the subsite with slug `site3` with the network created at the given domain:\n\n```json\n{\n  \"site2\": {\n  },\n  \"site3\": {\n    \"network_domain\": \"wpsubnet1.dev\"\n  }\n}\n```\n\nThe above will ultimately place `site3` at the `site3.wpsubnet1.dev` URL while `site2` will be created as a subdomain of whatever domain you chose when you invoked `vv create`.\n\nIt is not an error for a WP network to be defined with no sites of its own.\n\n## Vagrant Proxy\n\nBecause vv knows where you VVV installation is, you can run it from anywhere. vv will proxy any commands passed into `vv vagrant \u003ccommand\u003e` to your VVV location. So `vv vagrant halt` will halt your VVV vagrant, no matter where you run it.\n\n## `vv` Options\n\n|Option|Description|\n|------|-----------|\n|`--help`, `-h`| Show help and usage|\n|`--version`|Show current vv version number.|\n|`--about`|Show about screen.|\n|`--update`|Updates vv to the latest stable version|\n|`--debug-vv`|Outputs all debugging info needed for bug reporting.|\n|`--path`,\t`-p`|Path to VVV installation|\n|`--force-path`, `-fp`|Override vv auto-VVV locating|\n|`--force-sites-folder`,`-fsf`|Override sites folder directory locating|\n|`--defaults`|Accept all default options and skip the wizard. You can also run `yes | vv create ... other flags ... -defaults` to skip the final confirmation|\n\n### Commands\n\n|Command|Description|\n|-------|-----------|\n|`list`, `--list`,  `-l`|List all VVV sites|\n|`create`, `--create`, `-c`|Create a new site|\n|`delete`, `--delete`, `-r`|Delete a site|\n|`deployment-create`, `--deployment-create`|Set up deployment for a site|\n|`deployment-remove`, `--deployment-remove`|Remove deployment for a site|\n|`deployment-config`, `--deployment-config`|Manually edit deployment configuration|\n|`blueprint-init`, `--blueprint-init`|Initalize blueprint file|\n|`vagrant`, `v`, `--vagrant`, `-v`|Pass vagrant command through to VVV.|\n\n### Options for Site Creation\n\n|Option|Description|\n|------|-----------|\n|`--name`, `-n`|Desired name for the site directory (e.g. mysite)|\n|`--domain, -d`|Domain of new site|\n|`--webroot`, `-wr`|Subdirectory used for web server root|\n|`--bedrock`, `-bed`|Creates Roots.io Bedrock install|\n|`--blueprint`, `-b`|Name of blueprint to use|\n|`--live-url`, `-u`|Live URL of site|\n|`--files`, `-f`|Do not provision Vagrant, just create the site directory and files|\n|`--images`, `-i`|Load images by proxy from the live site|\n|`--wp-version`, `-wv`|Version of WordPress to install|\n|`--debug`, `-x`|Turn on WP_DEBUG and WP_DEBUG_LOG|\n|`--multisite`, `-m`|Install as a multisite. Can also pass in \"subdomain\" or \"subdirectory\"|\n|`--sample-content`,`-sc`|Adds sample content to site.|\n|`--username`|Admin username|\n|`--password`|Admin password|\n|`--email`|Admin email|\n|`--prefix`|Database prefix to use|\n|`--git-repo`,`-gr`|Git repo to clone as wp-content|\n|`--path`,\t`-p`|Path to VVV installation|\n|`--force-path`, `-fp`|Override vv auto-VVV locating|\n|`--blank`|Creates blank VVV site, with no WordPress|\n|`--blank-with-db`|Creates a blank VVV site, with a database|\n|`--wpskeleton`, `-skel`|Creates a new site with the structure of [WP Skeleton](https://github.com/markjaquith/WordPress-Skeleton)\n|`--database`,`-db`|Imports a local database export|\n|`--remove-defaults`,`-rd`|Removes default themes and plugins|\n|`--language`,`--locale`|Install WP in another locale. Need to pass the locale afterwards, like so: `vv create --locale fr_FR`|\n\n### Options for Site Removal\n|Option|Description|\n|------|-----------|\n|`--name`, `-n`|Desired name for the site directory (e.g. mysite)|\n|`--path`,\t`-p`|Path to VVV installation|\n|`--force_path`, `-fp`|Override vv auto-VVV locating|\n\n### Options for Deployment Setup\n|Option|Description|\n|------|-----------|\n|`--name`, `-n`|Desired name for the site directory (e.g. mysite)|\n|`--deployment-name`|Name of deployment (production, staging, other, etc)|\n|`--host`|Host (if SFTP, define port as host:port) |\n|`--username`|FTP Username |\n|`--password`|FTP Password  |\n|`--passive`|Use Passive transfer mode? (y/n)  |\n|`--secure`|Use SFTP? (y/n) |\n|`--destination`|Destination path ( You probably want / or ~/public_html ) |\n|`--confirm-removal`|Used when removing a deployment to skip the confirmation prompt |\n\n\n## `.vv-config`\n\nThe first time you run `vv`, it will attempt to locate your VVV installation location. If it can't find it, you will be prompted for it. This will be written to a .vv-config file in your home directory. (`~/.vv-config`) You can also edit this file if you need to change your VVV path.\n\nAlso, if `vv` detects a `.vv-config` file in your current directory, this local file will override the one in your home directory. A use case would be to have several different `VVV` installations, that each contain their own local `.vv-config` file. Provided that you enter the appropriate directory before sending commands to `vv`, this effectively allows you to manage several different installations through one user account.\n\nYou can also add `\"auto_update_disable\": false` to this file to disable auto-update functionality.\n\n\n## `vv` Hooks\n\n`vv` has support for extensibility within the 'hooks' system present. This allows for quite a lot of extensibility and injection into the `vv` process. This system allows you to add your own code to run within almost any point with `vv`.\n\nTo get started with hooks, run any `vv` command with `--show-hooks` at the end. For example, `vv list --show-hooks` will run `vv list` as normal, but will also show all the hooks available.\n\nTo create the folder that your hook code should live in, simply make a 'vv' folder inside of your VVV folder.\n\nTo add code to run for a hook, make a file within your vv folder inside of VV named the hook that you want to add to. This file can be any command line runnable language, and will be executed inline.\n\nFor example, saving this file as the name of any hook will output 'Hello' when that hook gets called.\n\n```bash\n    #! /usr/bin/php\n    echo 'Hello'\n```\n\nAnother example would be running npm install inside of wp-content for all new sites.\n\nMake a file named post_site_creation_finished. This file gets 4 variables passed in: the hook name, the name of the site folder, the site domain, and the VVV path.\n\n```bash\n    #!/bin/bash\n    cd www/\"$2\"/htdocs/wp-content || exit\n    npm install\n```\n\n\n## Thanks\n\nForked and based off of [vvv-site-wizard from Alison Barrett](https://github.com/aliso/vvv-site-wizard).\nAlso thanks to [meitar](https://github.com/meitar), [creativecoder](https://github.com/creativecoder), [jtsternberg](https://github.com/jtsternberg), [caseypatrickdriscoll](https://github.com/caseypatrickdriscoll), [gregrickaby](https://github.com/gregrickaby), [leogopal](https://github.com/leogopal), [ajdruff](https://github.com/ajdruff), [schlessera](https://github.com/schlessera), [john-g-g](https://github.com/john-g-g), [tnorthcutt](https://github.com/tnorthcutt), [wpsmith](https://github.com/wpsmith), [wesbos](https://github.com/wesbos), [protechig](https://github.com/protechig), [Ipstenu](https://github.com/Ipstenu), [justintucker](https://github.com/justintucker), [michaelbeil](https://github.com/michaelbeil), [jb510](https://github.com/jb510), [neilgee](https://github.com/neilgee), [nanomoffet](https://github.com/nanomoffet), [joehills](https://github.com/joehills), [JeffMatson](https://github.com/JeffMatson), [greatislander](https://github.com/greatislander), [pelmered](https://github.com/pelmered), [gMagicScott](https://github.com/gMagicScott), [alexschlueter](https://github.com/alexschlueter), [eriktdesign](https://github.com/eriktdesign), [WPprodigy](https://github.com/WPprodigy), [michaelryanmcneill](https://github.com/michaelryanmcneill), [boborchard](https://github.com/boborchard), [cryptelli](https://github.com/cryptelli), [lswilson](https://github.com/lswilson), [Mte90](https://github.com/Mte90) for their contributions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbradp%2Fvv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbradp%2Fvv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbradp%2Fvv/lists"}