https://github.com/hideoo/create-app
CLI utility to bootstrap a new project by creating a new app from scratch or update an existing app.
https://github.com/hideoo/create-app
app automatic bootstrap configuration create scaffold
Last synced: 10 months ago
JSON representation
CLI utility to bootstrap a new project by creating a new app from scratch or update an existing app.
- Host: GitHub
- URL: https://github.com/hideoo/create-app
- Owner: HiDeoo
- License: mit
- Created: 2022-08-04T12:56:09.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2024-12-16T07:41:23.000Z (over 1 year ago)
- Last Synced: 2025-08-08T17:25:53.685Z (11 months ago)
- Topics: app, automatic, bootstrap, configuration, create, scaffold
- Language: TypeScript
- Homepage:
- Size: 650 KB
- Stars: 4
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
@hideoo/create-app 🏗️
Don't Repeat Yourself
Bootstrapping a new project always consists of the exact same steps like setting up TypeScript, installing dependencies, configuring a linter, adding various miscellaneous files and so on.
`@hideoo/create-app` is a very opinionated CLI utility to help me quickly bootstrap a new project by either:
- creating a new project from scratch
- updating a new project generated with `pnpm create vite` or `pnpm create next-app`
> **Note**: [pnpm](https://pnpm.io) and the [GitHub CLI](https://cli.github.com) are required to use this utility.
## Usage
```shell
$ pnpm create @hideoo/app
```
And that's it, no options, no configuration and no extra tweaks needed, you are ready to go!
## Features
Either **create** a new app from scratch (in the current directory or a new directory) or **update** an existing app.
### Tools
- TypeScript with a configuration extending [@hideoo/tsconfig](https://github.com/HiDeoo/tsconfig)
- ESLint with a flat configuration extending [@hideoo/eslint-config](https://github.com/HiDeoo/eslint-config)
- Prettier with a configuration extending [@hideoo/prettier-config](https://github.com/HiDeoo/prettier-config) and a pre-filled `.prettierignore` file
### Package.json
- Pre-fill most common fields
- Add a `lint` script to lint and typecheck the code
- Add a `format` script to ensure formatting
- Enforce the package manager to the latest version of pnpm (reused in GitHub Actions)
- Enforce a minimum Node.js version (reused in GitHub Actions)
- Optionally add the configuration for publishing to npm
- Sort all well-known fields based on [custom rules](src/config.ts#L16-L88)
### Dependencies
- Automatically install all dependencies using `pnpm`
- Use the latest version for all new and existing dependencies (versions are fetched from [jsDelivr](https://www.jsdelivr.com))
### Miscellaneous
- Automatically run Prettier and ESLint with the `--fix` option on all files _(this is particularly useful when updating an existing project to ensure all files match the proper code style)_
- Add various various pre-filled files like `.gitignore`, `README.md` and `LICENSE`
### Git
- Initialize a new Git repository if needed
- If a repository matching the name of the app exists on GitHub, update various GitHub repository settings
- Enable setting to [automatically delete head branches after pull requests are merged](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-the-automatic-deletion-of-branches)
- Enable setting to [always suggest updating pull request branches](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-suggestions-to-update-pull-request-branches)
- For public npm packages:
- Disable setting to [allow merge commits](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/configuring-commit-merging-for-pull-requests)
- Disable setting to [allow rebase merging](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/configuring-commit-rebasing-for-pull-requests)
- Enable setting to [allow GitHub Actions to create and approve pull requests](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#preventing-github-actions-from-creating-or-approving-pull-requests)
- If a repository matching the name of the app exists on GitHub, enable the GitHub repository setting to [automatically delete head branches after pull requests are merged](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-the-automatic-deletion-of-branches)
- Stage _added_ or _updated_ files during the creation of the app at the end of the process
### GitHub Actions
- Create an autofix workflow to ensure formatting and using [autofix.ci](https://autofix.ci/) to automatically update pull requests if needed
- Create an integration workflow to lint, typecheck and test the project for every push on the main branch or pull request
- Add a customizable release workflow
- For public npm packages:
- Use [Changesets](https://github.com/changesets/changesets) to manage versioning and changelogs
- A webpage to create a new npm automation access token will be opened during the installation in order to automatically add the new token as a secret to the repository matching the name of the app on GitHub if it exists
- The released package(s) will be published with [provenance](https://github.blog/2023-04-19-introducing-npm-package-provenance) to the npm registry
- For other projects:
- The release workflow can be triggered by bumping the version number in a commit with a tag matching the new version number (or just running `pnpx bumpp`)
- A new release containing the changelog will be published on GitHub based on [conventional commits](https://www.conventionalcommits.org)
## License
Licensed under the MIT License, Copyright © HiDeoo.
See [LICENSE](https://github.com/HiDeoo/create-app/blob/main/LICENSE) for more information.