https://github.com/1407arjun/create-any-app
A command line interface for rapid creation, configuration and development of JavaScript apps.
https://github.com/1407arjun/create-any-app
boilerplate cli create-any-app npm-package templates
Last synced: 5 months ago
JSON representation
A command line interface for rapid creation, configuration and development of JavaScript apps.
- Host: GitHub
- URL: https://github.com/1407arjun/create-any-app
- Owner: 1407arjun
- License: mit
- Created: 2022-03-01T07:37:53.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2022-04-02T17:20:15.000Z (over 4 years ago)
- Last Synced: 2025-11-23T23:00:06.219Z (8 months ago)
- Topics: boilerplate, cli, create-any-app, npm-package, templates
- Language: JavaScript
- Homepage: https://npmjs.com/package/create-any-app
- Size: 664 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Create Any App
Create Any App is a command line interface for rapid creation, configuration and development of JavaScript apps.
## Quick Start
```sh
npx create-any-app my-app
```
> If you've previously installed `create-any-app` globally via `npm install -g create-any-app`, we recommend you uninstall the package using `npm uninstall -g create-any-app` to ensure that `npx` always uses the latest version.
Check out the package README [here](packages/README.md).
## Templates
All templates used can be found in the `templates` directory. The following conventions are followed:
- All templates for a particular framework are located at `templates/`
- Each framework template directory contains two main subdirectories - `default` and `typescript` for the JavaScript and TypeScript base versions respectively.
- Directories starting with `--` contain the files for the particular configuration corresponding to the name of the directory which are either added or overwritten during configuration. (For example `--tw` would contain files for TailwindCSS.)
- The templates do not contain a `package.json` file as they are generated when the project is initialized.
### Local Development
To get a local copy up and running follow these simple steps.
#### Prerequisites
In order to get a copy of the project you will require you to have Node.js (v14+) and the NPM package manager installed. If you don't have it, you can download the latest version of Node.js from the [official website](https://nodejs.org/en/download/) which also installs the NPM package manager by default.
#### Installation
Open the terminal in the folder in which you wish to clone the repository and enter the following command:
```sh
git clone https://github.com/1407arjun/create-any-app.git
cd create-any-app
```
Install all the NPM packages:
```sh
cd packages
npm i
```
To add the project to PATH run:
```sh
npm link
```
Run on the command line:
```sh
create-any-app --help
```
#### Project Structure
```
create-any-app
├── README.md
├── LICENSE
├── CONTRIBUTING.md
├── .eslintrc.json
├── .prettierrc
├── packages
│ ├── bin
│ │ └── caa.js //Entry point to the CLI
│ ├── data // Data about supported configurations
│ └── lib
│ ├── fs
│ │ ├── types // File system operations specific to each framework
│ │ ├── utils // Utility functions for file system operations
│ │ ├── download.js // Function to download template from GitHub archive
│ │ ├── npm.js // NPM packages corresponding to all configurations
│ │ └── main.js // Entry point to project setup
│ ├── inquirer
│ │ ├── features // Prompts for all configurations
│ │ ├── dir.js
│ │ └── features.js // Prompt for main menu
│ ├── cli.js // Entry point for any framework command
│ ├── create.js // Entry point for create command
│ ├── preset.js // Entry point for preset command
│ ├── settings.js // Returns the configurations recorded from all prompts
│ └── conf.js // Configure the conf package (for config files)
└── templates
└── framework
├── default
└── typescript
```
## Contributing
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**. Read [CONTRIBUTING.md](CONTRIBUTING.md).
1. Fork the Project. [(Refer the local development instructions)](#local-development)
2. Create your Feature Branch. (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes. (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch. (`git push origin feature/AmazingFeature`)
5. Open a Pull Request.
### Contributing to the templates
Following are some of the guidelines that have to be followed when creating/modifying a template:
- The base versions of the templates (`default` or `typescript`) are generated from the default templates of the framework itself and have the same project structure except the `tsconfig.json` and other type decalaration files.
- Modification or addition of configurations must be made in both, the `default` and `typescript` templates, so as to maintain the same structure and functionality across the base templates.
- Create `--*` directories where necessary. The files in this directory will replace the default template files with the same name in its parent directory. (For example, if the default template contains an `index.js` file made using CSS and you want to add a TailwindCSS configuartion to it, then keep the `index.js` file as it is and in the same directory create a `--tw` directory and add an `index.js` file to it which is made with TailwindCSS)
### Contributing to the frameworks:
Following are some of the guidelines that have to be followed when adding/modifying a framework configuration:
- Add the base versions of the templates (`default` or `typescript`) which are generated from the default templates of the framework itself and have the same project structure except the `tsconfig.json` and other type decalaration files.
- Add your framework as a seperate command to `bin/caa.js` and give it a type name to be used throughout the package.
- Append the same name from the step above to the `switch` case in `main.js`.
- Create a new file by the name of the framework from above inside `lib/fs/types` and add all the file operations required for various options to it. (Refer `lib/fs/types/next.js` as an example)
- Use the functions provided under `lib/fs/util` to ease some of the file system operations.
- Finally, follow the [guidelines](#contributing-to-the-templates) to modify the base templates to cater to all options.