hot reload for elm application
This commit is contained in:
parent
1ee0f2fc68
commit
a8cc00feac
9
Makefile
9
Makefile
|
@ -40,12 +40,9 @@ backend:
|
|||
|
||||
serve: frontend backend
|
||||
ifeq ($(DEBUG),1)
|
||||
RUST_LOG=info,actix_web=debug $(CARGO_RUN) --manifest-path=$(BACKEND_DIR)/Cargo.toml
|
||||
$(MAKE) -C $(FRONTEND_DIR) serve DEBUG=1 & \
|
||||
RUST_LOG=info,actix_web=debug $(CARGO_RUN) --manifest-path=$(BACKEND_DIR)/Cargo.toml; \
|
||||
kill %1
|
||||
else ifeq ($(RELEASE),1)
|
||||
$(CARGO_RUN) --release --manifest-path=$(BACKEND_DIR)/Cargo.toml
|
||||
endif
|
||||
|
||||
clean:
|
||||
rm -rf $(PUBLIC_DIR)/*
|
||||
rm -rf $(BACKEND_DIR)/target
|
||||
make -C $(FRONTEND_DIR) clean
|
||||
|
|
|
@ -12,6 +12,13 @@ make serve RELEASE=1 # can also do DEBUG=1 instead
|
|||
|
||||
Now open `http://127.0.0.1:8080` in your browser.
|
||||
|
||||
# Elm application hot reloading
|
||||
|
||||
Hot reloading for Elm application is exposed at port `8000` under `DEBUG=1` mode.
|
||||
|
||||
`make serve DEBUG=1`
|
||||
visit `localhost:8000`
|
||||
|
||||
# TODO
|
||||
|
||||
- [ ] Address compiler warnings.
|
||||
- [ ] Address compiler warnings.
|
||||
|
|
13
flake.nix
13
flake.nix
|
@ -113,6 +113,19 @@
|
|||
with pkgs;
|
||||
mkShell {
|
||||
inputsFrom = [ example-spa-elm-app ];
|
||||
buildInputs = [
|
||||
nodejs_22
|
||||
];
|
||||
|
||||
shellHook = ''
|
||||
if [ ! -d "$PWD/frontend/node_modules/elm-go" ]; then
|
||||
echo "Installing elm-go..."
|
||||
cd "$PWD/frontend"
|
||||
${nodejs_22}/bin/npm install elm-go
|
||||
cd ..
|
||||
fi
|
||||
export PATH="$PWD/frontend/node_modules/.bin:$PATH"
|
||||
'';
|
||||
};
|
||||
}
|
||||
);
|
||||
|
|
|
@ -2,7 +2,7 @@ SRC_FILES := $(shell find src -name "*.elm")
|
|||
|
||||
all: elm.min.js
|
||||
|
||||
.PHONY: elm.min.js
|
||||
.PHONY: elm.min.js serve
|
||||
|
||||
ifeq ($(DEBUG)$(RELEASE),) # Both are empty
|
||||
$(error You must set exactly one of DEBUG=1 or RELEASE=1)
|
||||
|
@ -12,7 +12,6 @@ ifeq ($(DEBUG)$(RELEASE),11) # Both are set
|
|||
$(error Both DEBUG and RELEASE cannot be set at the same time)
|
||||
endif
|
||||
|
||||
|
||||
elm.min.js:
|
||||
ifeq ($(DEBUG),1)
|
||||
./build.sh --debug src/Main.elm
|
||||
|
@ -20,5 +19,12 @@ else ifeq ($(RELEASE),1)
|
|||
./build.sh --optimize src/Main.elm
|
||||
endif
|
||||
|
||||
serve:
|
||||
ifeq ($(DEBUG),1)
|
||||
elm-go src/Main.elm --port=8000 --dir=../public --start-page=index.html -- --output=../public/elm.min.js
|
||||
else ifeq ($(RELEASE),1)
|
||||
$(error Cannot use serve target with RELEASE=1)
|
||||
endif
|
||||
|
||||
clean:
|
||||
rm elm.js elm.min.js
|
||||
|
|
Loading…
Reference in a new issue