This package has been deprecated

Author message:

WARNING: This package has been renamed to create-create-app. Install create-create-app instead.

create-whatever
TypeScript icon, indicating that this package has built-in type declarations

5.5.0 • Public • Published

✨ Create Whatever

npm-badge workflow-badge

The smartest create- app template generator.

screencast

Why?

  • ⚖️ Built-in License chooser No need to care about license things.
  • 🎩 Template engine Just put files with template strings and we will do the rest.
  • 💄 Highly customizable Can change caveat text, and add extra cli options.

Table of contents

Quick Start

Let's create create-greet package in four steps.

1. yarn create whatever

yarn create whatever create-greet --template typescript

or if you use npm, then run npm create create-greet

2. Edit templates

cd create-greet and edit files inside templates/default.

TypeScript

Run yarn build or npm run build to transpile TypeScript into JavaScript.

3. Publish package to npm

Run yarn publish or npm publish to publish your create- app to npm.

4. PROFIT!

yarn create greet ohayo

Template

Edit files inside templates/default. File names, directory names, and text files will be processed through Handlebars template engine to replace all template strings with respective value.

  • {{name}} package name
  • {{description}} package description
  • {{author}} author name
  • {{email}} author email
  • {{contact}} author name formatted with {{name}} <{{email}}> if email given, otherwise {{name}}
  • {{license}} package license (e.g. MIT)
  • {{year}} current year (e.g. 2020)

Helper functions

upper

Output text in UPPERCASE.

{{upper name}} becomes CREATE-REACT-APP.

lower

Output text in lowercase.

{{lower name}} becomes create-react-app.

camel

Output text in camelCase.

{{camel name}} becomes createReactApp.

capital

Output text in CapitalCase.

{{capital name}} becomes CreateReactApp, and {{capital name space=true}} becomes Create React App.

snake

Output text in snake_case.

{{snake name}} becomes create_react_app.

kebab

Output text in kebab-case.

{{kebab name}} becomes create-react-app.

uuid

Generates unique UUID string.

{{uuid}}
{{upper (uuid)}}

Config

You can find the app config in src/cli.ts.

import {resolve} from 'path';
import {create} from 'create-whatever';
 
create('create-greet', {
  templateRoot: resolve(__dirname, '../templates'),
  extra: {
    language: {
      type: 'input',
      describe: 'greeting language',
      default: 'en',
      prompt: 'if-no-arg',
    },
  },
  caveat: `Your app has been created successfuly!`,
});

templateRoot set to path.resolve(__dirname, '../templates'). You can change it to whereever you want.

extra

object | undefined

Extra options passed to the app. These options will be accessible as a cli option, interactive question, and template string. In this case, --language cli option and {{language}} template string will be available.

You can find all possible options in yargs-interactive documentation.

caveat

string | ((options: AfterHookOptions) => string | void) | undefined

The caveat message will be shown after the entire process completed.

create('create-greet', {
  caveat: 'Happy coding!',
});
create('create-greet', {
  caveat: ({ answers }) => `Run -> cd ${answers.name} && make`,
});
create('create-greet', {
  caveat: async ({ answers }) => {
    const pkg = answers.plugin;
    await execa('yarn', ['add', plugin]);
    console.log(`${plugin} has been added`);
  },
});

AfterHookOptions

{
  // variables
  packageDirstring;
  templateDirstring;
  yearnumber; // 2020
  answers{
    namestring; // package name
    descriptionstring; // description
    authorstring; // John Doe
    emailstring; // john@example.com
    contactstring; // John Doe <john@example.com>
    licensestring; // MIT
    [keystring]string | number | boolean | any[]; // any values defined in the `extra` field.
  };
  // functions
  run: (command: string, options?: CommonOptions<string>) => ExecaChildProcess<string>; // run shell command in the package dir
  installNpmPackage: (packageName: string) => Promise<void>; // use yarn if available
}

after

(options: AfterHookOptions) => void

After hook script that runs after the initialization.

Contribution

PRs are always welcome!

Dependents (1)

Package Sidebar

Install

npm i create-whatever

Weekly Downloads

1

Version

5.5.0

License

MIT

Unpacked Size

59.3 kB

Total Files

34

Last publish

Collaborators

  • uetchy