diff --git a/example_project/assets/svelte.config.js b/example_project/assets/svelte.config.js new file mode 100644 index 0000000..7d1d57c --- /dev/null +++ b/example_project/assets/svelte.config.js @@ -0,0 +1,5 @@ +import { vitePreprocess } from "@sveltejs/vite-plugin-svelte" + +export default { + preprocess: vitePreprocess(), +} diff --git a/example_project/assets/svelte/Lodash.svelte b/example_project/assets/svelte/Lodash.svelte index 9262740..e5084e1 100644 --- a/example_project/assets/svelte/Lodash.svelte +++ b/example_project/assets/svelte/Lodash.svelte @@ -6,7 +6,7 @@ } let {unordered}: Props = $props() - let ordered = _.sortBy(unordered) + let ordered = $derived(_.sortBy(unordered))

Lodash Demo

@@ -18,13 +18,17 @@
Unordered -
[{unordered.join(", ")}]
Ordered -
[{ordered.join(", ")}]
diff --git a/example_project/config/runtime.exs b/example_project/config/runtime.exs index e726ab0..4c79670 100644 --- a/example_project/config/runtime.exs +++ b/example_project/config/runtime.exs @@ -49,7 +49,7 @@ if config_env() == :prod do port = String.to_integer(System.get_env("PORT") || "4000") config :example, ExampleWeb.Endpoint, - url: [host: host, port: 443, scheme: "https"], + url: [host: host, port: port, scheme: System.get_env("PHX_SCHEME", "https")], http: [ # Enable IPv6 and bind on all interfaces. # Set it to {0, 0, 0, 0, 0, 0, 0, 1} for local network only access. diff --git a/example_project/lib/example_web/endpoint.ex b/example_project/lib/example_web/endpoint.ex index d52dd65..f723461 100644 --- a/example_project/lib/example_web/endpoint.ex +++ b/example_project/lib/example_web/endpoint.ex @@ -19,6 +19,16 @@ defmodule ExampleWeb.Endpoint do # In test, prevent caching of assets so E2E always loads the latest app.js after mix assets.js if Mix.env() == :test do plug :no_cache_assets + + defp no_cache_assets(conn, _opts) do + Plug.Conn.register_before_send(conn, fn c -> + if String.starts_with?(c.request_path, "/assets/") do + Plug.Conn.put_resp_header(c, "cache-control", "no-store, no-cache, must-revalidate") + else + c + end + end) + end end # Serve at "/" the static files from "priv/static" directory. @@ -57,13 +67,5 @@ defmodule ExampleWeb.Endpoint do plug Plug.Session, @session_options plug ExampleWeb.Router - defp no_cache_assets(conn, _opts) do - Plug.Conn.register_before_send(conn, fn c -> - if String.starts_with?(c.request_path, "/assets/") do - Plug.Conn.put_resp_header(c, "cache-control", "no-store, no-cache, must-revalidate") - else - c - end - end) - end + end diff --git a/example_project/package-lock.json b/example_project/package-lock.json index 3329eaa..60f0281 100644 --- a/example_project/package-lock.json +++ b/example_project/package-lock.json @@ -4,12 +4,14 @@ "requires": true, "packages": { "": { + "name": "example_project", "dependencies": { "@editorjs/editorjs": "^2.31.0", "@editorjs/header": "^2.8.8", "@editorjs/list": "^2.0.2", "dynamic-marquee": "^2.6.5", "live_svelte": "file:../", + "lodash": "^4.17.21", "phoenix": "file:./deps/phoenix", "phoenix_html": "file:./deps/phoenix_html", "phoenix_live_view": "file:./deps/phoenix_live_view", @@ -29,7 +31,7 @@ } }, "..": { - "version": "0.17.4", + "version": "0.18.0", "license": "MIT", "devDependencies": { "prettier": "^3.8.1", @@ -13228,7 +13230,6 @@ "version": "4.17.23", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", - "dev": true, "license": "MIT" }, "node_modules/lodash.debounce": { diff --git a/example_project/package.json b/example_project/package.json index 971bfd6..dfa826e 100644 --- a/example_project/package.json +++ b/example_project/package.json @@ -2,6 +2,7 @@ "type": "module", "dependencies": { "@editorjs/editorjs": "^2.31.0", + "lodash": "^4.17.21", "@editorjs/header": "^2.8.8", "@editorjs/list": "^2.0.2", "dynamic-marquee": "^2.6.5", diff --git a/example_project/priv/static/.vite/manifest.json b/example_project/priv/static/.vite/manifest.json index 99abfc9..74ec574 100644 --- a/example_project/priv/static/.vite/manifest.json +++ b/example_project/priv/static/.vite/manifest.json @@ -18,12 +18,12 @@ "isDynamicEntry": true }, "css/app.css": { - "file": "assets/app-DB4pPYVV.css", + "file": "assets/app-DpQuHjcm.css", "src": "css/app.css", "isEntry": true }, "js/app.js": { - "file": "assets/app-LUJMG2_W.js", + "file": "assets/app-_huAwfxm.js", "name": "app", "src": "js/app.js", "isEntry": true, diff --git a/lib/mix/tasks/live_svelte.install.ex b/lib/mix/tasks/live_svelte.install.ex index 08b63df..17f4ee0 100644 --- a/lib/mix/tasks/live_svelte.install.ex +++ b/lib/mix/tasks/live_svelte.install.ex @@ -367,6 +367,7 @@ defmodule Mix.Tasks.LiveSvelte.Install do "assets/svelte/.gitignore", "# Ignore auto-generated Svelte files by ~V sigil\n_build/" ) + |> Igniter.create_new_file("assets/svelte.config.js", svelte_config_content()) |> Igniter.create_new_file("assets/svelte/SvelteDemo.svelte", demo_svelte_content()) |> Igniter.create_new_file( "lib/#{web_folder}/svelte_demo_live.ex", @@ -503,6 +504,16 @@ defmodule Mix.Tasks.LiveSvelte.Install do # Content helpers + defp svelte_config_content do + """ + import { vitePreprocess } from "@sveltejs/vite-plugin-svelte" + + export default { + preprocess: vitePreprocess(), + } + """ + end + defp server_js_content do """ import { getRender } from "live_svelte"