App generator with everything exposed for maximum control (powered by TS, Babel, Jest, ESLint, Prettier, CircleCI, and more)
Like zero-config? Get out!
Generate a flexible starting point for your app, where config files and scripts are in-your-face and ready to adapt to your needs.
Because every app is unique.
Go for it:
npm init exposed-app
- 🔧 TypeScript, Babel, Jest, ESLint, Prettier, and more
- Configured with sensible defaults
- All optional and tweakable
- 🚀 CI/CD
- Automatic validation in pull requests, powered by CircleCI
- Automatic versioning and release to NPM after merging to
master
, powered by semantic-release
- đź“– Documentation templates
- README.md, CHANGELOG.md, CODE_OF_CONDUCT.md, MAINTAINING.md, and LICENSE
- GitHub templates for pull requests, bug reports, change requests, questions, and general issues.
- Architectural Decision Records
- 🎉 More!
- Automatically format and test changed files, powered by lint-staged
- VS Code settings
Run the following command and follow the prompts:
npm init exposed-app
You can also invoke the app with arguments. For example:
npx create-exposed-app \
--project-package-name="my-awesome-project" \
--project-overview="Does awesome stuff" \
--side="server" \
--author-name="Bruce Wayne" \
--author-email="[email protected]" \
--author-github="batman" \
--author-website="https://batman.com"
Run npx create-exposed-app --help
for details.
This project is authored and maintained by Matt Turnbull (iamturns.com / @iamturns).
Thank you to all contributors.
Open-source under MIT License.
Sorry about that. Please submit a bug report using the GitHub issue tracker.
Keen to hear all ideas! Create an enhancement request using the GitHub issue tracker.
Yes please! See the Development FAQ section.
Ask away using the GitHub issue tracker.
First time contributing code to an open-source project on GitHub? Check out this free video tutorial.
- If you don't have write access to this repo, fork it
- Clone the repo
- Install dependencies:
npm ci
- Ensure everything is working:
npm run validate
- Use VS Code? Run command
Extensions: Show Recommended Extensions
and install
-
Create a system-wide link for use in other directories:
npm link
-
Start develop mode:
npm run dev
-
For TDD fans:
npm run test:watch
-
Write code
-
Create new temporary directory to test app population named
create-exposed-app-test-my-new-feature
-
Run
npx create-exposed-app
in new directoryNote: This should reference your local
create-exposed-app
copy, setup by previous linking command -
Create a pull request on GitHub
-
Remove the system-wide link:
npm unlink
-
Remove the temporary test directory
create-exposed-app-test-my-new-feature
See ADR-005: Format Files and ADR-006: Format Files Programmatically.
Include the --no-verify
option during the commit:
git commit -m "WIP" --no-verify
See ADR-002: Prefer Configurable Dev Tools.
See ADR-003: Prefer Multiple Config Files.
See ADR-004: Minimally Transform Source Code During Build.
This option is available in the Babel config file (sourceMaps: true
), but has diffrent behaviour. Only the command line supports the creation of .map
files. See babel/babel#5261.
Linting errors should not be reported when formatting, that it was the lint
command is for.
Errors are ignored by appending the following: >/dev/null 2>&1 || true
.