GithubHelp home page GithubHelp logo

yarsk's Introduction

YARSK

Yet Another React Starter Kit.

Everyone has one, here's mine.

Features

  • React, of course.
  • Webpack for asset bundling.
  • React hot loader enabled out of the box. Changes to React components will show in the browser immediately without a full reload.
  • Babel for ES6+ transpilation.
  • SASS (SCSS or Sass style), Less, and Autoprefixer enabled by default through Webpack.
  • Image loaders setup and ready to go so you can reference your images as require() statements in JS, or just use url() as usual in CSS and Webpack will take care of the rest. See the Header component and the Application component stylesheet for examples of each.
  • Karma + Mocha for testing. Istanbul and isparta are also activated with karma-coverage for code coverage analysis, even on your ES6 classes. See Testing below for more info.
  • Production configuration with best practices applied for optimizing React file size. The bundled JS file produced from this example is right at 40KB minified and gzipped. See Building below for more info.
  • Built-in command for publishing your app to GitHub pages. See Building below for more info.
  • Optional support for ESLint via babel-eslint.

This kit is intentionally missing a specific Flux implementation, or any other non-essential library, as I use this as a base for experimenting with various parts of the React ecosystem.

In the wild

Usage

Fork this repo, then run:

npm install
npm start

That will fire up a webpack dev server in hot mode. Most changes will be reflected in the browser automatically without a browser reload. You can view the app in the browser at http://localhost:8080.

Building

To generate a production build, run:

npm run build

The above command will generate a dist folder with the appropriate index.html file along with the minified CSS and JS files.

You can also automatically publish to GitHub pages. Just run this instead of the regular build command:

npm run build:gh

You can then view your app at http://[yourgithubusername].github.io/[reponame]. For example, you can load this demo at http://bradleyboy.github.io/yarsk.

Modifying the HTML

The HTML file is generated using the conf/tmpl.html file. This file is used for both the development and production build.

Tests

The tests use Karma, Mocha and Chai through PhantomJS. See the example test in app/Application/__tests__/index.js. The test suite can be run like so:

npm test

To run the tests in watch mode (tests will re-run each time a file changes), use this instead:

npm run test:watch

You can generate code coverage reports with:

npm run test:coverage

See the coverage directory once that command is completed.

Finally, the repo is Travis ready. The .travis.yml file should work out of the box, just add your repo in Travis.

Linting

If you'd like your JavaScript to be linted, copy the .eslintrc.example to .eslintrc. I've included my own defaults, feel free to modify them to your own taste. For more information on configuring ESLint, consult its documentation. Linting is run before each webpack build when a .eslintrc file is present.

.editorconfig

An example .editorconfig file is provided with sensible defaults for JavaScript. Feel free to modify .editorconfig.example to match your own preferences, then renamed the file to .editorconfig and use an IDE or editor that supports EditorConfig.

yarsk's People

Contributors

bradleyboy avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.