# JaLHyd - Javascript Library For Hydraulics See also [developers documentation](https://gitlab.irstea.fr/cassiopee/jalhyd/blob/master/DEVELOPERS.md) ## Build and release ### Requirements * nodejs ### Install dependencies ```sh npm install ``` ### Run unit tests using Jasmine Debugging might not be possible because of circular dependencies generated by typescript compiler ```sh npm run jasmine ``` ### Compile (es2015 modules) This is the preferred way of compiling, notably for usage in Web apps (ngHyd) ```sh npm run build ``` ### Compile for Node.js (commonjs modules) Use this if you want to write a CLI application in JS or TS, that will be executed by Node.js (see examples in `/boilerplate`) ```sh npm run build-node ``` ### Generate release package (es2015 modules) ```sh npm run package ``` ### Generate release package for Node.js (commonjs modules) ```sh npm run package-node ``` ### Flag suspicious language usage ```sh npm run lint ``` ### Generate typedoc ```sh npm run doc ``` ### Generate UML diagram The tsviz package can be used for drawing class diagram of the current code. To install tsviz: ```sh npm install -g tsviz ``` There's currently a bug on debian like distribution due to a wrong declaration of graphviz path in the code: https://github.com/joaompneves/tsviz/issues/5 To work around, you can create a link to the good path: `sudo ln -s /usr/bin/dot /usr/local/bin/dot` To draw the diagram: ```sh npm run viz ``` ## Release policy Use [semantic versioning](https://semver.org/). **When releasing a Cassiopee (NgHyd) version along with a JaLHyd version, it's discouraged to execute release steps manually, see "Release Policy / Release Script" in [NgHyd's README.md](https://gitlab.irstea.fr/cassiopee/nghyd/blob/master/README.md)** Before releasing a new stable version, one should complete the following files - `CHANGELOG.md` - `package.json` (update "version", or use `npm version`) Every stable version should be tagged with both - a tag stating compatibility with NgHyd, of the form `nghyd_X.Y.Z` - the `stable` tag The `stable` tag should be set **after** the NgHyd compatibility tag, so that `git describe` returns `stable` (latest tag). There should be **at least 1s** between the two tag commands, so that date sorting is not confused. Here are the steps to follow for an example **4.5.0** version ```sh npm version 4.5.0 # commit changes git tag -fa nghyd_4.5.0 sleep 1 git tag -fa stable git push --tags --force ```