Generate lots of fake data.
This plugin requires Grunt ~0.4.0
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-ipsum --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-ipsum');
Run this task with the grunt ipsum
command.
Task targets, files and options may be specified according to the grunt Configuring tasks guide.
Path to save output file.
grunt.config('ipsum.mytask', {
dest : 'path/to/file.json'
});
The schema of fake data to generate.
For all available keys, see the docs below.
grunt.config('ipsum.mytask', {
template : {
name : {
first : '{%= ipsum.firstName %}',
last : '{%= ipsum.lastName %}',
},
street : '{%= ipsum.streetName %}',
city : '{%= ipsum.city %}',
state : '{%= ipsum.usState %}',
}
});
// Output
{
"name": {
"first": "Janie",
"last": "Mertz"
},
"street": "Ardith Brook",
"city": "Hertafurt",
"state": "Rhode Island"
}
Each value is compiled with _.template
using the {%
and %}
delimiters. Both the grunt template and underscore.string helpers are available in this context.
grunt.config('ipsum.mytask', {
template : {
date : '{%= grunt.template.date(847602000000, "yyyy-mm-dd") %}',
slug : '{%= _.slugify(ipsum.name) %}'
}
});
// Output
{
"date": "1996-11-09",
"slug": "hobart-torp"
}
The current object is available via the self
keyword. Note that this will only work after previous keys are set.
grunt.config('ipsum.mytask', {
template : {
name : '{%= ipsum.name %}',
slug : '{%= _.slugify(self.name) %}',
notyetdefined : '{%= self.after %}',
after : 'needs to be before notyetdefined'
}
});
// Output
{
"name": "Stephen Abshire",
"slug": "stephen-abshire",
"notyetdefined": "",
"after": "needs to be before notyetdefined"
}
The number of times to repeat the template.
grunt.config('ipsum.mytask', {
template : {
name : '{%= ipsum.name %}'
},
repeat : 5
});
// Outputs
[
{
"name": "Lori Hegmann"
},
{
"name": "Vernie Deckow"
},
{
"name": "Karlee Schowalter"
},
{
"name": "Mya Hahn"
},
{
"name": "Colin Strosin"
}
]
If the value is an array, the template will be repeated a random number of times between the two values.
grunt.config('ipsum.mytask', {
template : {
name : '{%= ipsum.name %}'
},
repeat : [1, 20]
});
// Outputs 1 to 20 results
[
{
"name": "Lori Hegmann"
},
// ...
{
"name": "Colin Strosin"
}
]
The number of times to repeat nested items.
grunt.config('ipsum.mytask', {
template : {
name : '{%= ipsum.name %}',
children : {
name : '{%= ipsum.name %}'
}
},
repetitions : {
'children' : 3
}
});
// Outputs
{
"name": "Rosanna Predovic",
"children": [
{
"name": "Mr. Karlie Jast"
},
{
"name": "Sabina Hoppe"
},
{
"name": "Jordon Friesen"
}
]
}
This also works for deep nested paths.
grunt.config('ipsum.mytask', {
template : {
name : '{%= ipsum.name %}',
children : {
child_name : '{%= ipsum.name %}',
friends : {
friend_name : '{%= ipsum.name %}'
}
}
},
repetitions : {
'children' : 2,
'children.friends' : 3
}
});
// Outputs
{
"name": "Johnnie Kutch",
"children": [
{
"child_name": "Ms. Charlene Jacobi",
"friends": [
{
"friend_name": "Martin Hilpert"
},
{
"friend_name": "Price Murray"
},
{
"friend_name": "Jermain Mosciski"
}
]
},
{
"child_name": "Barrett Connelly",
"friends": [
{
"friend_name": "Mrs. Ethel Cremin"
},
{
"friend_name": "Weldon Muller"
},
{
"friend_name": "Aurelia Parisian"
}
]
}
]
As with the repeat
option, if the value is an array, a random number will be chosen between the two values.
grunt.config('ipsum.mytask', {
template : {
name : '{%= ipsum.name %}',
children : {
name : '{%= ipsum.name %}'
}
},
repetitions : {
'children' : [1, 10]
}
});
// Outputs
{
"name": "Rosanna Predovic",
"children": [ // 1 to 10 children
{
"name": "Mr. Karlie Jast"
},
// ...
{
"name": "Jordon Friesen"
}
]
}
Much of the data here is generated by Marak/Faker.js.
Key | Examples |
---|---|
name | Maeve Homenick, Owen Mraz, Bernardo Grimes |
firstName | Braxton, Susana, Marcelle |
lastName | Kuphal, Hand, Effertz |
phoneNumber | 003-273-1853 x1157, 847.322.7960, 357.014.4721 |
phoneNumberFormat(0) | 979-083-1591, 213-279-0050, 909-907-7814 |
phoneNumberFormat(1) | (012)512-0615, (946)971-1172, (572)007-5316 |
phoneNumberFormat(2) | 1-976-102-1694, 1-961-173-9743, 1-247-057-0318 |
Carolyn@frederick.biz, Lukas@katarina.me, Reuben.Kuhlman@joesph.name | |
userName | Alek, Santina_Streich, Vallie.Morar |
Key | Examples |
---|---|
domainName | breanne.biz, flo.ca, susie.io |
domainWord | nayeli, ottilie, joany |
ip | 70.107.229.179, 40.84.165.142, 200.31.231.91 |
companyName | Erdman, Dietrich and Schamberger Kulas-Moore Dare-Pfeffer |
companySuffix | and Sons, Group, LLC |
catchPhrase | Persistent executive service-desk Sharable motivating standardization Face to face global knowledge base |
bs | whiteboard synergistic web-readiness enhance web-enabled schemas reintermediate wireless systems |
Key | Examples |
---|---|
streetAddress | 220 Marks Plain 928 Hyatt Place 46420 Cornell Row |
secondaryAddress | Apt. 241, Suite 081, Apt. 883 |
city | Luciennetown, South Kiana, Gibsonstad |
usState | New Hampshire, Oklahoma, Kentucky |
brState | Ceará, Distrito Federal, Pernambuco |
ukCounty | Surrey, Derbyshire, West Midlands |
ukCountry | Scotland, England, Wales |
zipCode | 39368-1361, 35290, 62938-6427 |
zipCodeFormat(0) | 10812, 37427, 17078 |
zipCodeFormat(1) | 49563-3194, 72511-9477, 40840-7183 |
latitude | -56.8358, 79.0189, 28.3439 |
longitude | 14.0440, 137.2489, -108.3675 |
Each of the image options can accept two parameters, width and height.
grunt.config('ipsum.mytask', {
template : {
thumb : '{%= ipsum.placeKitten(400, 300) %}'
}
});
// Outputs
{
"thumb": "http://placekitten.com/400/300"
}
If an array is used, a number will be chosen within that range.
grunt.config('ipsum.mytask', {
template : {
thumb : '{%= ipsum.placeKitten([10, 40], [500, 600]) %}'
}
});
// Outputs
{
"thumb": "http://placekitten.com/23/574"
}
The range defaults to [100, 500]
.
grunt.config('ipsum.mytask', {
template : {
thumb : '{%= ipsum.placeKitten %}'
}
});
// Outputs
{
"thumb": "http://placekitten.com/246/437"
}