Create a React application quickly. Alternative to create-react-app
.
Want to kickstart a React project but tired of using create-react-app
?
Don't need any testing, server or other fancy stuff installed by create-react-app
?
Hard disk running out of space for using create-react-app
in multiple projects?
Here comes the create-minimal-app
!!!
npm install -g create-minimal-app
Use the command create-minimal-app
or cma
in short.
Usage:
create-minimal-app <app-name> [options]
cma <app-name> [options]
Options:
-V, --version output the version number
--cwd creact app in current working directory
--force force processing while warning exists
--yarn use Yarn to install packages
--author <author...> name of package author
--email <email> email of package author
--url <url> url of package author
--ver <version> package version
--desc, --description <description...> package description
--kw, --keywords <keywords...> package keywords
--bl, --browserslist <browserslist...> package browserslist
--repo, --repository <repository> package repository
--git [git-repo-url] create Git repository
--css include CSS related plugin for Webpack
--sass, --scss include SASS/SCSS related plugin for Webpack
--ts include Typescript related plugin for Webpack
--minify include code minifier plugin for Webpack
--watch Webpack watch changes
--dev-server [port] port of webpack-dev-server
--src <src> entry directory for Webpack
--dist <dist> output directory for Webpack
--typing install typing packages
--no-install do not install packages
--no-clone do not clone static files
-h, --help display help for command
Option | Description | Default |
---|---|---|
cwd |
creact app in current working directory | false |
force |
force processing while warning exists (usage) | false |
yarn |
use Yarn to install packages | false |
author <author...> |
name of package author | |
email <email> |
email of package author | |
url <url> |
url of package author | |
ver <version> |
package version | 1.0.0 |
description <description...> desc <desc...> |
package description | |
keywords <keywords...> kw <kw...> |
package keywords | |
browserslist <browserslist...> bl <bl...> |
package browserslist | ['>0.25%', 'not ie 11', 'not op_mini all'] |
repository <repository> repo <repo> |
package repository (usage) | |
git [git-repo-url] |
create Git repository repository origin is set when providing [git-repo-url] (usage) |
false |
css |
include CSS related plugin for Webpack | false |
scss sass |
include SCSS/SASS related plugin for Webpack | false |
ts |
include Typescript related plugin for Webpack | false |
minify |
include code minifier plugin for Webpack | false |
watch |
webpack watch changes after build | false |
dev-server [port] |
set webpack dev server port9000 if only flag is set |
false |
src <src> |
entry directory for Webpack i.e. entry file located at ./src/index.jsx |
./src |
dist <dist> |
output directory for Webpack | ./dist |
typing |
install typing packages | false |
no-install |
do not install packages | false |
no-clone |
do not clone static files (file list) | false |
Please check if the packages below can fulfil most of your requirement. It may be painful to edit
webpack.config.js
.
After running the program, you will achieve these goals:
- Install required packages
- Complete the Webpack configuration
- Create a simple demo page
- (Optional) Fill some fields in
package.json
- (Optional) initialize Git repository
With the default setting, you will only install the following packages:
react
react-dom
@babel/core
@babel/preset-env
@babel/preset-react
babel-loader
webpack
webpack-cli
You can choose to install extra package as you need. webpack.config.js
will be modified according to your choice.
CSS/SCSS/SASS (--css
/ --sass, --scss
)
style-loader
css-loader
SCSS/SASS (--sass, --scss
)
sass
sass-loader
Typescript (--ts
)
ts-loader
typescript
fork-ts-checker-webpack-plugin
Typing (--ts
/ --typing
)
@types/react
@types/react-dom
Dev Server (--dev-server
)
webpack-dev-server
Code Minification (--minify
)
terser-webpack-plugin
Your may want to include the webpack-dev-server
by passing --dev-server [port]
.
Port 9000
will be used as default.
You can pass --git <git-repo-url>
or --repo, --repository <repository>
to set the repository of your app.
Specify --repo <repository>
only will not initialize Git repo but --git <git-repo-url>
will, it will also set repository
in package.json
.
However, only github
, gitlab
and bitbucket
url will be convert automatically.
Here are some usages with explaination:
--repo github:user/repo
: Setrepository
asgithub:user/repo
inpackage.json
but not initialize a local Git repo.--repo github:user/repo --git
: Setrepository
asgithub:user/repo
inpackage.json
and initialize a local Git repo with origingit@github.com:user/repo.git
.--git https://github.com:user/repo.git
: Setrepository
asgithub:user/repo
inpackage.json
and initialize a local Git repo with origingit@github.com:user/repo.git
.
--repo <repository> --git
is identical to--git <git-repo-url>
Only
<repository>
will be considered when using--repo <repository> --git <git-repo-url>
together
By default, this program will try not to alter existed file/directory in your app directory.
Some actions are restricted by default.
You can pass --force
to the program to bypass those limitation.
Before any write to your app directory, this program check if there is a file with identical name.
By default, those files will not be modified.
For
package.json
, it will try to merge the difference instead of completely overwrite
Before install a package, this program will check if that package is already in the package.json
.
By default, found package will not be installed even if it is not actually installed.
Before initialize Git, this program will check if a .git
directory already in your app directory.
By default, it will not reinitialize Git repository.
When specified
--git [git-repo-url]
or--repo <repository> --git
, this program will rungit remote add origin [git-repo-url]
. Passing--force
will cause an error iforigin
is already set.
Before using Yarn to install package, this program check if Yarn is installed.
If Yarn is used but not installed, passing --force
will use NPM as fallback.
Some static files are cloned for the demo page:
.
+-- dist
│ +-- index.html
+-- src
| +-- index.jsx
+-- tsconfig.json
If specify --ts
, src/index.jsx
will rename to src/index.tsx
.
If not specify --ts
, tsconfig.json
will not be cloned.
If you just want to focus on Webpack without those package.json
, Git and static files, use the simplified version create-minimal-app-webpack
or cmaw
in short.
Usage
Options are same as in create-minimal-app
(see).
Usage:
create-minimal-app-webpack [app-name] [options]
cmaw [app-name] [options]
Options:
-V, --version output the version number
--cwd creact app in current working directory
--force force processing while warning exists
--yarn use Yarn to install packages
--css include CSS related plugin for Webpack
--sass, --scss include SASS/SCSS related plugin for Webpack
--ts include Typescript related plugin for Webpack
--minify include code minifier plugin for Webpack
--watch Webpack watch changes
--dev-server [port] port of webpack-dev-server
--src <src> entry directory for Webpack
--dist <dist> output directory for Webpack
--typing install typing packages
--no-install do not install packages
-h, --help display help for command
If you don't provide the [app-name]
, all the stuff will be placed in current working directory.
Release under MIT License
If you find this repo useful, please share to your friends. Or you can buy me a coffee: