@bryphe/esy-307 v0.2.44
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-packagecommandesy— source code foresycore commandsesy-install— source code foresy install,esy addand other yarn-based command.esy-install/esy-install— this is a submodule which points toesy/esy-installrepo, a fork ofyarn.
test— unit teststest-e2e— integration tests foresytest-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 bootstrapRun:
% maketo see the description of development workflow.
Running Tests
% make testBranches
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
masterbranch and run% make bump-patch-verson % git push && git push --tags(this bumps patch version, use
bump-minor-versionorbump-major-versioncorrespondingly 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 releaseWhich downloads platform specific releases (which CI uploaded GitHub) and produces an npm releases with needed metadata inside
_releasedirectory.Ensure release inside
_releasedirectory is ok.You can
cd _release && npm pack && npm install -g ./esy-*.tgzto test how release installs and feels.Run
cd _release && npm publishto publish release on npm.Release tag
nextis used to publish preview releases.