create-create
Tool for making Node create- toolsExample
yarn create create superpower
Makes a create-superpower directory with:
- package.json
- bin/create-superpower.js
#!/usr/bin/env node
const run = require('create-create/run')
require('yargs')
.option('baseDir', {
default: process.cwd()
})
.command({
command: '*',
desc: 'Creates a new superpower',
builder: {
name: {
default: 'flying'
}
},
handler(args) {
const make = require('./commands/main')
run(make(args), {
makeMessage: () => `Created superpower ${args.name} in ${args.baseDir}`
})
}
})
.command({
command: 'enhancement <name>',
desc: 'Creates a new superpower enhancement',
builder: {
},
handler(args) {
const make = require('./commands/enhancement')
run(make(args), {
makeMessage: () => `Created enhancement ${args.name} in ${args.baseDir}`
})
}
})
.demandCommand(1)
.help('help')
.argv
Simple publish your package, and then you can use it like so:
yarn create superpower
yarn create superpower subcommand
API
run({ baseDir, filesMap?, dependencies?, devDependencies? })
const run = require('create-create/run')
baseDir: String
The working directory, recommended that you default to process.cwd()
like so:require('yargs')
.option('baseDir', {
default: process.cwd()
})
filesMap?: Map<String, { text?: String, json?: Object, mode?: Number }>
A Map
of files to create in the baseDir
. Key can either be a file name string, or an array of file path components relative to baseDir
.The value is an object with either
text
or json
set. Use mode
to set the file mode (a la chmod
).const filesMap = new Map()
filesMap.set('readme.md', {
text: (
`# Heading
## Subheading
`)
})
dependencies?: [String]
An array of dependencies to install. Uses either yarn
or npm
, dependending on what’s detected (currently presence of yarn.lock
file).devDependencies?: [String]
An array of dev dependencies to install. Like dependencies
, but installs using yarn add --dev
or npm install --save-dev
.