nodejs-project-example
v0.0.0-development
Published
Bare bones tools that should be used in every Node.js project.
Downloads
7
Readme
Node.js Project Example
Repository containing the bare bones tools I use in every Node.js project (yarn, flow, eslint, prettier, husky, flow, babel, jest, snyk, greenkeeper, circleci, semantic-release)
Requirements
- Node.js (see .nvmrc for correct version).
- Yarn
- Greenkeeper.io configured to run on your repository.
- CircleCI.com configured to run on your repository.
Setup
- Clone this repository.
- In this repository's root folder, run
yarn
.
Testing & Linting
This project uses Jest, ESlint with the AirBnb standard, and Prettier for testing, linting, and formatting.
- All test files are suffixed with
.test.js
. - To run tests:
yarn test
. - To lint this codebase, run:
yarn lint
. - To format this codebase, run:
yarn prettier
. - To validate flow typing, run:
yarn flow
. - NOTE: lint and prettier will be run before a commit is made.
Building
To build this project, simply run yarn build
.
Services and Integrations
This project contains CircleCI integration configuration. To get this working, do the following:
- Sign up for a CircleCI account.
- Add your project to Circle (Projects -> Add Project).
- Add
GH_TOKEN
andNPM_TOKEN
environment variables to your CircleCI project. (See this documentation for instructions on fetching those tokens). - Update CircleCI shield in this README to point to the correct repository.
To set up Greenkeeper, do the following:
- Make sure you have CircleCI set up.
- Sign up for a Greenkeeper account.
- Add your project repository to Greenkeeper.
- Merge the initial Greenkeeper pull request.
- Update greenkeeper, dependencies, and devDependencies shields in this README to point to the correct repository.
To set up Snyk
- Sign up for a Snyk.io account.
- Enable Snyk for your repository.
- Update Snyk shield in this README to point to the correct repository.
Automated Releases
To enable automated releases to NPM via semantic release, replace the semantic-release
command in your package.json file with the following:
...
"semantic-release": "semantic-release pre ; npm publish ; semantic-release post",
...
This project isn't published to NPM, this step simply adds npm publish
between semantic-release pre/post commands.