Skip to content

BurntCaramel/create-create

Repository files navigation

create-create

Tool for making Node create- tools

Example

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.

About

Make your own Yarn/NPM create-* tools in minutes

Resources

License

Stars

Watchers

Forks

Packages

No packages published