✨ Create Whatever
The smartest
create-
app template generator.
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.
yarn create whatever
1. 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
.
;; create'create-greet', ;
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.
;
;
;
AfterHookOptions
after
(options: AfterHookOptions) => void
After hook script that runs after the initialization.
Contribution
PRs are always welcome!