Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lmnzx/reson
https://github.com/lmnzx/reson
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/lmnzx/reson
- Owner: lmnzx
- License: mit
- Created: 2023-12-19T15:04:47.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-01-08T06:46:55.000Z (12 months ago)
- Last Synced: 2024-10-14T09:29:59.079Z (2 months ago)
- Language: Makefile
- Size: 7.81 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# melange-opam-template
A simple project template using [Melange](https://github.com/melange-re/melange)
with [opam](https://opam.ocaml.org/).If you are looking for a template with esy, check [melange-esy-template](https://github.com/melange-re/melange-esy-template).
## Quick Start
```shell
make init# In separate terminals:
make watch
make serve
```When running `make init`, you may encounter an error like this:
```
[ERROR] Could not determine which packages to install for this switch:
* Missing dependency:
- melange >= 1.0.0
no matching version
```It means `opam` doesn't have the latest packages definitions from the opam-repository. To address this, first run `opam update`, then rerun `make init`.
### React
React support is provided by
[`reason-react`](https://github.com/reasonml/reason-react/). The entry
point of the sample React app is [`src/ReactApp.re`](src/ReactApp.re).## Commands
In opam / dune projects, our personal preference is to group commonly used commands in a Makefile. This is completely optional.
You can see all available commands by running `make help` or just `make`. Here
are a few of the most useful ones:- `make init`: set up opam local switch and download OCaml, Melange and
JavaScript dependencies
- `make install`: install OCaml, Melange and JavaScript dependencies
- `make watch`: watch for the filesystem and have Melange rebuild on every
change
- `make serve`: serve the application with a local HTTP server## JavaScript output
Since Melange compiles source files into JavaScript files, it can be used
for projects on any JavaScript platform - not just the browser.The template includes two `melange.emit` stanza for two separate apps. This
stanza tells Dune to generate JavaScript files using Melange, and specifies in
which folder the JavaScript files should be placed, by leveraging the `target`
field:
- The React app JavaScript files will be placed in `_build/default/src/output/*`.
- The NodeJS app JavaScript files will be placed in `_build/default/src/node/*`.So for example, [`src/Hello.ml`](src/Hello.ml) (using OCaml syntax) can be run with
`node`:```bash
node _build/default/src/node/src/Hello.js
```Similarly, `_build/default/src/output/src/ReactApp.js` can be passed as entry to a bundler
like Webpack:```bash
webpack --mode production --entry ./_build/default/src/output/src/ReactApp.js
```