Skip to content
Declarative state and side effects management for popular JavaScript frameworks
Branch: next
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
images docs: update logo Aug 14, 2016
packages fix(cerebral): handle no props computed for devtools May 5, 2019
scripts chore(setup): fix setup package specific dev deps like types and parcel May 31, 2018
.babelrc feat(Controller): add snapshot testing Jan 16, 2018
.bithoundrc chore: configure bithound analysis tool May 26, 2017
.coveralls.yml chore(coverage): update coverage upload config Oct 10, 2016
.cz-config.js feat(react): update to latest React lifecycle API, also fix commit co… Jun 8, 2018
.eslintignore chore(format): ignore scripts on prettier Jan 21, 2019
.gitattributes style: normalize line endings Mar 23, 2018
.gitignore chore: remove .cache and add it to .gitignore May 31, 2018
.prettierignore docs(http): update docs May 31, 2018
.travis.yml chore: lock repo-cooker version for Travis Jun 12, 2018 docs: point to github release notes for changelog Aug 14, 2016
LICENSE chore: initial monorepoe setup Oct 10, 2016 style: auto-reformat markdown, CSS and JSON files Mar 25, 2018
package.json chore(prettier): update to 1.14.0 and fix Aug 8, 2018


A declarative state and side effects management solution for popular JavaScript frameworks

NPM version Build status Coverage Status bitHound Score Commitizen friendly Discord



The entire Cerebral codebase has been rewritten to encourage contributions. The code is cleaned up, commented and all code is in a "monorepo". That means you can run tests across projects and general management of the code is simplified a lot.

  1. Clone the monorepo: git clone
  2. In root: npm install

The packages are located under packages folder and there is no need to run npm install for each package.

Using monorepo for your own apps

If you want to use Cerebral 2 directly from your cloned repo, you can create a symlinks for following directories into the node_modules directory of your app:

  • packages/node_modules/cerebral
  • packages/node_modules/function-tree
  • packages/node_modules/@cerebral

If your app and the cerebral monorepo are in the same folder you can do from inside your app directory:

$ ln -s ../../cerebral/packages/node_modules/cerebral/ node_modules/
# ...

Just remember to unlink the package before installing it from npm:

$ unlink node_modules/cerebral
# ...

Running demos

Go to the respective packages/demos/some-demo-folder and run npm start


You can run all tests in all packages from root:

npm test

Or you can run tests for specific packages by going to package root and do the same:

npm test

Changing the code

When you make a code change you should create a branch first. When the code is changed and backed up by a test you can commit it from the root using:

npm run commit

This will give you a guide to creating a commit message. Then you just push and create a pull request as normal on Github.

Release process

  • Review and merge PRs into next branch. It is safe to use "Update branch", the commit created by Github will not be part of next history
  • If changes to repo-cooker, clean Travis NPM cache
  • From command line:
$ git checkout next
$ git pull
$ npm install # make sure any new dependencies are installed
$ npm install --no-save repo-cooker # needed to test release, make sure you have latest
$ npm run release # and check release notes
$ git checkout master
$ git pull
$ git merge --ff-only next
$ git push
You can’t perform that action at this time.