Switch branches/tags
webpack-config-composer@1.1.1 webpack-config-composer@1.1.0 webpack-config-composer@1.0.4 webpack-config-composer@1.0.3 webpack-config-composer@1.0.2 webpack-config-composer@1.0.1 ignite-core@1.1.6 ignite-core@1.1.5 ignite-core@1.1.4 ignite-core@1.1.3 ignite-core@1.1.2 ignite-core@1.1.1 ignite-core@1.1.0 ignite-core@1.0.1 ignite-core@1.0.0 generator-electrode@4.2.5 generator-electrode@4.2.4 generator-electrode@4.2.3 generator-electrode@4.2.2 generator-electrode@4.2.1 generator-electrode@4.2.0 generator-electrode@4.1.3 generator-electrode@4.1.2 generator-electrode@4.1.1 generator-electrode@4.1.0 generator-electrode@4.0.7 generator-electrode@4.0.6 generator-electrode@4.0.5 generator-electrode@4.0.4 generator-electrode@4.0.3 generator-electrode@4.0.2 generator-electrode@4.0.1 generator-electrode@4.0.0 generator-electrode@3.4.6 generator-electrode@3.4.5 generator-electrode@3.4.4 generator-electrode@3.4.3 generator-electrode@3.4.2 generator-electrode@3.4.1 generator-electrode@3.4.0 generator-electrode@3.3.4 generator-electrode@3.3.3 generator-electrode@3.3.2 generator-electrode@3.3.0 generator-electrode@3.2.0 generator-electrode@3.1.2 generator-electrode@3.1.1 generator-electrode@3.1.0 generator-electrode@3.0.4 generator-electrode@3.0.3 generator-electrode@3.0.2 generator-electrode@3.0.1 generator-electrode@2.2.0 generator-electrode@2.1.0 generator-electrode@2.0.1 generator-electrode@2.0.0 generator-electrode@1.12.0 generator-electrode@1.11.0 generator-electrode@1.10.0 generator-electrode@1.9.0 generator-electrode@1.8.0 generator-electrode@1.7.2 generator-electrode@1.7.1 generator-electrode@1.7.0 generator-electrode@1.6.1 generator-electrode@1.6.0 generator-electrode@1.5.1 generator-electrode@1.5.0 generator-electrode-component@1.4.0 generator-electrode-component@1.3.0 generator-electrode-component@1.2.4 generator-electrode-component@1.2.3 generator-electrode-component@1.2.2 generator-electrode-component@1.2.1 electrode-webpack-reporter@0.4.8 electrode-webpack-reporter@0.4.7 electrode-webpack-reporter@0.4.6 electrode-webpack-reporter@0.4.5 electrode-webpack-reporter@0.4.3 electrode-webpack-reporter@0.4.2 electrode-webpack-reporter@0.4.1 electrode-webpack-reporter@0.4.0 electrode-webpack-reporter@0.3.13 electrode-webpack-reporter@0.3.12 electrode-webpack-reporter@0.3.11 electrode-webpack-reporter@0.3.10 electrode-webpack-reporter@0.3.9 electrode-webpack-reporter@0.3.8 electrode-webpack-reporter@0.3.7 electrode-webpack-reporter@0.3.6 electrode-webpack-reporter@0.3.5 electrode-webpack-reporter@0.3.4 electrode-webpack-reporter@0.3.3 electrode-webpack-reporter@0.3.2 electrode-webpack-reporter@0.3.1 electrode-webpack-reporter@0.3.0 electrode-ui-logger@1.1.3 electrode-ui-logger@1.1.2 electrode-ui-logger@1.1.1 electrode-ui-logger@1.1.0
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
157 lines (101 sloc) 5.12 KB


PRs and issues are always welcome! We appreciate your interest in Electrode and offer to help.

There are few guidelines that we request contributors to follow so that we can keep things well maintained.

Getting Started

This repo uses Lerna as a top level setup and fyn to manage Node Modules.


Install these CLI tools globally: xclap-cli and fyn

$ npm install -g xclap-cli fyn
$ fyn -V

Make sure fyn's version is at least 0.1.76

Fork and clone the repo at and bootstrap all the packages.

$ git clone<your-github-id>/electrode.git
$ cd electrode
$ npm install
$ npm run bootstrap

Quick Test

Because many of our modules depend on each other, to make local development easier, we use fyn to install packages when doing development.

Try a sample

Now you can go to the samples folder and try the universal-react-node sample app, develop and test your changes over there.

$ cd samples/universal-react-node
$ fyn
$ clap dev

After running above, you should see a similar text as Hapi.js server running at http://localhost:3000 in command line.

And when you open the browser at http://localhost:3000, you should see a large Electrode icon with a few demonstration components.

Test with generator

You can quickly use the generator to create an app in tmp/hapi-app for testing.

$ clap gen-hapi-app
$ cd tmp/hapi-app
$ fyn
$ clap dev

This sample app is using fyn to directly linked to the modules under the packages directory. Changes made there will be reflected in the app immediately. This is the typical testing and developing flow we use.

Contributing Guidelines

Submitting Pull Request

We love PRs and appreciate any help you can offer. Please follow the guidelines on styling and commit messages here.


We've now switched to use prettier to format all our code.

Our prettier settings are: --print-width 100

If you are making changes to a file that has not been updated yet, please commit the format first before making your changes.

PR and Commit messages

Since we use independent lerna mode, to help keep the changelog clear, please format all your commit message with the following guideline:

[<semver>][feat|bug|chore] <message>

  • <semver> can be:
    • major - maj or major
    • minor - min or minor
    • patch - pat or patch
  • Only include [feat|bug|chore] if it's applicable.
  • Please format your PR's title with the same format.

Please do everything you can to keep commits for a PR to a single package in packages.

A sample commit and PR message should look like:

[minor][feat] implement SSR support for Inferno

Note: Branching is recommended on Publish commits only so it's possible to rely on lerna to publish from that branch.

Filing Issues

We love to hear about your experience using Electrode and bug reports. Electrode has many features and it's hard for us to test everything under all scenarios and setup, so your help is very important to us.

When you submit a bug report, please include the following information:

  • NodeJS/npm versions by doing nodev -v and npm -v
  • Your OS and version
  • Electrode package versions
  • Any errors output
  • If possible, sample code and steps on how to reproduce the bug

Updating Docs

This repo has a gitbook documentation under docs. To review the docs as a gitbook locally:

  • Install gitbook-cli and the plugins for docs.
  • Note that gitbook (3.2.3) uses npm (3.9.2) to manage its own plugins and that may conflict with fyn installed node_modules.
    • which is why for the top level dir of our lerna repo, we use npm install directly.
$ cd electrode
$ npm install gitbook-cli -g
$ gitbook install
  • Now serve the book locally
$ gitbook serve --no-watch --no-live

And open your browser to http://localhost:4000 to view the docs.

Here is the documentation on a gitbook structure:

Without the --no-watch --no-live options it becomes unusably slow on my machine.
If things don't work, then remove ~/.gitbook and run gitbook install or gitbook fetch to let it reset itself.


The versioning of modules in the this repo are all automatically controlled by the commit message.

It's important that commits are isolated for the package they affected only and contains the version tags [major], [minor], or [patch]. [patch] is the default if tag is not found in commit message.

To release, there are three steps:

  1. Use clap update-changelog to detect packages that changed and their version bumps.
  2. Run npx fynpo prepare to look at and update dependencies and versions.
  3. Publish the packages that fynpo prepare shown that has updates.