diff --git a/example/r-fullstack-melange/.gitignore b/example/r-fullstack-melange/.gitignore index fdc162c3..35db6388 100644 --- a/example/r-fullstack-melange/.gitignore +++ b/example/r-fullstack-melange/.gitignore @@ -1,12 +1,6 @@ -# npm. -node_modules/ - -# Melange, Dune. +# Dune. _build/ -_esy/ -.melange.eobjs/ -dune.bsb -/dune # esbuild. +node_modules/ static/ diff --git a/example/r-fullstack-melange/README.md b/example/r-fullstack-melange/README.md index ec2bf251..6264337d 100644 --- a/example/r-fullstack-melange/README.md +++ b/example/r-fullstack-melange/README.md @@ -65,8 +65,13 @@ let () = { To run, do -
npm install
-npm start
+
$ cd example/w-fullstack-melange
+$ opam install --deps-only --yes .
+$ npm install esbuild --no-save
+$ dune build --root . @melange
+$ mkdir -p static
+$ npx esbuild _build/default/client/client/client/client.js --bundle --outfile=static/client.js
+$ dune exec server/server.exe
 
Then visit [http://localhost:8080](http://localhost:8080), and you will see... @@ -82,13 +87,13 @@ example in OCaml syntax. **See also:** -- [**`w-esy`**](../w-esy#files) details the server's [esy](https://esy.sh/) - packaging. - [**`w-watch`**](../w-fswatch#files) sets up a development watcher. - [**`w-one-binary`**](../w-one-binary#files) bundles assets into a self-contained binary. - [**`7-template`**](../7-template#files) discusses the templater, including security. The example is in OCaml syntax. +- [**`r-template`**](../r-template#files) the code of the template example in + Reason syntax.
diff --git a/example/r-fullstack-melange/bsconfig.json b/example/r-fullstack-melange/bsconfig.json deleted file mode 100644 index d58ff201..00000000 --- a/example/r-fullstack-melange/bsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "fullstack-melange", - "bs-dependencies": [ - "bs-webapi" - ], - "sources": [ - "common", - "client" - ] -} diff --git a/example/r-fullstack-melange/client/client.re b/example/r-fullstack-melange/client/client.re index c7c14f18..df592000 100644 --- a/example/r-fullstack-melange/client/client.re +++ b/example/r-fullstack-melange/client/client.re @@ -10,7 +10,7 @@ let () = { let text = Common.greet(`Client); let p = document |> Document.createElement("p"); - p->Element.setInnerText(text); + Element.setInnerText(p, text); body |> Element.appendChild(p); } }; diff --git a/example/r-fullstack-melange/client/dune b/example/r-fullstack-melange/client/dune new file mode 100644 index 00000000..264c1fa7 --- /dev/null +++ b/example/r-fullstack-melange/client/dune @@ -0,0 +1,4 @@ +(melange.emit + (target client) + (preprocess (pps melange.ppx)) + (libraries common melange-webapi)) diff --git a/example/r-fullstack-melange/common/dune b/example/r-fullstack-melange/common/dune index 35b99062..949e6ef8 100644 --- a/example/r-fullstack-melange/common/dune +++ b/example/r-fullstack-melange/common/dune @@ -1,2 +1,3 @@ (library - (name common)) + (name common) + (modes best melange)) diff --git a/example/r-fullstack-melange/dune-project b/example/r-fullstack-melange/dune-project index 76d1dbaf..8a175b0e 100644 --- a/example/r-fullstack-melange/dune-project +++ b/example/r-fullstack-melange/dune-project @@ -1,2 +1,2 @@ -(lang dune 2.7) -(using action-plugin 0.1) +(lang dune 3.8) +(using melange 0.1) diff --git a/example/r-fullstack-melange/esy.json b/example/r-fullstack-melange/esy.json deleted file mode 100644 index c2241544..00000000 --- a/example/r-fullstack-melange/esy.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "fullstack-melange", - "dependencies": { - "@opam/conf-libssl": "3", - "@opam/dream": "1.0.0~alpha5", - "@opam/dune": "^3.0", - "@opam/reason": "^3.8.0", - "melange": "melange-re/melange", - "ocaml": "^4.14.0" - }, - "devDependencies": { - "@opam/ocaml-lsp-server": "*" - }, - "resolutions": { - "@opam/conf-libev": "esy-packages/libev:package.json#0b5eb6685b688649045aceac55dc559f6f21b829", - "esy-openssl": "esy-packages/esy-openssl#619ae2d46ca981ec26ab3287487ad98b157a01d1" - }, - "esy": { - "buildsInSource": "unsafe" - }, - "scripts": { - "start": "dune exec --root . server/server.exe" - } -} diff --git a/example/r-fullstack-melange/package.json b/example/r-fullstack-melange/package.json deleted file mode 100644 index 5abc88a3..00000000 --- a/example/r-fullstack-melange/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "fullstack-melange", - "dependencies": { - "bs-webapi": "*", - "esbuild": "*", - "esy": "*" - }, - "scripts": { - "postinstall": "esy", - "build": "esy bsb -make-world -- --root .", - "pack": "esbuild _build/default/client/client.js --bundle --outfile=static/client.js", - "start": "npm run build && npm run pack && esy start" - } -} diff --git a/example/r-fullstack-melange/r-fullstack-melange.opam b/example/r-fullstack-melange/r-fullstack-melange.opam new file mode 100644 index 00000000..b9b99708 --- /dev/null +++ b/example/r-fullstack-melange/r-fullstack-melange.opam @@ -0,0 +1,10 @@ +opam-version: "2.0" + +depends: [ + "ocaml" + "dream" + "dune" {>= "3.8.0"} + "melange" {>= "2.0.0"} + "melange-webapi" + "reason" {>= "3.10.0"} +]