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.
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
0.1.76
Make sure
fyn
's version is at least0.1.76
Fork and clone the repo at https://github.com/electrode-io/electrode.git and bootstrap all the packages.
$ git clone https://github.com/<your-github-id>/electrode.git
$ cd electrode
$ npm install
$ npm run bootstrap
Because many of our modules depend on each other, to make local development easier, we use fyn to install packages when doing development.
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/react-vendor-dll
$ fyn
$ cd ../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.
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.
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.
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
ormajor
minor
-min
orminor
patch
-pat
orpatch
- 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.
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
andnpm -v
- Your OS and version
- Electrode package versions
- Any errors output
- If possible, sample code and steps on how to reproduce the bug
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.
- which is why for the top level dir of our lerna repo, we use
$ 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: https://toolchain.gitbook.com/structure.html
Without the
--no-watch --no-live
options it becomes unusably slow on my machine.
If things don't work, then remove~/.gitbook
and rungitbook install
orgitbook 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:
- Use
clap update-changelog
to detect packages that changed and their version bumps. - Verify and check the file
CHANGELOG.md
, add a summary of key changes under the date. - Amend the commit for
CHANGELOG.md
with summary changes. - Run
npx fynpo prepare --no-tag
to prepare packages for release. - Run
git tag -a rel-v<#>-<date>
where<#>
is the major archetype version, and<date>
asMMDDYYYY
. - Publish the packages that
fynpo prepare
shown that has updates. - Push release commits.