create-lupine 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +277 -0
- package/package.json +18 -0
- package/templates/common/.env +57 -0
- package/templates/common/.env.development +7 -0
- package/templates/common/.env.mobile +10 -0
- package/templates/common/.env.production +7 -0
- package/templates/common/apps/server/src/app-loader.ts +41 -0
- package/templates/common/apps/server/src/fetch-data.ts +20 -0
- package/templates/common/apps/server/src/index.ts +66 -0
- package/templates/common/apps/server/src/server-env-keys.ts +22 -0
- package/templates/common/dev/dev-watch.js +422 -0
- package/templates/doc-starter/api/resources/config_default.json +6 -0
- package/templates/doc-starter/api/resources/install.sqlite.sql +4 -0
- package/templates/doc-starter/api/src/index.ts +15 -0
- package/templates/doc-starter/api/src/resources/config_default.json +6 -0
- package/templates/doc-starter/api/src/resources/install.sqlite.sql +4 -0
- package/templates/doc-starter/lupine.json +33 -0
- package/templates/doc-starter/package.json +13 -0
- package/templates/doc-starter/web/assets/android-chrome-192x192.png +0 -0
- package/templates/doc-starter/web/assets/apple-touch-icon.png +0 -0
- package/templates/doc-starter/web/assets/favicon-16x16.png +0 -0
- package/templates/doc-starter/web/assets/favicon-32x32.png +0 -0
- package/templates/doc-starter/web/assets/favicon.ico +0 -0
- package/templates/doc-starter/web/assets/site.webmanifest +14 -0
- package/templates/doc-starter/web/github-pj-name/index.html +21 -0
- package/templates/doc-starter/web/github-pj-name/index.tsx +35 -0
- package/templates/doc-starter/web/markdown/en/essentials/index.md +6 -0
- package/templates/doc-starter/web/markdown/en/essentials/list.md +18 -0
- package/templates/doc-starter/web/markdown/en/guide/install.md +18 -0
- package/templates/doc-starter/web/markdown/en/guide/started.md +22 -0
- package/templates/doc-starter/web/markdown/en/index.md +42 -0
- package/templates/doc-starter/web/markdown/index.md +7 -0
- package/templates/doc-starter/web/markdown/zh/essentials/index.md +6 -0
- package/templates/doc-starter/web/markdown/zh/essentials/list.md +18 -0
- package/templates/doc-starter/web/markdown/zh/guide/install.md +18 -0
- package/templates/doc-starter/web/markdown/zh/guide/started.md +22 -0
- package/templates/doc-starter/web/markdown/zh/index.md +42 -0
- package/templates/doc-starter/web/src/client-env-keys.ts +5 -0
- package/templates/doc-starter/web/src/index.html +21 -0
- package/templates/doc-starter/web/src/index.tsx +33 -0
- package/templates/doc-starter/web/src/markdown-built/en/essentials/index.html +0 -0
- package/templates/doc-starter/web/src/markdown-built/en/essentials/list.html +8 -0
- package/templates/doc-starter/web/src/markdown-built/en/guide/install.html +8 -0
- package/templates/doc-starter/web/src/markdown-built/en/guide/started.html +12 -0
- package/templates/doc-starter/web/src/markdown-built/en/index.html +0 -0
- package/templates/doc-starter/web/src/markdown-built/index.html +0 -0
- package/templates/doc-starter/web/src/markdown-built/markdown-config.ts +25 -0
- package/templates/doc-starter/web/src/markdown-built/zh/essentials/index.html +0 -0
- package/templates/doc-starter/web/src/markdown-built/zh/essentials/list.html +8 -0
- package/templates/doc-starter/web/src/markdown-built/zh/guide/install.html +8 -0
- package/templates/doc-starter/web/src/markdown-built/zh/guide/started.html +12 -0
- package/templates/doc-starter/web/src/markdown-built/zh/index.html +0 -0
- package/templates/doc-starter/web/src/styles/base-css.ts +15 -0
- package/templates/hello-world/api/resources/config_default.json +6 -0
- package/templates/hello-world/api/resources/install.sqlite.sql +4 -0
- package/templates/hello-world/api/src/index.ts +4 -0
- package/templates/hello-world/api/src/service/root-api.ts +18 -0
- package/templates/hello-world/lupine.json +23 -0
- package/templates/hello-world/web/assets/favicon.ico +0 -0
- package/templates/hello-world/web/package.json +6 -0
- package/templates/hello-world/web/src/index.html +16 -0
- package/templates/hello-world/web/src/index.tsx +30 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: home
|
|
3
|
+
title: Doc Starter
|
|
4
|
+
sidemenu-width: 260px
|
|
5
|
+
github-title: View on GitHub
|
|
6
|
+
github-link: https://github.com/uuware/lupine.js
|
|
7
|
+
|
|
8
|
+
lang:
|
|
9
|
+
title: English
|
|
10
|
+
id: en
|
|
11
|
+
|
|
12
|
+
hero:
|
|
13
|
+
name: Doc Starter
|
|
14
|
+
text: A Demo Documentation Project
|
|
15
|
+
tagline: This is a demo to show how to build documentation.
|
|
16
|
+
actions:
|
|
17
|
+
- theme: brand
|
|
18
|
+
text: Get Started
|
|
19
|
+
link: /en/guide/started
|
|
20
|
+
- theme: alt
|
|
21
|
+
text: View on GitHub
|
|
22
|
+
link: https://github.com/uuware/lupine.js
|
|
23
|
+
|
|
24
|
+
nav:
|
|
25
|
+
- text: Guide
|
|
26
|
+
link: /en/guide/started
|
|
27
|
+
- text: API
|
|
28
|
+
link: /en/essentials/list
|
|
29
|
+
|
|
30
|
+
sidebar:
|
|
31
|
+
- text: Guide
|
|
32
|
+
items:
|
|
33
|
+
- /en/guide/started
|
|
34
|
+
- /en/guide/install
|
|
35
|
+
- submenu: /en/essentials
|
|
36
|
+
|
|
37
|
+
features:
|
|
38
|
+
- title: Demo Feature 1
|
|
39
|
+
details: This is a demo feature description.
|
|
40
|
+
- title: Demo Feature 2
|
|
41
|
+
details: This is another demo feature description.
|
|
42
|
+
---
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 核心要点列表
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
> [!NOTE]
|
|
6
|
+
> This is a demo document.
|
|
7
|
+
|
|
8
|
+
# 核心要点列表
|
|
9
|
+
|
|
10
|
+
This is a simplified essentials list doc for demo purposes.
|
|
11
|
+
|
|
12
|
+
## 核心要点概述
|
|
13
|
+
|
|
14
|
+
Here is an example listing key features:
|
|
15
|
+
|
|
16
|
+
```tsx
|
|
17
|
+
const features = ['Fast', 'Reliable', 'Easy to use'];
|
|
18
|
+
```
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 快速开始
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
> [!NOTE]
|
|
6
|
+
> This is a demo document.
|
|
7
|
+
|
|
8
|
+
# 简介
|
|
9
|
+
|
|
10
|
+
This is a simplified getting started guide for demo purposes.
|
|
11
|
+
|
|
12
|
+
## 快速开始
|
|
13
|
+
|
|
14
|
+
Initialize your project:
|
|
15
|
+
|
|
16
|
+
```javascript
|
|
17
|
+
import { init } from 'my-project';
|
|
18
|
+
|
|
19
|
+
init({
|
|
20
|
+
debug: true,
|
|
21
|
+
});
|
|
22
|
+
```
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: home
|
|
3
|
+
title: 文档演示
|
|
4
|
+
sidemenu-width: 260px
|
|
5
|
+
github-title: GitHub 仓库
|
|
6
|
+
github-link: https://github.com/uuware/lupine.js
|
|
7
|
+
|
|
8
|
+
lang:
|
|
9
|
+
title: 简体中文
|
|
10
|
+
id: zh
|
|
11
|
+
|
|
12
|
+
hero:
|
|
13
|
+
name: 文档演示
|
|
14
|
+
text: 一个演示用的文档项目
|
|
15
|
+
tagline: 这是一个用来展示如何构建文档的演示项目。
|
|
16
|
+
actions:
|
|
17
|
+
- theme: brand
|
|
18
|
+
text: 快速开始
|
|
19
|
+
link: /zh/guide/started
|
|
20
|
+
- theme: alt
|
|
21
|
+
text: GitHub 仓库
|
|
22
|
+
link: https://github.com/uuware/lupine.js
|
|
23
|
+
|
|
24
|
+
nav:
|
|
25
|
+
- text: 指南
|
|
26
|
+
link: /zh/guide/started
|
|
27
|
+
- text: API
|
|
28
|
+
link: /zh/essentials/list
|
|
29
|
+
|
|
30
|
+
sidebar:
|
|
31
|
+
- text: 指南
|
|
32
|
+
items:
|
|
33
|
+
- /zh/guide/started
|
|
34
|
+
- /zh/guide/install
|
|
35
|
+
- submenu: /zh/essentials
|
|
36
|
+
|
|
37
|
+
features:
|
|
38
|
+
- title: 演示特性 1
|
|
39
|
+
details: 这是一个演示特性的描述。
|
|
40
|
+
- title: 演示特性 2
|
|
41
|
+
details: 这是另一个演示特性的描述。
|
|
42
|
+
---
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html data-theme="<!--META-THEME-->">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<link rel="manifest" href="{SUBDIR}/assets/site.webmanifest" />
|
|
6
|
+
<title><!--META-TITLE--></title>
|
|
7
|
+
<link rel="apple-touch-icon" sizes="180x180" href="{SUBDIR}/assets/apple-touch-icon.png" />
|
|
8
|
+
<link rel="icon" type="image/png" sizes="32x32" href="{SUBDIR}/assets/favicon-32x32.png" />
|
|
9
|
+
<link rel="icon" type="image/png" sizes="16x16" href="{SUBDIR}/assets/favicon-16x16.png" />
|
|
10
|
+
<link rel="icon" type="image/png" sizes="192x192" href="{SUBDIR}/assets/android-chrome-192x192.png" />
|
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
+
<!--META-ENV-START-->
|
|
13
|
+
<!--META-ENV-END-->
|
|
14
|
+
<link rel="shortcut icon" href="{SUBDIR}/assets/favicon.ico?t={hash}" />
|
|
15
|
+
<link rel="stylesheet" type="text/css" href="{SUBDIR}/index.css?t={hash}" />
|
|
16
|
+
<script defer src="{SUBDIR}/index.js#t={hash}"></script>
|
|
17
|
+
</head>
|
|
18
|
+
<body>
|
|
19
|
+
<div class="lupine-root"></div>
|
|
20
|
+
</body>
|
|
21
|
+
</html>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import {
|
|
2
|
+
bindRouter,
|
|
3
|
+
PageRouter,
|
|
4
|
+
bindTheme,
|
|
5
|
+
bindLang,
|
|
6
|
+
setDefaultPageTitle,
|
|
7
|
+
isFrontEnd,
|
|
8
|
+
debugWatch,
|
|
9
|
+
webEnv,
|
|
10
|
+
setDefaultMetaDescription,
|
|
11
|
+
bindGlobalStyle,
|
|
12
|
+
} from 'lupine.components';
|
|
13
|
+
import { bindPressData, PressPage, pressThemes } from 'lupine.press';
|
|
14
|
+
import { markdownConfig } from './markdown-built/markdown-config';
|
|
15
|
+
import { ClientEnvKeys } from './client-env-keys';
|
|
16
|
+
import { baseCss } from './styles/base-css';
|
|
17
|
+
|
|
18
|
+
if (isFrontEnd() && webEnv(ClientEnvKeys.NODE_ENV, '') === 'development') {
|
|
19
|
+
debugWatch(webEnv(ClientEnvKeys.API_PORT, 0));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
bindLang('en', {});
|
|
23
|
+
bindTheme('light', pressThemes);
|
|
24
|
+
bindGlobalStyle('comm-css', baseCss, false, true);
|
|
25
|
+
setDefaultPageTitle('LupineJS Doc');
|
|
26
|
+
setDefaultMetaDescription('LupineJS Doc');
|
|
27
|
+
|
|
28
|
+
bindPressData(markdownConfig);
|
|
29
|
+
|
|
30
|
+
const pageRouter = new PageRouter();
|
|
31
|
+
pageRouter.use('*', PressPage);
|
|
32
|
+
|
|
33
|
+
bindRouter(pageRouter);
|
|
File without changes
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<blockquote>
|
|
2
|
+
<p>[!NOTE]
|
|
3
|
+
This is a demo document.</p>
|
|
4
|
+
</blockquote>
|
|
5
|
+
<h1 id="essentials-list"><a class="header-anchor" href="#essentials-list">#</a>Essentials List</h1><p>This is a simplified essentials list doc for demo purposes.</p>
|
|
6
|
+
<h2 id="feature-overview"><a class="header-anchor" href="#feature-overview">#</a>Feature Overview</h2><p>Here is an example listing key features:</p>
|
|
7
|
+
<pre><code class="language-tsx">const features = ['Fast', 'Reliable', 'Easy to use'];
|
|
8
|
+
</code></pre>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<blockquote>
|
|
2
|
+
<p>[!NOTE]
|
|
3
|
+
This is a demo document.</p>
|
|
4
|
+
</blockquote>
|
|
5
|
+
<h1 id="installation"><a class="header-anchor" href="#installation">#</a>Installation</h1><p>This is a simplified installation guide for demo purposes.</p>
|
|
6
|
+
<h2 id="basic-install"><a class="header-anchor" href="#basic-install">#</a>Basic Install</h2><p>Run the following command:</p>
|
|
7
|
+
<pre><code class="language-bash">npm install my-project
|
|
8
|
+
</code></pre>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<blockquote>
|
|
2
|
+
<p>[!NOTE]
|
|
3
|
+
This is a demo document.</p>
|
|
4
|
+
</blockquote>
|
|
5
|
+
<h1 id="getting-started"><a class="header-anchor" href="#getting-started">#</a>Getting Started</h1><p>This is a simplified getting started guide for demo purposes.</p>
|
|
6
|
+
<h2 id="quick-start"><a class="header-anchor" href="#quick-start">#</a>Quick Start</h2><p>Initialize your project:</p>
|
|
7
|
+
<pre><code class="language-javascript">import { init } from 'my-project';
|
|
8
|
+
|
|
9
|
+
init({
|
|
10
|
+
debug: true,
|
|
11
|
+
});
|
|
12
|
+
</code></pre>
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import html0 from './index.html';
|
|
2
|
+
import html1 from './en/essentials/index.html';
|
|
3
|
+
import html2 from './en/essentials/list.html';
|
|
4
|
+
import html3 from './en/guide/install.html';
|
|
5
|
+
import html4 from './en/guide/started.html';
|
|
6
|
+
import html5 from './en/index.html';
|
|
7
|
+
import html6 from './zh/essentials/index.html';
|
|
8
|
+
import html7 from './zh/essentials/list.html';
|
|
9
|
+
import html8 from './zh/guide/install.html';
|
|
10
|
+
import html9 from './zh/guide/started.html';
|
|
11
|
+
import html10 from './zh/index.html';
|
|
12
|
+
|
|
13
|
+
export const markdownConfig: Record<string, { html: string; data: any; headings: any[] }> = {
|
|
14
|
+
'/': { html: html0, data: {"lang":[{"title":"English","id":"en"},{"title":"简体中文","id":"zh"}]}, headings: [] },
|
|
15
|
+
'/en/essentials/index': { html: html1, data: {"title":"Core Essentials","sidebar":[{"type":"link","text":"Essentials List","link":"/en/essentials/list","level":0}]}, headings: [] },
|
|
16
|
+
'/en/essentials/list': { html: html2, data: {"title":"Essentials List"}, headings: [{"level":2,"text":"Feature Overview","id":"feature-overview"}] },
|
|
17
|
+
'/en/guide/install': { html: html3, data: {"title":"Installation"}, headings: [{"level":2,"text":"Basic Install","id":"basic-install"}] },
|
|
18
|
+
'/en/guide/started': { html: html4, data: {"title":"Getting Started"}, headings: [{"level":2,"text":"Quick Start","id":"quick-start"}] },
|
|
19
|
+
'/en/index': { html: html5, data: {"layout":"home","title":"Doc Starter","sidemenu-width":"260px","github-title":"View on GitHub","github-link":"https://github.com/uuware/lupine.js","lang":{"title":"English","id":"en"},"hero":{"name":"Doc Starter","text":"A Demo Documentation Project","tagline":"This is a demo to show how to build documentation.","actions":[{"theme":"brand","text":"Get Started","link":"/en/guide/started"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/uuware/lupine.js"}]},"nav":[{"text":"Guide","link":"/en/guide/started"},{"text":"API","link":"/en/essentials/list"}],"sidebar":[{"type":"group","text":"Guide","level":0},{"type":"link","text":"Getting Started","link":"/en/guide/started","level":1},{"type":"link","text":"Installation","link":"/en/guide/install","level":1},{"type":"group","text":"Core Essentials","level":0},{"type":"link","text":"Essentials List","link":"/en/essentials/list","level":1}],"features":[{"title":"Demo Feature 1","details":"This is a demo feature description."},{"title":"Demo Feature 2","details":"This is another demo feature description."}]}, headings: [] },
|
|
20
|
+
'/zh/essentials/index': { html: html6, data: {"sidebar":[{"type":"group","text":"核心要点","level":0},{"type":"link","text":"核心要点列表","link":"/zh/essentials/list","level":1}]}, headings: [] },
|
|
21
|
+
'/zh/essentials/list': { html: html7, data: {"title":"核心要点列表"}, headings: [{"level":2,"text":"核心要点概述","id":"核心要点概述"}] },
|
|
22
|
+
'/zh/guide/install': { html: html8, data: {"title":"安装"}, headings: [{"level":2,"text":"基本安装","id":"基本安装"}] },
|
|
23
|
+
'/zh/guide/started': { html: html9, data: {"title":"快速开始"}, headings: [{"level":2,"text":"快速开始","id":"快速开始"}] },
|
|
24
|
+
'/zh/index': { html: html10, data: {"layout":"home","title":"文档演示","sidemenu-width":"260px","github-title":"GitHub 仓库","github-link":"https://github.com/uuware/lupine.js","lang":{"title":"简体中文","id":"zh"},"hero":{"name":"文档演示","text":"一个演示用的文档项目","tagline":"这是一个用来展示如何构建文档的演示项目。","actions":[{"theme":"brand","text":"快速开始","link":"/zh/guide/started"},{"theme":"alt","text":"GitHub 仓库","link":"https://github.com/uuware/lupine.js"}]},"nav":[{"text":"指南","link":"/zh/guide/started"},{"text":"API","link":"/zh/essentials/list"}],"sidebar":[{"type":"group","text":"指南","level":0},{"type":"link","text":"快速开始","link":"/zh/guide/started","level":1},{"type":"link","text":"安装","link":"/zh/guide/install","level":1},{"type":"group","text":"核心要点","level":0},{"type":"link","text":"核心要点列表","link":"/zh/essentials/list","level":1}],"features":[{"title":"演示特性 1","details":"这是一个演示特性的描述。"},{"title":"演示特性 2","details":"这是另一个演示特性的描述。"}]}, headings: [] },
|
|
25
|
+
};
|
|
File without changes
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<blockquote>
|
|
2
|
+
<p>[!NOTE]
|
|
3
|
+
This is a demo document.</p>
|
|
4
|
+
</blockquote>
|
|
5
|
+
<h1 id="核心要点列表"><a class="header-anchor" href="#核心要点列表">#</a>核心要点列表</h1><p>This is a simplified essentials list doc for demo purposes.</p>
|
|
6
|
+
<h2 id="核心要点概述"><a class="header-anchor" href="#核心要点概述">#</a>核心要点概述</h2><p>Here is an example listing key features:</p>
|
|
7
|
+
<pre><code class="language-tsx">const features = ['Fast', 'Reliable', 'Easy to use'];
|
|
8
|
+
</code></pre>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<blockquote>
|
|
2
|
+
<p>[!NOTE]
|
|
3
|
+
This is a demo document.</p>
|
|
4
|
+
</blockquote>
|
|
5
|
+
<h1 id="安装"><a class="header-anchor" href="#安装">#</a>安装</h1><p>This is a simplified installation guide for demo purposes.</p>
|
|
6
|
+
<h2 id="基本安装"><a class="header-anchor" href="#基本安装">#</a>基本安装</h2><p>Run the following command:</p>
|
|
7
|
+
<pre><code class="language-bash">npm install my-project
|
|
8
|
+
</code></pre>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<blockquote>
|
|
2
|
+
<p>[!NOTE]
|
|
3
|
+
This is a demo document.</p>
|
|
4
|
+
</blockquote>
|
|
5
|
+
<h1 id="简介"><a class="header-anchor" href="#简介">#</a>简介</h1><p>This is a simplified getting started guide for demo purposes.</p>
|
|
6
|
+
<h2 id="快速开始"><a class="header-anchor" href="#快速开始">#</a>快速开始</h2><p>Initialize your project:</p>
|
|
7
|
+
<pre><code class="language-javascript">import { init } from 'my-project';
|
|
8
|
+
|
|
9
|
+
init({
|
|
10
|
+
debug: true,
|
|
11
|
+
});
|
|
12
|
+
</code></pre>
|
|
File without changes
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const baseCss = {
|
|
2
|
+
a: {
|
|
3
|
+
textDecoration: 'none',
|
|
4
|
+
color: 'inherit',
|
|
5
|
+
'&:hover': { color: 'var(--press-brand-color)' },
|
|
6
|
+
},
|
|
7
|
+
body: {
|
|
8
|
+
backgroundColor: 'var(--primary-bg-color)',
|
|
9
|
+
color: 'var(--primary-color)',
|
|
10
|
+
fontSize: 'var(--font-size-base)',
|
|
11
|
+
lineHeight: 'var(--line-height-base)',
|
|
12
|
+
fontFamily: 'var(--font-family-base)',
|
|
13
|
+
fontWeight: 'var(--font-weight-base)',
|
|
14
|
+
},
|
|
15
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { IApiBase, StaticServer, ApiRouter } from 'lupine.api';
|
|
2
|
+
|
|
3
|
+
export class RootApi implements IApiBase {
|
|
4
|
+
protected router = new ApiRouter();
|
|
5
|
+
|
|
6
|
+
constructor() {
|
|
7
|
+
this.mountDashboard();
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
public getRouter(): ApiRouter {
|
|
11
|
+
return this.router;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
protected mountDashboard() {
|
|
15
|
+
const staticServer = new StaticServer();
|
|
16
|
+
this.router.use('*', staticServer.processRequest.bind(staticServer));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "hello-world",
|
|
3
|
+
"webEntryPoints": [
|
|
4
|
+
{
|
|
5
|
+
"index": "web/src/index.tsx",
|
|
6
|
+
"html": "web/src/index.html",
|
|
7
|
+
"outdir": "/"
|
|
8
|
+
}
|
|
9
|
+
],
|
|
10
|
+
"apiEntryPoint": "api/src/index.ts",
|
|
11
|
+
"copyFiles": [
|
|
12
|
+
{
|
|
13
|
+
"type": "web",
|
|
14
|
+
"from": "web/assets",
|
|
15
|
+
"to": "assets"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"type": "data",
|
|
19
|
+
"from": "api/resources",
|
|
20
|
+
"to": "resources"
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html data-theme="<!--META-THEME-->">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<title><!--META-TITLE--></title>
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
7
|
+
<!--META-ENV-START-->
|
|
8
|
+
<!--META-ENV-END-->
|
|
9
|
+
<link rel="shortcut icon" href="{SUBDIR}/assets/favicon.ico?t={hash}" />
|
|
10
|
+
<link rel="stylesheet" type="text/css" href="{SUBDIR}/index.css?t={hash}" />
|
|
11
|
+
<script defer src="{SUBDIR}/index.js#t={hash}"></script>
|
|
12
|
+
</head>
|
|
13
|
+
<body>
|
|
14
|
+
<div class="lupine-root"></div>
|
|
15
|
+
</body>
|
|
16
|
+
</html>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { bindRouter, CssProps, debugWatch, HtmlVar, isFrontEnd, PageRouter, webEnv } from 'lupine.components';
|
|
2
|
+
|
|
3
|
+
const HelloPage = () => {
|
|
4
|
+
const css: CssProps = {
|
|
5
|
+
padding: '20px',
|
|
6
|
+
h1: {
|
|
7
|
+
color: 'blue',
|
|
8
|
+
'&:hover': {
|
|
9
|
+
color: 'red',
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
const dom = new HtmlVar('0');
|
|
14
|
+
return (
|
|
15
|
+
<div css={css} style={{ textAlign: 'center' }}>
|
|
16
|
+
<h1>Hello World</h1>
|
|
17
|
+
<p>This is a simplified Lupine.js project.</p>
|
|
18
|
+
<p>{dom.node}</p>
|
|
19
|
+
<button onClick={() => (dom.value = (Number(dom.value) + 1).toString())}>Increment</button>
|
|
20
|
+
</div>
|
|
21
|
+
);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
if (isFrontEnd() && webEnv('NODE_ENV', '') === 'development') {
|
|
25
|
+
debugWatch(webEnv('API_PORT', 0));
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const pageRouter = new PageRouter();
|
|
29
|
+
pageRouter.use('/', HelloPage);
|
|
30
|
+
bindRouter(pageRouter);
|