1.3.6 • Published 8 years ago

havunen v1.3.6

Weekly downloads
1
License
MIT
Repository
github
Last release
8 years ago

ES2015 boilerplate for creating libraries with the Rollup.

Build Status Coverage Status NPM version npm downloads

Features

  • ES6 with Babel for ES6 and ES7
  • Rollup for bundling and unit tests
  • Stub let you stub module exports at runtime when bundling with Rollup.
  • Rewire enables options to mock modules for testing purposes.
  • Sinon.JS with examples for test doubles
  • Chai as Promised extends Chai with a fluent language for asserting facts about promises.
  • Eslint to maintain a consistent code style
  • Typescript support with Rollup and JSX
  • Flow for quickly find errors in JavaScript applications
  • Karma as the test runner
  • Universal Module Definition (UMD) API, which provides compatibility with the most popular script loaders, to the output.
  • jsdom for server tests
  • Unit tests written with ES2015 get transpiled on the fly
  • Node >= 5.x

Quick start

The only development dependency of this project is Node.js. So just make sure you have it installed. Then type few commands known to every Node developer...

$ git clone https://github.com/kflash/havunen.git
$ cd havunen
$ npm install                   # Install Node modules listed in ./package.json
$ npm run build                 # Build a minified and a non-minified version of the library

... and boom! You have it all setup for you!

Workflow

  • npm run build - Build task that generates both minified and non-minified scripts
  • npm run build:prod - Build task that generate a minified script
  • npm run build:dev - Build task that generate a non-minified script
  • npm run lint:source - Lint both source and unit test files
  • 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 for both server and the browser
  • npm run test:browser - Runs the unit tests for browser
  • npm run test:server - Runs the unit tests on the server
  • npm run server:cov - Run Isparta, a code coverage tool;
  • npm run server:cov:publish - Publish coverage report to a remote website;
  • npm run karma:chrome - Runs the unit tests for browser with Chrome
  • npm run karma:firefox - Runs the unit tests for browser with Firefox
  • npm run watch:server - Run all unit tests for server & watch files for changes
  • npm run watch:browser - Run all unit tests for browser & watch files for changes
  • npm run watch:chrome - Run all unit tests for browser with Chrome & watch files for changes
  • npm run packages - List installed packages
  • npm run packages:purge - Remove all dependencies
  • npm run packages:reinstall - Reinstall all dependencies
  • npm run packages:check - shows a list over dependencies with a higher version number then the current one - if any
  • npm run packages:upgrade - Automaticly upgrade all devDependencies & dependencies, and update package.json

Testing environment

This project uses Mocha to run your unit tests, it uses Karma as the test runner, it enables the feature that you are able to render your tests to the browser (e.g: Firefox, Chrome etc.).

To add a unit test, simply create a .specd.js file inside the ~../test/specs/ folder. Karma will pick up on these files automatically, and Mocha and Chai will be available within your unit tests without the need to import them.

To run the tests in the project, just simply npm run test for both server and client unit tests, or npm run test:server. for server or npm run test:browser. for browser tests.

To keep watching the common test suites that you are working on, simply do npm run watch:browser or npm run watch:server.

Adding other test files

  • Browser:, simply open up the karma.conf.js file in the ~/config folder and add your files to the files: and preprocessors: section.
  • NodejS: open up the ~/config/mocha.opts file and add your files to the top of the file.

JSX

Only syntax parsing are supported. If you want to transform JSX you need to add a JSX transformer plugins for it. E.g babel-plugin-transform-react-jsx for React support.

Flow

Both parsing and transformation of Flow comments are supported by this boilerplate.

Rewire

Rewire is supported through the babel-plugin-rewire plugin. It is useful for writing tests, specifically to mock the dependencies of the module under test. Examples and tests are included.

Sinon

Sinon.JS is also set up for test doubles - see BatClass.common.js for examples of both Sinon and Rewire using ES6 classes.

Coveralls

This library is set up to integrate with Coveralls, and will automaticly publish your coverage report to coveralls.io if you have created an account there.

##Rollup

Rollup are used as the library bundler. It produces a cleaner and more lightweight source code then what you get with for example webpack and browserify.

Package management

Havunen 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.

Pre-commit

This boilerplate uses a pre-commit hook to ensure that your npm test (or other specified scripts) passes before you can commit your changes. This all conveniently configured in your package.json.

jsDOM

jsdom are used to set up React.js components' testing harness under Node.js, based on the amazing jsdom. Also a couple of bugs related to React is fixed.

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

The MIT License (MIT)

Copyright (c) 2016 KFlash

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

1.3.6

8 years ago

1.3.5

8 years ago

1.3.4

8 years ago

1.3.3

8 years ago

1.3.2

8 years ago

1.3.1

8 years ago

1.3.0

8 years ago

1.2.3

8 years ago

1.2.2

8 years ago

1.2.1

8 years ago

1.2.0

8 years ago

1.1.9

8 years ago

1.1.8

8 years ago

1.1.7

8 years ago

1.1.6

8 years ago

1.1.5

8 years ago

1.1.4

8 years ago

1.1.3

8 years ago

1.1.1

8 years ago

1.1.0

8 years ago

1.0.8

8 years ago

1.0.7

8 years ago

1.0.5

8 years ago

1.0.4

8 years ago

1.0.3

8 years ago

1.0.2

8 years ago

1.0.1

8 years ago

1.0.0

8 years ago

0.1.4

8 years ago

0.1.3

8 years ago

0.1.2

8 years ago

0.1.1

8 years ago

0.0.18

8 years ago

0.0.17

8 years ago

0.0.16

8 years ago

0.0.15

8 years ago

0.0.14

8 years ago

0.0.13

8 years ago

0.0.12

8 years ago

0.0.11

8 years ago

0.0.10

8 years ago

0.0.9

8 years ago

0.0.8

8 years ago

0.0.7

8 years ago

0.0.6

8 years ago

0.0.5

8 years ago

0.0.3

8 years ago

0.0.2

8 years ago

0.0.1

8 years ago