Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: 3 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 (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-03-09T11:16:02.000Z (11 months ago)
- Last Synced: 2024-10-09T00:43:48.942Z (4 months ago)
- Topics: app, automatic, bootstrap, configuration, create, scaffold
- Language: TypeScript
- Homepage:
- Size: 554 KB
- Stars: 3
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.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, ensure formatting and typecheck the code
- 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`
- Pin all new and existing dependencies to the exact latest version (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
- Setup a pre-commit hook to run Prettier on all staged files and ESLint on supported staged files
- 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 integration workflow to lint, ensure formatting, typecheck and test the project for every push on the main branch or pull request
- Add a customizable release workflow that can be triggered by bumping the version number in a commit with a tag matching the new version number (or just running `pnpx bumpp`)
- The release workflow will fail if the integration workflow fails
- A new release containing the changelog will be published on GitHub based on [conventional commits](https://www.conventionalcommits.org)
- Optionally, if the app is a public npm package, 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 release workflow will also be modified to publish the package with [provenance](https://github.blog/2023-04-19-introducing-npm-package-provenance) to the npm registry.## License
Licensed under the MIT License, Copyright © HiDeoo.
See [LICENSE](https://github.com/HiDeoo/create-app/blob/main/LICENSE) for more information.