manishshanker / react-redux-d3-webpack-es6-seed

A project seed to start react, redux and d3 project.
MIT License
1 stars 0 forks source link

React + Redux w/ ES6 and react-vis (D3) Starter Project

A boilerplate using React, Redux, webpack + hot module reloading, and ES6 + JSX via Babel.

The provided boilerplate enables client-side ES6 via the following technologies:

Getting Started

Installation

$ git clone https://github.com/manishshanker/react-redux-d3-webpack-es6-seed.git app-name
$ cd app-name
$ npm install

White Label It

Development

There are two ways in which you can build and run the web app:

Testing

To execute all unit tests, use:

npm run test

To run unit tests continuously during development (watch tests), use:

npm run test:watch

FAQ

What's this for?

This starter kit implements best practices like testing (unit testing), minification, bundling, and so on. It saves you from the long, painful process of wiring it all together into an automated dev environment and build process.

What's happening under the hood when I run npm start?

Webpack serves your app in memory when you run npm start. No physical files are written. However, the web root is /src, so you can reference files under /src in index.html. When the app is built using npm run build, physical files are written to /build folder and the app is served from /build.

How is Sass being processed?

We're handling it differently in DEV vs PROD.

When you run npm start:

  1. The sass-loader compiles Sass into CSS
  2. Webpack bundles the compiled CSS into app.js. Sounds weird, but it works!
  3. app.js contains code that loads styles into the <head> section of index.html via JavaScript. This is why there is no stylesheet reference in index.html. In fact, if you disable JavaScript in your browser, you'll see the styles don't load either.

The approach above supports hot reloading, which is great for development. However, it also create a flash of unstyled content on load because you have to wait for the JavaScript to parse and load styles before they're applied. So for the production build, we use a different approach:

When you run npm run build:

  1. The sass-loader compiles Sass into CSS
  2. The extract-text-webpack-plugin extracts the compiled Sass into app.css
  3. buildHtml.js adds a reference to the stylesheet to the head of index.html.

How do I deploy this?

npm run build. This will prepare and build the project for production use. It does the following:

Credits