Setup React root node.
parent
b832abddc7
commit
01ffd518f2
|
@ -0,0 +1,9 @@
|
|||
import * as React from 'react'
|
||||
|
||||
export default function App() {
|
||||
return (
|
||||
<div>
|
||||
Hello React!
|
||||
</div>
|
||||
)
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
import * as React from 'react'
|
||||
|
||||
import ReactDOM from 'react-dom/client'
|
||||
import App from './App'
|
||||
|
||||
ReactDOM.createRoot(document.getElementById('mount')).render(<App />)
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"dependencies": {
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
lockfileVersion: '6.0'
|
||||
|
||||
settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
dependencies:
|
||||
react:
|
||||
specifier: ^18.2.0
|
||||
version: 18.2.0
|
||||
react-dom:
|
||||
specifier: ^18.2.0
|
||||
version: 18.2.0(react@18.2.0)
|
||||
|
||||
packages:
|
||||
|
||||
/js-tokens@4.0.0:
|
||||
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
|
||||
dev: false
|
||||
|
||||
/loose-envify@1.4.0:
|
||||
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
js-tokens: 4.0.0
|
||||
dev: false
|
||||
|
||||
/react-dom@18.2.0(react@18.2.0):
|
||||
resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
|
||||
peerDependencies:
|
||||
react: ^18.2.0
|
||||
dependencies:
|
||||
loose-envify: 1.4.0
|
||||
react: 18.2.0
|
||||
scheduler: 0.23.0
|
||||
dev: false
|
||||
|
||||
/react@18.2.0:
|
||||
resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dependencies:
|
||||
loose-envify: 1.4.0
|
||||
dev: false
|
||||
|
||||
/scheduler@0.23.0:
|
||||
resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
|
||||
dependencies:
|
||||
loose-envify: 1.4.0
|
||||
dev: false
|
|
@ -37,7 +37,7 @@ config :esbuild,
|
|||
version: "0.17.11",
|
||||
default: [
|
||||
args:
|
||||
~w(js/app.js --bundle --target=es2017 --outdir=../priv/static/assets --external:/fonts/* --external:/images/*),
|
||||
~w(js/app.js js/react/main.jsx --bundle --target=es2017 --outdir=../priv/static/assets --external:/fonts/* --external:/images/*),
|
||||
cd: Path.expand("../assets", __DIR__),
|
||||
env: %{"NODE_PATH" => Path.expand("../deps", __DIR__)}
|
||||
]
|
||||
|
|
|
@ -56,7 +56,7 @@ config :boardwise, BoardWiseWeb.Endpoint,
|
|||
config :boardwise, BoardWiseWeb.Endpoint,
|
||||
live_reload: [
|
||||
patterns: [
|
||||
~r"priv/static/.*(js|css|png|jpeg|jpg|gif|svg|ico)$",
|
||||
~r"priv/static/.*(js|jsx|ts|tsx|css|png|jpeg|jpg|gif|svg|ico)$",
|
||||
~r"priv/gettext/.*(po)$",
|
||||
~r"lib/boardwise_web/(controllers|live|components)/.*(ex|heex)$"
|
||||
]
|
||||
|
|
|
@ -44,6 +44,7 @@
|
|||
] ++ (with pkgs; [
|
||||
inotify-tools # For file watching in development.
|
||||
mix2nix
|
||||
nodePackages.pnpm
|
||||
postgresql_15
|
||||
]);
|
||||
shellHook = ''
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
<link phx-track-static rel="stylesheet" href={~p"/assets/app.css"} />
|
||||
<script defer phx-track-static type="text/javascript" src={~p"/assets/app.js"}>
|
||||
</script>
|
||||
<script defer type="text/javascript" src={~p"/assets/react/main.js"}>
|
||||
</script>
|
||||
</head>
|
||||
<body class="bg-white antialiased">
|
||||
<%= @inner_content %>
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
defmodule BoardWiseWeb.ReactController do
|
||||
use BoardWiseWeb, :controller
|
||||
|
||||
def index(conn, _params) do
|
||||
# Set `layout` to false to bypass the app layout. The goal here is to
|
||||
# eventually migrate away from the React app as is defined in favor of
|
||||
# Phoenix related components. Exposing this mount point is the first step
|
||||
# in migrating away from Vercel into a self-hosted solution.
|
||||
render(conn, :index, layout: false)
|
||||
end
|
||||
end
|
|
@ -0,0 +1,5 @@
|
|||
defmodule BoardWiseWeb.ReactHTML do
|
||||
use BoardWiseWeb, :html
|
||||
|
||||
embed_templates "react_html/*"
|
||||
end
|
|
@ -0,0 +1 @@
|
|||
<div id="mount"></div>
|
|
@ -1,7 +0,0 @@
|
|||
defmodule BoardWiseWeb.SearchController do
|
||||
use BoardWiseWeb, :controller
|
||||
|
||||
def index(conn, _params) do
|
||||
render(conn, :index, layout: false)
|
||||
end
|
||||
end
|
|
@ -1,5 +0,0 @@
|
|||
defmodule BoardWiseWeb.SearchHTML do
|
||||
use BoardWiseWeb, :html
|
||||
|
||||
embed_templates "search_html/*"
|
||||
end
|
|
@ -1 +0,0 @@
|
|||
<.flash_group flash={@flash} />
|
|
@ -17,7 +17,7 @@ defmodule BoardWiseWeb.Router do
|
|||
scope "/", BoardWiseWeb do
|
||||
pipe_through :browser
|
||||
|
||||
get "/", SearchController, :index
|
||||
get "/", ReactController, :index
|
||||
end
|
||||
|
||||
# Other scopes may use custom stacks.
|
||||
|
|
Loading…
Reference in New Issue