Combine multiple entry points into one
This commit is contained in:
parent
f55b497405
commit
92dce509af
11 changed files with 63 additions and 112 deletions
|
@ -1,4 +1,5 @@
|
||||||
-stage/
|
-stage/
|
||||||
-node_modules/
|
-node_modules/
|
||||||
-.gems/
|
-.gems/
|
||||||
-/twenty-client/tmp/
|
-/client/tmp/
|
||||||
|
-/client/build/
|
||||||
|
|
|
@ -23,8 +23,7 @@ def require_rules(rules, locals = {}, target = binding)
|
||||||
end
|
end
|
||||||
|
|
||||||
require_rules "nanoc/rules/assets"
|
require_rules "nanoc/rules/assets"
|
||||||
require_rules "nanoc/rules/projects"
|
require_rules "nanoc/rules/react"
|
||||||
require_rules "nanoc/rules/tasks"
|
|
||||||
|
|
||||||
compile("/**/*") { write(nil) }
|
compile("/**/*") { write(nil) }
|
||||||
layout "/**/*", :erb
|
layout "/**/*", :erb
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
#!/usr/bin/env ruby
|
|
||||||
|
|
||||||
##
|
|
||||||
# GET /
|
|
||||||
compile '/html/react.html.erb', rep: "projects/index" do
|
|
||||||
filter(:erb, locals: {src: "/js/main/projects.js"})
|
|
||||||
write('/projects/index.html')
|
|
||||||
end
|
|
||||||
|
|
||||||
##
|
|
||||||
# GET /js/main/projects.js
|
|
||||||
compile("/js/main/projects.tsx") do
|
|
||||||
filter(:webpack, depend_on: %w[/js/components/ /js/hooks/ /js/types/])
|
|
||||||
write("/js/main/projects.js")
|
|
||||||
end
|
|
20
client/nanoc/rules/react.rules
Normal file
20
client/nanoc/rules/react.rules
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
components = {
|
||||||
|
'react-newtask' => 'tasks/new',
|
||||||
|
'react-edittask' => 'tasks/edit',
|
||||||
|
'react-tasks' => 'tasks',
|
||||||
|
'react-projects' => 'projects'
|
||||||
|
}
|
||||||
|
|
||||||
|
components.each do |name, path|
|
||||||
|
compile '/html/react.html.erb', rep: name do
|
||||||
|
filter(:erb, locals: {name:, path: "/#{path}", src: "/js/main.js"})
|
||||||
|
write("/#{path}/index.html")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
compile "/js/main/main.tsx" do
|
||||||
|
filter(:webpack, depend_on: %w[/js/components/ /js/hooks/ /js/types/])
|
||||||
|
write("/js/main.js")
|
||||||
|
end
|
|
@ -1,45 +0,0 @@
|
||||||
#!/usr/bin/env ruby
|
|
||||||
|
|
||||||
##
|
|
||||||
# GET /tasks/new/
|
|
||||||
compile '/html/react.html.erb', rep: "tasks/new" do
|
|
||||||
filter(:erb, locals: {src: "/js/main/task/new.js"})
|
|
||||||
write("/tasks/new/index.html")
|
|
||||||
end
|
|
||||||
|
|
||||||
##
|
|
||||||
# GET /js/main/task/new.js
|
|
||||||
compile("/js/main/task/new.tsx") do
|
|
||||||
filter(:webpack, depend_on: %w[/js/lib/ /js/components/ /js/hooks/ /js/types/])
|
|
||||||
write("/js/main/task/new.js")
|
|
||||||
end
|
|
||||||
|
|
||||||
##
|
|
||||||
# GET /
|
|
||||||
# GET /tasks/
|
|
||||||
compile("/html/react.html.erb", rep: "tasks/index") do
|
|
||||||
filter(:erb, locals: {src: "/js/main/tasks.js"})
|
|
||||||
write("/tasks/index.html")
|
|
||||||
write("/index.html")
|
|
||||||
end
|
|
||||||
|
|
||||||
##
|
|
||||||
# GET /js/main/tasks.js
|
|
||||||
compile("/js/main/tasks.tsx") do
|
|
||||||
filter(:webpack, depend_on: %w[/js/lib/ /js/components /js/hooks/ /js/types/])
|
|
||||||
write("/js/main/tasks.js")
|
|
||||||
end
|
|
||||||
|
|
||||||
##
|
|
||||||
# GET /tasks/edit#id=X
|
|
||||||
compile("/html/react.html.erb") do
|
|
||||||
filter(:erb, locals: {src: '/js/main/task/edit.js'})
|
|
||||||
write("/tasks/edit/index.html")
|
|
||||||
end
|
|
||||||
|
|
||||||
##
|
|
||||||
# GET /js/main/task/edit.js
|
|
||||||
compile("/js/main/task/edit.tsx") do
|
|
||||||
filter(:webpack, depend_on: %w[/js/lib/ /js/components /js/hooks/ /js/types/])
|
|
||||||
write("/js/main/task/edit.js")
|
|
||||||
end
|
|
|
@ -7,7 +7,7 @@
|
||||||
<link rel="icon" href="/favicon.svg"/>
|
<link rel="icon" href="/favicon.svg"/>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="react-root w-full wrapper"></div>
|
<div class="<%= name %> w-full wrapper"></div>
|
||||||
<script src="<%= src %>"></script>
|
<script src="<%= src %>"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
39
client/src/js/main/main.tsx
Normal file
39
client/src/js/main/main.tsx
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
import React from "react";
|
||||||
|
import ReactDOM from "react-dom/client";
|
||||||
|
import { App } from "~/components/App";
|
||||||
|
import { Tasks } from "~/components/Tasks";
|
||||||
|
import { Projects } from "~/components/Projects";
|
||||||
|
import { Task } from "~/components/Task";
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
const components = {
|
||||||
|
"react-newtask": (
|
||||||
|
<App>
|
||||||
|
<Task />
|
||||||
|
</App>
|
||||||
|
),
|
||||||
|
"react-edittask": (
|
||||||
|
<App>
|
||||||
|
<Task />
|
||||||
|
</App>
|
||||||
|
),
|
||||||
|
"react-tasks": (
|
||||||
|
<App>
|
||||||
|
<Tasks />
|
||||||
|
</App>
|
||||||
|
),
|
||||||
|
"react-projects": (
|
||||||
|
<App>
|
||||||
|
<Projects />
|
||||||
|
</App>
|
||||||
|
)
|
||||||
|
};
|
||||||
|
Object
|
||||||
|
.entries(components)
|
||||||
|
.forEach(([name, jsx]) => {
|
||||||
|
const root = document.querySelector(`.${name}`);
|
||||||
|
if (root) {
|
||||||
|
ReactDOM.createRoot(root).render(jsx);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})();
|
|
@ -1,12 +0,0 @@
|
||||||
import ReactDOM from "react-dom/client";
|
|
||||||
import { App } from "~/components/App";
|
|
||||||
import { Projects } from "~/components/Projects";
|
|
||||||
|
|
||||||
(function () {
|
|
||||||
const root = document.querySelector(".react-root")!;
|
|
||||||
ReactDOM.createRoot(root).render(
|
|
||||||
<App>
|
|
||||||
<Projects />
|
|
||||||
</App>,
|
|
||||||
);
|
|
||||||
})();
|
|
|
@ -1,12 +0,0 @@
|
||||||
import ReactDOM from "react-dom/client";
|
|
||||||
import { App } from "~/components/App";
|
|
||||||
import { Task } from "~/components/Task";
|
|
||||||
|
|
||||||
(function () {
|
|
||||||
const root = document.querySelector(".react-root")!;
|
|
||||||
ReactDOM.createRoot(root).render(
|
|
||||||
<App>
|
|
||||||
<Task />
|
|
||||||
</App>,
|
|
||||||
);
|
|
||||||
})();
|
|
|
@ -1,12 +0,0 @@
|
||||||
import ReactDOM from "react-dom/client";
|
|
||||||
import { App } from "~/components/App";
|
|
||||||
import { Task } from "~/components/Task";
|
|
||||||
|
|
||||||
(function () {
|
|
||||||
const root = document.querySelector(".react-root")!;
|
|
||||||
ReactDOM.createRoot(root).render(
|
|
||||||
<App>
|
|
||||||
<Task />
|
|
||||||
</App>,
|
|
||||||
);
|
|
||||||
})();
|
|
|
@ -1,12 +0,0 @@
|
||||||
import ReactDOM from "react-dom/client";
|
|
||||||
import { App } from "~/components/App";
|
|
||||||
import { Tasks } from "~/components/Tasks";
|
|
||||||
|
|
||||||
(function () {
|
|
||||||
const root = document.querySelector(".react-root")!;
|
|
||||||
ReactDOM.createRoot(root).render(
|
|
||||||
<App>
|
|
||||||
<Tasks />
|
|
||||||
</App>,
|
|
||||||
);
|
|
||||||
})();
|
|
Loading…
Reference in a new issue