0.2.0 • Published 10 years ago

grunt-vagrantup v0.2.0

Weekly downloads
2
License
-
Repository
github
Last release
10 years ago

grunt-vagrantup

Manages starting up and shutting down your Vagrant boxes as part of your Grunt development and testing workflow.

Getting Started

This plugin requires Grunt ~0.4.5

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-vagrantup --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-vagrantup');

Notes

This task does not install or configure Vagrant for you, it merely aids in spinning up and shutting down your Vagrant boxes on demand. For installation and configuration of Vagrant, see https://www.vagrantup.com.

Tasks

vagrantup is intended for use in two different modes:

  • Synchronous mode, where the Vagrant box remains up only to support other Grunt tasks and is shut down once those tasks have completed.
  • Keepalive mode, where the Vagrant box remains up indefinitely until the task process is cancelled.

Synchronous mode

This is the default mode for vagrantup. It is designed to support a workflow where a Vagrant box needs to be set up for automated testing and then disposed of. The task configuration can optionally include a list of setup tasks and a list of teardown tasks. The setup tasks will be run after the Vagrant box has started up, and the teardown tasks will be run before the box is shut down:

vagrantup: {
  testing: {
    options: {
      // Run your production build routine, copy the files to a directory shared with Vagrant...
      setup: ['setupTaskOne', 'setupTaskTwo:target'],
      // Clean out the shared directory...
      teardown: ['teardownTask']
    }
  }
}

In order to provide full control over the Vagrant lifecycle, vagrantup also exports a task called vagranthalt. This task takes no target, and does not need to be added to the Grunt configuration. It should be invoked after the vagrantup task, once the Vagrant box is no longer needed:

grunt.registerMultiTask('testWithVagrant', ['vagrantup:testing', 'runTests', 'vagranthalt']);

Keepalive Mode

If the keepalive option is set to true, the vagrantup task will keep the Vagrant box up until the task process is explicitly killed by the user. This mode is designed to support a workflow where the Vagrant environment is used for active development. The task configuration accepts the same options as Synchronous Mode:

vagrantup: {
  development: {
    options: {
      keepalive: true,
      // Set up your development environment, symlink the files to a directory shared with Vagrant...
      setup: ['setupTaskThree', 'setupTaskFour:target'],
      // Clean out the shared directory...
      teardown: ['teardownTask']
    }
  }
}

In this mode, there is no need for the vagranthalt task, the tear down routine will run when the task process is killed. Setting up the development environment can be accomplised with grunt vagrantup:development.

Keepalive Mode can also be enabled ad-hoc with a flag: grunt vagrantup:testing:keepalive

Task-level options can be used to share configuration between Synchronous Mode targets and Keepalive Mode targets:

vagrantup: {
  options: {
    // Clean out the shared directory...
    teardown: ['teardownTask']
  },
  testing: {
    options: {
      // Run your production build routine, copy the files to a directory shared with Vagrant...
      setup: ['setupTaskOne', 'setupTaskTwo:target']
    }
  },
  development: {
    options: {
      keepalive: true,
      // Set up your development environment, symlink the files to a directory shared with Vagrant...
      setup: ['setupTaskThree', 'setupTaskFour:target']
    }
  }
}

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.

Release History

(Nothing yet)