esy
package.json
workflow for native development with Reason/OCaml.
This README serves as a development documentation for esy. For user documentation refer to esy.sh documentation site.
Repository structure
esy-build-package
— source code foresy-build-package
commandesy
— source code foresy
core commandsesy-install
— source code foresy install
,esy add
and other yarn-based command.esy-install/esy-install
— this is a submodule which points toesy/esy-install
repo, a fork ofyarn
.
test
— unit teststest-e2e
— integration tests foresy
test-opam
— "OPAM top 100 packages" test suitelinux-build
— Docker based macOS to Linux cross compilation infra
Workflow
To make changes to esy
and test them locally:
% git clone git://github.com/esy/esy.git
% cd esy
% make bootstrap
Run:
% make
to see the description of development workflow.
Running Tests
% make test
Branches
There are two branches:
master
— the active development, we cut new versions out of there regularly.0.0.x
— maintainance branch for 0.0.x releases.
Issues
Issues are tracked at esy/esy.
Publishing Releases
esy is released on npm.
Because esy is written in OCaml/Reason and compiled into a native executable we need to acquire a set of prebuilt binaries. We employ CI servers (thanks Travis CI) to build platform specific releases.
The release workflow is the following:
-
Ensure you arre on
master
branch and run% make bump-patch-verson % git push && git push --tags
(this bumps patch version, use
bump-minor-version
orbump-major-version
correspondingly to bump either minor or major version of esy) -
Wait till CI finishes its task and uploads releases on GitHub, check https://github.com/esy/esy/releases for them.
-
Run
% make release
Which downloads platform specific releases (which CI uploaded GitHub) and produces an npm releases with needed metadata inside
_release
directory. -
Ensure release inside
_release
directory is ok.You can
cd _release && npm pack && npm install -g ./esy-*.tgz
to test how release installs and feels. -
Run
cd _release && npm publish
to publish release on npm.Release tag
next
is used to publish preview releases.