Vv
: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.
Install / Use
/learn @bradp/VvREADME
Variable VVV - The Best VVV Site Wizard
██ ██ ██ ██
░██ ░██░██ ░██ Variable VVV 1.12
░░██ ░██ ░░██ ░██
░░████ ░░████ The easiest way to set up
░░██ ░░██ WordPress sites with VVV!
░░ ░░
vv makes it extremely easy to create a new WordPress site using Varying Vagrant Vagrants. vv supports site creation with many different options; site blueprints to set up all your plugins, themes, and more; deployments; and lots more features.
Tired of the time it takes to do a vagrant provision or create new sites? Check out flip, a simple utility to solve that issue.
Table of Contents
- Installation
- Adding tab-completion to vv
- Updating
- Usage
- Site Creation
- Site Deletion
- Deployments
- Advanced Usage
- Blueprints
- Vagrant Proxy
- vv Options
- .vv-config
- vv Hooks
- Thanks
Installation
OS X Installation
If you have Homebrew installed, you run the following in your terminal application:
$ brew install bradp/vv/vv
Otherwise, clone this repositoy and edit your $PATH to include the vv core file:
- Clone this repo:
git clone https://github.com/bradp/vv.git - Add the
vvcore script to your shell's$PATH:- If you're using
bash:touch ~/.bash_profile && echo "export PATH=\$PATH:`pwd`/vv" >> ~/.bash_profile
- If you're using
Windows Installation
-
Clone
vvto a folder somewhere.$ git clone https://github.com/bradp/vv.git -
Add that folder to your system path. See here if you need help.
-
Open an explorer window and go to My Computer (or This PC).
-
Right click and choose properties
-
Choose Advanced System Settings
-
Choose Environmental Variables form the Advanced Tab
-
Choose the "Path" variable and edit it.
-
Add a semicolon to end the previous path item and then add the
vvfolder path (Example:;C:\Users\Name\Documents\vv) -
Open Git Bash and run
vv
Alternately, you can use cmd.exe with bash vv.
Props to Vinsanity for these instructions. If you're having issues, please see this issue.
Linux Installation
-
Clone vv into a folder.
$ git clone https://github.com/bradp/vv.git -
Access the directory that you cloned vv into.
-
Copy the vv executable to /usr/local/bin
$ sudo cp vv /usr/local/bin -
You should now be able to easily run vv from anywhere in your system.
Adding tab-completion to vv
Currently, 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.
Updating
vv is currently under development, and you'll probably want the latest and greatest version at all times.
You 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.
vv 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.
If you have trouble updating, you may want to try some of the options below:
Homebrew 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.
First, 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/vvas mentioned above. You will not lose any settings or sites.
Usage
Once 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.
At any time, you can run vv or vv --help to see a list of all possible options and flags.
vv will prompt you for a value for any required flags that were not specified.
The 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.
To 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.
All options and flags are listed below.
Site Creation
vv create
Creating a site does the following:
- Halts Vagrant (if running)
- Creates a web root for the site in the
wwwfolder containing three files:vvv-init.sh,wp-cli.yml, andvvv-hostsvvv-init.shtells 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 provisionedwp-cli.ymltells WP-CLI that WordPress is in the htdocs foldervvv-hostscontains the hosts entry to give your site a nice custom domain (the domain is set in the wizard)
- Creates a file in the
nginx-configfolder to handle server settings for your site - Restarts Vagrant with
vagrant up --provision
Provisioning 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.
Subdomain Multisite Installation
If 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:
mysite.dev
siteA.mysite.dev
siteB.mysite.dev
After 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 for help.
Site Deletion
vv delete site_name
You can also leave off site_name to be prompted for it.
Deleting a site does the following:
- Halts Vagrant (if running)
- Deletes the site's web root (which deletes the
vvv-init.sh,wp-cli.yml, andvvv-hostsfiles as well) - Deletes the file in the
nginx-configfolder pertaining to the site - Deletes the database associated with the site
Deployments
vv deployment-create, vv deployment-remove, vv deployment-config
vv supports setting up deployments that work with Vagrant Push. You'll need to be on version 1.7.0 or later of Vagrant. Simply run vv --deployment-create and walk through the wizard.
To deploy a site, you can do vv vagrant push <sitename>-<deployment_name>.
When removing a deployment, your current Vagrantfile will be backed up as Vagrantfile-backup.
Advanced Usage
Airplane Mode
Using 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.
Flags
Anything 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.
To 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:
vv create -d mysite.dev -n mysite -m subdomains -x
Or, the more readable version with all expanded flags.
vv create --domain mysite.dev --name mysite --multisite subdomains --debug
To use a custom database prefix, simply use the vv create --prefix myprefix when creating a new site.
Blueprints
Blueprints 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.
A simple blueprint should look like this:
{
"sample": {
"themes": [
{
"location": "automattic/_s",
"activate": true
}
],
"mu_plugins": [
{
"location": "https://github.com/WebDevStudios/WDS-Required-Plugins.git"
}
],
"plugi
