# ![Modern Node](http://i.imgur.com/PqQAqwO.png) [![Unix CI](https://img.shields.io/travis/sheerun/modern-node/master.svg)](https://travis-ci.org/sheerun/modern-node) [![Modern Node](https://img.shields.io/badge/modern-node-9BB48F.svg)](https://github.com/sheerun/modern-node)

> All-in-one development toolkit for creating node modules with Jest, Prettier, ESLint, and Standard

- 🃏 Testing with [Jest](https://facebook.github.io/jest/)
- 💅 Formatting with [prettier](https://prettier.io/)
- 🌟 Linting with [eslint](https://eslint.org/) configured on [standard](https://standardjs.com/) rules
- 🐶 Automatically runs `precommit` script from `package.json` from when committing code

## Installation (new projects)

```
yarn create modern-node my-module
```

> If you're using [npm](https://www.npmjs.com/): `npm init modern-node my-module`.

## Installation (existing projects)

```
yarn add --dev modern-node
```

> If you're using [npm](https://www.npmjs.com/): `npm install --save-dev modern-node`.

Now you add appropriate scripts to your `package.json`:

```
{
  "scripts": {
    "test": "modern test",
    "format": "modern format",
    "lint": "modern lint",
    "precommit": "modern precommit"
  }
}
```

## Usage

Test your project with Jest (watch mode, unless running on CI server):

```
modern test
```

Format all files in the project with [prettier-standard](https://github.com/sheerun/prettier-standard) (add `--help` for more options):

```
modern format             # format all files
modern format --changed   # format only changed files
modern format '**/*.js'   # format only selected files
```

Format and files in the project (add `--help` for more options):

```
modern lint             # lint all files
modern lint --changed   # lint only changed files
modern lint '**/*.js'   # lint only selected files
```

Format and lint staged changes (useful to put into `precommit` script):

```
modern precommit
```

For now linted extensions can be configured with `lint-staged` option in `package.json`.

## License

MIT
