grunt-connect-delay
A delay proxy middleware for grunt-contrib-connect
This plugin provides a delay middleware for Grunt Connect / Express. It can be used for introducing artificial delays before proxying certain URLs based on RegExp rules.
By default, it includes the rule that any URL which matches the pattern
^/delay/([0-9]+)/(.*)$
will be delayed by $1
milliseconds and be redirected
to /$2
.
Hence, to check your app's behavior when a particular request is slow, just
prefix /delay/5000/
to the URL.
Getting started
This plugin requires Grunt ~0.4.1
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.
npm install grunt-connect-delay --save-dev
Options
useDefaultRule
Type: Boolean
Default Value: true
This adds the following default rule to the configuration:
rule : '/delay/([0-9])+/(.*)$' delay : '$1' rewrite : '/$2'
This means that to delay a link, you only need to prefix it with
/delay/:milliseconds/<original URL>
. grunt-connect-delay
will wait for the
said number of milliseconds before proceeding to the <original URL>
rulesProvider
Type: String
Default value: connect.delay
This is the section in the Gruntfile from where the delay rules will be read.
Simple rule format
{url: 'FROM', delay: MILLISECONDS }
Where:
FROM
: RegExp string to matchMILLISECONDS
: The delay in milliseconds to introduce before proceeding with proxying
Extended rule format
{url: 'FROM_REGEXP', delay: 'NUMBER_OR_REPLACEMENT', rewrite: 'REPLACEMENT' }
Where:
FROM_REGEXP
: RegExp string to match the URL and create groups to be used for deducingdelay
and the true proxied URL. e.g.^/delay/([0-9]*)/(.*)$
.NUMBER_OR_REPLACEMENT
: The number of milliseconds (e.g.1000
) to wait or a string which can be parsed to an integer after a URL (which matchesurl
) is replaced by it (e.g.$1
).REPLACEMENT
: A string which maps to the destination URL after a URL is replaced by it (e.g./$2
).
Usage
In your project's Gruntfile:
- Include the
delayRequest
snippet:var delayRequest = require('grunt-connect-delay/lib/utils').delayRequest
. - Load the plugin:
grunt.loadNpmTasks('grunt-connect-delay')
- Add
configureDelayRules
before the web server task.
Optional (advanced usage):
- Configure options in
configureDelayRules.options
ininitConfig
, or, - Add a section named
delay
to your existing Connect definition
To see some logs about the proxying, use the --verbose
flag while running
grunt
.
var delayRequestSnippet = delayRequest;grunt; grunt;grunt; // "configureDelayRules" should be before the "connect"/"express" taskgrunt;
Though I haven't tested it, it should work in a similar fashion with
grunt-express
task as well.
You can see how to use this plugin at musically-ut/grunt-connect-delay-example.
Credits
The structure and documentation of this plugin is inspired by
grunt-connect-rewrite
plugin.
Release Notes
- 0.2.3: Update usage instuctions
- 0.2.2: Bump version to resolve
npm
bug - 0.2.1: Improve documentation
- 0.2.0: Add extended rules and a default rule
- 0.1.1: Improve logging
- 0.1.0: Initial release