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"}
+]