# ES2015 boilerplate for creating libraries with Babel, Rollup and Jest

[![Build Status](https://travis-ci.org/Kflash/jesti.svg?branch=master)](https://travis-ci.org/Kflash/jesti)
[![Coverage Status](https://coveralls.io/repos/Kflash/jesti/badge.svg?branch=master&service=github)](https://coveralls.io/github/Kflash/jesti?branch=master)
[![npm version](https://badge.fury.io/js/jesti.svg)](https://badge.fury.io/js/jesti)
[![npm](https://img.shields.io/npm/l/express.svg?style=flat-square)](https://github.com/kflash/jesti/blob/master/LICENSE.md)

## Features

* [ES6 with Babel](http://babeljs.io/) for ES6 and ES7
* [Jest](https://facebook.github.io/jest/) for unit tests
* [Jasmine](http://jasmine.github.io/) for behavior-driven javascript
* [Rollup](http://rollupjs.org/) for bundling
* [Eslint](http://eslint.org/) to maintain a consistent code style
* Unit tests written with ES2015 get transpiled on the fly
* Browser tests in the browser
* Node >= 5.x

## Getting Started

Just clone the repo and install the necessary node modules.

```js
$ git clone https://github.com/kflash/jesti.git jesti
$ cd jesti
$ npm install                   # Install Node modules listed in ./package.json
$ npm run build                 # Build a minified and a non-minified version of the library
```
## Workflow

* `npm run build` - Build task that generate a minified and a non-minified script
* `npm run build:prod` - Build task that generate a production bundle
* `npm run build:dev` - Build task that generate a development bundle
* `npm run build:es6` - Build task that generate and preserves ES6 imports and exports into a ES2015 development bundle
* `npm run lint:source` - Lint the source
* `npm run lint:tests` - Lint the unit tests
* `npm run clean` - Remove the coverage report - and the *dist* folder
* `npm run test` - Runs unit tests
* `npm run coverage` - Runs unit tests and outputs a coverage report
* `npm run watch` - Run all unit tests and watch files for changes
* `npm run packages` - List installed packages
* `npm run package:purge` - Remove all dependencies
* `npm run package:reinstall` - Reinstall all dependencies
* `npm run package:check` - shows a list over dependencies with a higher version number then the current one - if any
* `npm run package:upgrade` - Automaticly upgrade all devDependencies & dependencies, and update package.json
* `npm run browser` - runs browser unit tests in the browser. All of your unit tests get bundled automatically.

## Testing environment

This project uses Jest to run your unit tests.

To add a unit test, simply create a `.spec.browser.js` inside the `~../__tests__/` folder. Jest will pick up on these files automatically.

To run the tests in the project, just simply `npm run test` for browser tests.

To keep watching the common test suites that you are working on, simply do `npm run watch`.

## Package management

Boily has build-in some nice features to always make sure your dependency tree are up to date.

To check for the latest dependencies, simply run `npm run package:check`.

If you want to update your packages, you can simply do `npm run package:upgrade`.

*Note!* Your `package.json` will be automatically updated so make sure you have saved your changes before running this.

To reinstall all packages, do `npm run package:reinstall`, and to remove all packages  `npm run package:purge`.

## Linting

ESLint are used to lint your source. To change the rules, edit the .eslintrc file in the root directory, respectively.

## Installation

Download the package, and run this from the command line:

```
npm install
```

## License
MIT Â© [KFlash](https://github.com/kflash)
