Generate quirky names like spiffy-waterfall, sassy-bread, mature-dew-8239 to use wherever you need a random but memorable name.
Useful for object names, temp folders, passwords, project names, unique ids etc
npm install project-name-generator --save
var generate = require('project-name-generator');
generate().dashed; // 'uptight-guitar'
generate().spaced; // 'grandiose clam'
generate().raw; // ['deluxe', 'grandmother']
generate({ number: true }).dashed; // 'disgraceful-temper-7794'
generate({ words: 4 }).raw; // ['tiny', 'crabby', 'wired', 'quicksand']
generate({ words: 4, number: true }).dashed; // 'breakable-judicious-luxuriant-tax-3931'
generate({ words: 2, number: 6 }).dashed; // 'arch-measure-245183'
generate({ words: 2, startingLetter: 'e', alliterative: true }).spaced; // 'elegant experience'
generate({ words: 2, alliterative: 'c' }).dashed; // 'crabby-cactus'
This package contains a cli script. You can pull in the package globally using npm
npm install -g project-name-generator
Call from your command line
$ project-name-generator
{ raw: [ 'spry', 'bath' ],
dashed: 'spry-bath',
spaced: 'spry bath' }
For CLI options
project-name-generator -h
Usage: project-name-generator [options]
Options:
-V, --version output the version number
-w, --words [num] number of words [2] (default: 2)
-n, --numbers [num] use numbers
-a, --alliterative use alliterative
-o, --output [output] output type [raw|dashed|spaced|dot|under_scored|camelcase]
-v, --vocab [category] category of vocaburaries [default|fruits|breads]
-g, --geo [category] category of geolocations [default|numbers]
-l, --letter [letter] specify first letter
-h, --help display help for command
The module returns a single function, generate(options)
Calling generate()
with no arguments will return an object:
{
raw: ['whispering', 'valley'],
dashed: 'whispering-valley',
spaced: 'whispering valley'
}
The options
argument object can have properties
- words (number) - Number of words generated (excluding number). All words will be adjectives, except the last one which will be a noun. Defaults to 2.
- number (number or boolean) - Whether a numeric suffix is generated or not. The length of digits can be between 1 - 20, inclusive of the exponential value between 1-1e#. Specifying
true
will specify a length of 4 digits. Defaults to false. - alliterative (boolean/string) - Whether to output words beginning with the same letter or not. If a string is passed, returns only words starting with that character. Defaults to false.
- startingLetter (string) - Specifies the letter to start the project name with. Defaults to null.
generate({ words: 3 })
will return:
{
raw: ['harmonious', 'endurable', 'substance'],
dashed: 'harmonious-endurable-substance',
spaced: 'harmonious endurable substance'
}
generate({ words: 5, number: true })
will return:
{
raw: [ 'exciting', 'cooperative', 'legal', 'lackadaisical', 'blood', 4099 ],
dashed: 'exciting-cooperative-legal-lackadaisical-blood-4099',
spaced: 'exciting cooperative legal lackadaisical blood 4099'
}
generate({ words: 2, number: false, startingLetter: 'e', alliterative: true })
will return:
{
raw: [ 'economic', 'effect' ],
dashed: 'economic-effect',
spaced: 'economic effect'
}
generate({ words: 2, number: 6 })
will return:
{
raw: [ 'woozy', 'fire', 152343 ],
dashed: 'woozy-fire-152343',
spaced: 'woozy fire 152343'
}
generate({ words: 2, number: false, alliterative: true })
will return:
{
raw: [ 'elegant', 'experience' ],
dashed: 'elegant-experience',
spaced: 'elegant experience'
}
generate({ words: 2, number: false, alliterative: 'c' })
will return:
{
raw: [ 'crabby', 'cactus' ],
dashed: 'crabby-cactus',
spaced: 'crabby cactus'
}
To run tests locally:
npm install
npm test
The library has been tested with Node.js 12.18.4