TinyBase

Developing TinyBase

This guide is for people who would like to checkout the TinyBase code and build it from source. It's a quick overview of the common workflows.

Checking Out The Code

Check out the TinyBase repository with the following command (assuming you have all the dependent tools installed), and install the developer dependencies:

git clone git@github.com:tinyplex/tinybase.git
cd tinybase
npm install

You are good to get started! There are a number of gulp-based workflows available if you are working on TinyBase, and the following are some of the important ones:

Compilation

To compile the Typescript into executable JavaScript you can either choose to do it quickly into one module for the purposes of testing:

npm run compileForTest

It should take a few seconds at most. Production-ready minified modules take a little longer:

npm run compileForProd

Code Quality

Your IDE should be able to do this continuously. But should you wish to check that Typescript validates the entire codebase and that there are no type errors or unused exports, use the following:

npm run ts

Similarly, this task ensure the code lints and is all formatted correctly with prettier:

npm run lint

You can also check that there are no spelling mistakes in the code or documentation - which is very important!

npm run spell

Testing

There are three major sets of tests: unit tests, performance tests, and end-to-end tests of the demos in the TinyBase site. The unit tests, interestingly, include testing all the inline code and examples in the documentation.

Unit tests are the most common to run. If the code is already compiled, you can run these with:

npm run testUnit

Or, while you are iterating on code, the following will compile and unit test it:

npm run compileAndTestUnit

Performance tests are very similar:

npm run testPerf

...or:

npm run compileAndTestPerf

Every performance test will render an ASCII chart which should be relatively flat. The idea here is that you can check visually that you haven't introduced a high time-complexity algorithm bug.

Finally, end-to-end testing validates that the demos on the website work. This requires you to compile for production, and generate the documentation first:

npm run compileForProd
npm run compileDocs
npm run testE2e

Documentation

The end-to-end tests will start up their own web server to test the documentation site, but if you separately want to serve the TinyBase website, you can use:

npm run compileDocs
npm run serveDocs

This will make the website available on localhost:8080 (and you probably want to run the serveDocs task in a separate window since it's long-running).

The compileDocs task involves generating all the API documentation which can be a little slow. If you just want to work on the website styling or interactivity you can instead just compile the assets:

npm run compileDocsAssetsOnly

And if you are working on just the demos or guides, the following generates just those:

npm run compileDocsPagesOnly

This removes all the API documentation though, so don't forget to run a full compileDocs task again before finally committing code.

The Master Check

To make sure everything is in decent shape before committing or publishing to npm, this task is a superset of everything:

npm run prePublishPackage

That's it, and see you in the pull requests!