builder-react-app v0.1.2
Builder Archetype: React App 
A React app archetype for builder.
This archetype provides both a robust set of scripts and default configs for a standard React app project as well as a builder-init compatible app generator for bootstrapping a new react app using this archetype.
Features provided by this archetype's scripts:
- spawning a node server with options for dev and hot-reload modes
- spawning a webpack server with options for dev and hot-reload modes
- running eslint using sensible default rules for client and server scripts and their associated tests
- building production assets
- running tests including client unit tests (karma), server REST and unit tests (mocha), and functional tests (mocha)
- generating coverage reports for client, server and functional tests using istanbul
- helper scripts that group common scripts together
Features provided by the builder-init compatible app generator
- uses the builder-react-app archetype for ease of script and config management
- redux for state management
- react-router for routing
- express for API and app routes
- server-side react rendering w/ bootstrapped data
Installation
To use the production and development workflows, install both this package and the development module:
$ npm install --save builder-react-app
$ npm install --save-dev builder-react-app-devBefore functional tests can be run, you will need to also run:
$ builder run install-devSee the development guide for information about using the builder command.
Generator
To bootstrap a new project from scratch with template files from this archetype, you can use builder-init:
$ npm install -g builder-init
$ builder-init builder-react-appThis will download this archetype, prompt you for several template data values and inflate the archetype templates to real files at a chosen directory.
Project Structure
See the development guide for workflows associated with this archetype.
The archetype assumes a file structure like the following:
server
index.js
test
client/
spec/
*.jsx?
main.js
test.html
func/
spec/
*.spec.js
setup.dev.js
setup.js
server/
rest/
*.spec.js
spec/
*.spec.js
setup.js
.builderrc
package.jsonThis matches the builder-init templates found in the source of this
archetype.
Usage Notes
Babel
This archetype does not currently specify its own .babelrc. Your project
should specify its own in the root directory if you want non-default Babel
settings (like using stage 2, for instance), use a .babelrc like so:
{
"stage": 2,
"nonStandard": true
}Tasks
$ builder help
Usage:
builder <action> <task(s)>
Actions:
run, concurrent, envs, help
Flags: General
--builderrc: Path to builder config file (default: `.builderrc`)
--help: Display help and exit
--version: Display version and exit
Tasks:
npm:start
[builder-react-app] node server/index.js
build
[builder-react-app] webpack --config node_modules/builder-react-app/config/webpack/webpack.config.js
check
[builder-react-app] builder concurrent lint test
check-ci
[builder-react-app] builder concurrent lint test-ci
check-ci-win
[builder-react-app] builder concurrent lint test-ci-win
check-cov
[builder-react-app] builder concurrent lint test-cov
check-dev
[builder-react-app] builder concurrent lint test-dev
dev
[builder-react-app] builder concurrent server-wds-test server-wds-dev server-dev
hot
[builder-react-app] builder concurrent server-wds-test server-wds-hot server-hot
install-dev
[builder-react-app] selenium-standalone install
lint
[builder-react-app] builder run lint-client && builder run lint-client-test && builder run lint-server && builder run lint-server-test
lint-client
[builder-react-app] eslint --ext .js,.jsx -c node_modules/builder-react-app/config/eslint/.eslintrc-client client templates
lint-client-test
[builder-react-app] eslint --ext .js,.jsx -c node_modules/builder-react-app/config/eslint/.eslintrc-client-test test/client
lint-server
[builder-react-app] eslint -c node_modules/builder-react-app/config/eslint/.eslintrc-server server shared
lint-server-test
[builder-react-app] eslint -c node_modules/builder-react-app/config/eslint/.eslintrc-server-test test/server test/func
prod
[builder-react-app] builder concurrent watch server sources
server
[builder-react-app] nodemon --watch client --watch server --watch templates --ext js,jsx server/index.js
server-dev
[builder-react-app] builder envs server '[{"WEBPACK_DEV":true}]'
server-hot
[builder-react-app] builder envs server '[{"WEBPACK_HOT":true}]'
server-wds-dev
[builder-react-app] webpack-dev-server --config node_modules/builder-react-app/config/webpack/webpack.config.dev.js --progress --colors --port 2992
server-wds-hot
[builder-react-app] webpack-dev-server --config node_modules/builder-react-app/config/webpack/webpack.config.hot.js --hot --progress --colors --port 2992 --inline
server-wds-test
[builder-react-app] webpack-dev-server --port 3001 --config node_modules/builder-react-app/config/webpack/webpack.config.test.js --colors
sources
[builder-react-app] http-server -p 3001 .
test-base
[builder-react-app] builder run test-client && builder run test-server && builder run test-func
test-ci
[builder-react-app] builder run test-client-ci && builder run test-server-cov && builder run test-func-cov
test-ci-win
[builder-react-app] builder run test-client-ci-win && builder run test-server && echo 'TODO(36) fix Appveyor test-func'
test-client
[builder-react-app] karma start node_modules/builder-react-app/config/karma/karma.conf.js
test-client-ci
[builder-react-app] karma start --browsers PhantomJS,Firefox node_modules/builder-react-app/config/karma/karma.conf.coverage.js
test-client-ci-win
[builder-react-app] karma start --browsers PhantomJS,IE node_modules/builder-react-app/config/karma/karma.conf.js
test-client-cov
[builder-react-app] karma start node_modules/builder-react-app/config/karma/karma.conf.coverage.js
test-client-dev
[builder-react-app] karma start node_modules/builder-react-app/config/karma/karma.conf.dev.js
test-cov
[builder-react-app] builder run test-client-cov && builder run test-server-cov && builder run test-func-cov
test-dev
[builder-react-app] builder run test-client-dev && builder run test-server && builder run test-func-dev
test-func
[builder-react-app] mocha --opts node_modules/builder-react-app/config/mocha/func/mocha.opts test/func/spec
test-func-cov
[builder-react-app] istanbul cover --config node_modules/builder-react-app/config/istanbul/.istanbul.func.yml _mocha -- --opts node_modules/builder-react-app/config/mocha/func/mocha.opts test/func/spec
test-func-dev
[builder-react-app] mocha --opts node_modules/builder-react-app/config/mocha/func/mocha.dev.opts test/func/spec
test-server
[builder-react-app] builder concurrent test-server-unit test-server-rest
test-server-cov
[builder-react-app] builder concurrent test-server-unit-cov test-server-rest-cov
test-server-rest
[builder-react-app] mocha --opts node_modules/builder-react-app/config/mocha/server/mocha.opts test/server/rest
test-server-rest-cov
[builder-react-app] istanbul cover --config node_modules/builder-react-app/config/istanbul/.istanbul.server-rest.yml _mocha -- --opts node_modules/builder-react-app/config/mocha/server/mocha.opts test/server/rest
test-server-unit
[builder-react-app] mocha --opts node_modules/builder-react-app/config/mocha/server/mocha.opts test/server/spec
test-server-unit-cov
[builder-react-app] istanbul cover --config node_modules/builder-react-app/config/istanbul/.istanbul.server-unit.yml _mocha -- --opts node_modules/builder-react-app/config/mocha/server/mocha.opts test/server/spec
watch
[builder-react-app] webpack --config node_modules/builder-react-app/config/webpack/webpack.config.js --watch --colors