Starter Kit for Building Applications in React and Redux in ES6 on Pluralsight
- Install Node 6. Need to run multiple versions of Node? Use nvm or nvm-windows
- Clone this repository. -
git clone https://github.com/coryhouse/pluralsight-redux-starter.git
or download the zip - Make sure you're in the directory you just created. -
cd pluralsight-redux-starter
- Install Node Packages. -
npm install
- Run the app. -
npm start -s
This will run the automated build process, start up a webserver, and open the application in your default browser. When doing development with this kit, this command will continue watching files all your files. Every time you hit save the code is rebuilt, linting runs, and tests run automatically. Note: The -s flag is optional. It enables silent mode which suppresses unnecessary messages during the build. - Disable safe write in your editor to assure hot reloading works properly.
- Install React developer tools and Redux Dev Tools in Chrome.
- Having issues? See below.
- Run
npm install
- If you forget to do this, you'll see this:babel-node: command not found
. - Make sure the path doesn't include any spaces, or install the latest version of eslint-watch which adds support for paths containing spaces:
npm install eslint-watch@2.1.13
- Make sure you're running the latest version of Node. Or, use Node 5.12.0 if you're having issues on Windows. Node 6 has issues on some Windows machines.
- Make sure files with names that begin with a dot (.babelrc, .editorconfig, .eslintrc) are copied to the project directory root. This is easy to overlook if you copy this repository manually.
- Don't run the project from a symbolic link. It will cause issues with file watches.
- Use path.resolve on all path references in both the dev and prod webpack.config. See this commit for an example.
- Delete any .eslintrc in your user directory and disable any ESLint plugin / custom rules within your editor since these will conflict with the ESLint rules defined in the course.
- On Windows? Open your console as an administrator. This will assure the console has the necessary rights to perform installs.
- Try using your OS's native command line instead of an editor's. For some people, an editor's command line configuration may cause issues.
- Ensure you do not have NODE_ENV=production in your env variables as it will not install the devDependencies. To check run this on the command line:
set NODE_ENV
. If it comes back as production, you need to clear this env variable. - Make sure you're using the same imports as the course demo. I've seen some people import ES6 code from node_modules via different imports like
import Route from "react-router/es6/Route";
andimport IndexRoute from "react-router/es6/IndexRoute";
. Don't do that. :) Use the exact imports I use in the course. - Reference bundle.js with a leading slash or you'll get an unexpected token error on reload of deep links.
- Make sure you have a .babelrc file defined in the root, as provided in this repo. Without it, you'll get a
Unexpected token import
error. - Nothing above work? Delete your node_modules folder and re-run npm install.
Dependency | Use |
---|---|
babel-polyfill | Polyfill for Babel features that cannot be transpiled |
bootstrap | CSS Framework |
jquery | Only used to support toastr |
react | React library |
react-dom | React library for DOM rendering |
react-redux | Redux library for connecting React components to Redux |
react-router | React library for routing |
react-router-redux | Keep React Router in sync with Redux application state |
redux | Library for unidirectional data flows |
redux-thunk | Async redux library |
toastr | Display messages to the user |
Dependency | Use |
---|---|
babel-cli | Babel Command line interface |
babel-core | Babel Core for transpiling the new JavaScript to old |
babel-loader | Adds Babel support to Webpack |
babel-plugin-react-display-name | Add displayName to React.createClass calls |
babel-preset-es2015 | Babel preset for ES2015 |
babel-preset-react | Add JSX support to Babel |
babel-preset-react-hmre | Hot reloading preset for Babel |
babel-register | Register Babel to transpile our Mocha tests |
cheerio | Supports querying DOM with jQuery like syntax - Useful in testing and build process for HTML manipulation |
colors | Adds color support to terminal |
compression | Add gzip support to Express |
cross-env | Cross-environment friendly way to handle environment variables |
css-loader | Add CSS support to Webpack |
enzyme | Simplified JavaScript Testing utilities for React |
eslint | Lints JavaScript |
eslint-plugin-import | Advanced linting of ES6 imports |
eslint-plugin-react | Adds additional React-related rules to ESLint |
eslint-watch | Add watch functionality to ESLint |
eventsource-polyfill | Polyfill to support hot reloading in IE |
expect | Assertion library for use with Mocha |
express | Serves development and production builds |
extract-text-webpack-plugin | Extracts CSS into separate file for production build |
file-loader | Adds file loading support to Webpack |
jsdom | In-memory DOM for testing |
mocha | JavaScript testing library |
nock | Mock HTTP requests for testing |
npm-run-all | Display results of multiple commands on single command line |
open | Open app in default browser |
react-addons-test-utils | Adds React TestUtils |
redux-immutable-state-invariant | Warn when Redux state is mutated |
redux-mock-store | Mock Redux store for testing |
rimraf | Delete files |
style-loader | Add Style support to Webpack |
url-loader | Add url loading support to Webpack |
webpack | Bundler with plugin system and integrated development server |
webpack-dev-middleware | Adds middleware support to webpack |
webpack-hot-middleware | Adds hot reloading to webpack |