@bryphe/esy v0.2.1011
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
The following snippet lists esy repository structured (omitting irrelevant or obvious items) with further explanations:
├── CHANGELOG.md
├── LICENSE
├── README.md
│
├── Makefile
│ Common tasks and workflows for esy development.
│
├── bin
│
├── docs
│ esy end user documentation in markdown format.
│
├── dune
├── dune-project
│
├── esy
│ This dune library implements sandbox builder - a routine which builds
│ the enture dependency graph and provides other introspection APIs.
├── esy/bin
│ This dune executable implements "esy" command.
│
├── esyi
│ This dune library implements installer.
├── esyi/bin
│ This dune executable implements "esy install" command.
│
├── esy-build-package
│ This dune library implements package builder. esy library uses this to
│ build each package.
├── esy-build-package/bin
│ This dune executable implements "esy-build-package" command.
│
├── esy-installer
│ Implementation of installation procedure defined with *.install files.
│ This re-implements opam-installer.
│
├── esy-command-expression
│ Parser for #{...} syntax used in esy manifests.
├── esy-shell-expansion
│ A simple shell expansion.
├── esy-yarn-lockfile
│ Parser for a subset of yarn lockfile format.
│
├── esy-lib
│ A collection of utility modules shared between other libraries.
│
├── site
│ Sources for https://esy.sh
│
├── esy.lock.json
├── package.json
│
├── scripts
├── test
│ Unit tests.
│
└── test-e2e
End-to-end test suite.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.