wildpig 1.2.0 → 1.3.1
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/bin/cli.ts +40 -0
- package/build/built-api-routes.ts +10 -4
- package/package.json +7 -6
- package/public/render.js +10 -6
- package/router/ServerDataGuard.tsx +6 -2
- package/router/index.ts +3 -1
- package/scripts/WildPig.tsx +20 -35
- package/scripts/apiRoutes.ts +12 -7
- package/scripts/build.ts +23 -0
- package/scripts/packageStatic.ts +4 -2
- package/scripts/server.ts +38 -0
- package/index.ts +0 -1
- package/scripts/prebuild.ts +0 -7
- package/scripts/run-prebuild.ts +0 -2
package/bin/cli.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { build } from "../scripts/build";
|
|
3
|
+
import { spawn } from "bun";
|
|
4
|
+
const command = process.argv[2];
|
|
5
|
+
|
|
6
|
+
if(command === "start"){
|
|
7
|
+
// 设置一些环境变量
|
|
8
|
+
process.env.NODE_ENV = "production";
|
|
9
|
+
console.log(chalk.green("✨ [Wildpig] Start production server..."));
|
|
10
|
+
const st = performance.now();
|
|
11
|
+
// 启动二进制文件
|
|
12
|
+
spawn(["server"], {
|
|
13
|
+
cwd: "./dist",
|
|
14
|
+
stdout: "inherit",
|
|
15
|
+
env: {
|
|
16
|
+
...process.env
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const ed = performance.now();
|
|
20
|
+
setTimeout(() => {
|
|
21
|
+
console.log(chalk.green("✨ [Wildpig] Production server started in " + Math.floor(ed - st) + "ms"));
|
|
22
|
+
}, 300);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
if(command === "dev"){
|
|
27
|
+
// 设置一些环境变量
|
|
28
|
+
process.env.NODE_ENV = "development";
|
|
29
|
+
await import("../scripts/server");
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
if(command === "build"){
|
|
34
|
+
// 设置一些环境变量
|
|
35
|
+
process.env.NODE_ENV = "production";
|
|
36
|
+
const st = performance.now();
|
|
37
|
+
await build();
|
|
38
|
+
console.log(chalk.green("🐗 [Wildpig] Build done, time:"), chalk.blue(performance.now() - st, "ms"));
|
|
39
|
+
console.log(chalk.green(`✨ [Wildpig] Start by command:`), chalk.blue(`bun run start`));
|
|
40
|
+
}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import { middleware } from "@/middleware"
|
|
1
|
+
import { middleware } from "@/api/middleware"
|
|
2
2
|
import {
|
|
3
3
|
GET as GET1,
|
|
4
4
|
POST as POST1,
|
|
5
5
|
} from "#/src/api/hello/index";
|
|
6
6
|
import {
|
|
7
7
|
GET as GET2,
|
|
8
|
-
} from "#/src/api/
|
|
8
|
+
} from "#/src/api/hello/[id]/index";
|
|
9
9
|
import {
|
|
10
10
|
GET as GET3,
|
|
11
|
+
} from "#/src/api/server-data/hello/[id]/index";
|
|
12
|
+
import {
|
|
13
|
+
GET as GET4,
|
|
11
14
|
} from "#/src/api/server-data/home/index";
|
|
12
15
|
|
|
13
16
|
export default {
|
|
@@ -15,10 +18,13 @@ export default {
|
|
|
15
18
|
GET: (req: any) => middleware(req, GET1),
|
|
16
19
|
POST: (req: any) => middleware(req, POST1),
|
|
17
20
|
},
|
|
18
|
-
"/api/
|
|
21
|
+
"/api/hello/:id": {
|
|
19
22
|
GET: (req: any) => middleware(req, GET2),
|
|
20
23
|
},
|
|
21
|
-
"/api/server-data/
|
|
24
|
+
"/api/server-data/hello/:id": {
|
|
22
25
|
GET: (req: any) => middleware(req, GET3),
|
|
23
26
|
},
|
|
27
|
+
"/api/server-data/home": {
|
|
28
|
+
GET: (req: any) => middleware(req, GET4),
|
|
29
|
+
},
|
|
24
30
|
}
|
package/package.json
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wildpig",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"author": "eriktse",
|
|
5
5
|
"main": "index.ts",
|
|
6
|
+
"bin":{
|
|
7
|
+
"wildpig": "./bin/cli.ts"
|
|
8
|
+
},
|
|
6
9
|
"dependencies": {
|
|
7
10
|
"@nanostores/react": "^1.0.0",
|
|
8
11
|
"@types/bun": "^1.3.4",
|
|
@@ -23,10 +26,8 @@
|
|
|
23
26
|
],
|
|
24
27
|
"license": "ISC",
|
|
25
28
|
"scripts": {
|
|
26
|
-
"dev": "
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"build-linux-musl": "export NODE_ENV=production && bun build --compile --target=bun-linux-x64-musl ./test.ts --outfile dist/wildpig",
|
|
30
|
-
"start": "cd dist && ./wildpig"
|
|
29
|
+
"dev": "wildpig dev",
|
|
30
|
+
"build": "wildpig build",
|
|
31
|
+
"start": "wildpig start"
|
|
31
32
|
}
|
|
32
33
|
}
|
package/public/render.js
CHANGED
|
@@ -28016,6 +28016,9 @@ function listenKeys($store, keys, listener) {
|
|
|
28016
28016
|
// store/serverDataStore.tsx
|
|
28017
28017
|
var serverDataStore = atom(undefined);
|
|
28018
28018
|
|
|
28019
|
+
// router/ServerDataGuard.tsx
|
|
28020
|
+
var import_react4 = __toESM(require_react(), 1);
|
|
28021
|
+
|
|
28019
28022
|
// node_modules/@nanostores/react/index.js
|
|
28020
28023
|
var import_react = __toESM(require_react(), 1);
|
|
28021
28024
|
var emit = (snapshotRef, onChange) => (value) => {
|
|
@@ -28044,8 +28047,6 @@ function Index() {
|
|
|
28044
28047
|
import_react3.useEffect(() => {
|
|
28045
28048
|
console.log("index serverData", serverData);
|
|
28046
28049
|
}, [serverData]);
|
|
28047
|
-
if (serverData === undefined)
|
|
28048
|
-
return "啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊";
|
|
28049
28050
|
return /* @__PURE__ */ jsx_dev_runtime.jsxDEV("div", {
|
|
28050
28051
|
children: [
|
|
28051
28052
|
/* @__PURE__ */ jsx_dev_runtime.jsxDEV("div", {
|
|
@@ -28088,9 +28089,9 @@ var routes_default = [
|
|
|
28088
28089
|
Component: MainLayout,
|
|
28089
28090
|
children: [
|
|
28090
28091
|
{
|
|
28091
|
-
|
|
28092
|
+
path: "/hello/:id",
|
|
28092
28093
|
Component: Index,
|
|
28093
|
-
serverDataApi: "/api/server-data/hello"
|
|
28094
|
+
serverDataApi: "/api/server-data/hello/:id"
|
|
28094
28095
|
}
|
|
28095
28096
|
]
|
|
28096
28097
|
},
|
|
@@ -28102,7 +28103,6 @@ var routes_default = [
|
|
|
28102
28103
|
];
|
|
28103
28104
|
|
|
28104
28105
|
// router/ServerDataGuard.tsx
|
|
28105
|
-
var import_react4 = __toESM(require_react(), 1);
|
|
28106
28106
|
var jsx_dev_runtime4 = __toESM(require_jsx_dev_runtime(), 1);
|
|
28107
28107
|
var ServerDataGuard = () => {
|
|
28108
28108
|
const location = useLocation();
|
|
@@ -28116,9 +28116,13 @@ var ServerDataGuard = () => {
|
|
|
28116
28116
|
navigate("/404");
|
|
28117
28117
|
return;
|
|
28118
28118
|
}
|
|
28119
|
-
|
|
28119
|
+
let serverDataApi = lastMatch.route.serverDataApi;
|
|
28120
28120
|
if (!serverDataApi)
|
|
28121
28121
|
return;
|
|
28122
|
+
for (const [key, value] of Object.entries(lastMatch.params)) {
|
|
28123
|
+
if (value)
|
|
28124
|
+
serverDataApi = serverDataApi.replace(":" + key, value);
|
|
28125
|
+
}
|
|
28122
28126
|
fetch(serverDataApi).then((res) => res.json()).then((data2) => {
|
|
28123
28127
|
serverDataStore.set(data2);
|
|
28124
28128
|
if (data2.title) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useEffect } from "react"
|
|
2
2
|
import { matchRoutes, Outlet, useLocation, useNavigate } from "react-router"
|
|
3
3
|
import pageRoutes from "@/router/routes";
|
|
4
|
-
import { serverDataStore } from "
|
|
4
|
+
import { serverDataStore } from "../store/serverDataStore";
|
|
5
5
|
|
|
6
6
|
export const ServerDataGuard = () => {
|
|
7
7
|
const location = useLocation();
|
|
@@ -19,9 +19,13 @@ export const ServerDataGuard = () => {
|
|
|
19
19
|
return;
|
|
20
20
|
}
|
|
21
21
|
// 成功匹配
|
|
22
|
-
|
|
22
|
+
let serverDataApi = lastMatch.route.serverDataApi;
|
|
23
23
|
if(!serverDataApi)return;
|
|
24
24
|
|
|
25
|
+
// 替换参数
|
|
26
|
+
for(const [key, value] of Object.entries(lastMatch.params)){
|
|
27
|
+
if(value)serverDataApi = serverDataApi.replace(":" + key, value);
|
|
28
|
+
}
|
|
25
29
|
fetch(serverDataApi).then(res => res.json()).then(data => {
|
|
26
30
|
serverDataStore.set(data);
|
|
27
31
|
if(data.title){
|
package/router/index.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { createBrowserRouter } from "react-router";
|
|
2
|
-
import pageRoutes from "@/router/routes";
|
|
3
2
|
import { ServerDataGuard } from "./ServerDataGuard";
|
|
4
3
|
|
|
4
|
+
// 用户代码
|
|
5
|
+
import pageRoutes from "@/router/routes";
|
|
6
|
+
|
|
5
7
|
|
|
6
8
|
/** 生成路由器,可用于监听路由变化 */
|
|
7
9
|
export const browserRouter = createBrowserRouter([
|
package/scripts/WildPig.tsx
CHANGED
|
@@ -8,39 +8,46 @@ import devHtml from "../public/devHtml.html"
|
|
|
8
8
|
import { createStaticHandler, createStaticRouter, matchRoutes } from "react-router";
|
|
9
9
|
|
|
10
10
|
|
|
11
|
+
const __dirname = import.meta.dirname;
|
|
12
|
+
|
|
13
|
+
|
|
11
14
|
// 用户代码
|
|
12
15
|
import pageRoutes from "#/src/router/routes";
|
|
13
16
|
import { App } from "@/App"
|
|
17
|
+
import path from "node:path";
|
|
14
18
|
|
|
15
19
|
const env = process.env;
|
|
20
|
+
const port = env.PORT || 3000;
|
|
21
|
+
const hostname = env.HOSTNAME || "localhost";
|
|
16
22
|
const isDev = env.NODE_ENV === "development";
|
|
17
23
|
|
|
18
24
|
const apiModules = await getApiRouteModules(isDev ? "dev" : "prod") as any;
|
|
19
25
|
|
|
26
|
+
|
|
20
27
|
if(isDev){
|
|
21
28
|
setTimeout(() => {import("../public/render")}, 0);
|
|
22
29
|
/** 打包js */
|
|
23
30
|
await Bun.build({
|
|
24
|
-
entrypoints: ["
|
|
25
|
-
outdir: "
|
|
31
|
+
entrypoints: [path.resolve(__dirname, "../public/render.tsx")],
|
|
32
|
+
outdir: path.resolve(__dirname, "../public"),
|
|
26
33
|
format: "esm",
|
|
27
34
|
minify: false,
|
|
28
35
|
});
|
|
29
36
|
}
|
|
30
37
|
|
|
31
|
-
|
|
32
|
-
export const startServer = () => {
|
|
38
|
+
export const startServer = async () => {
|
|
33
39
|
Bun.serve({
|
|
34
|
-
port
|
|
35
|
-
hostname
|
|
40
|
+
port,
|
|
41
|
+
hostname,
|
|
36
42
|
routes:{
|
|
37
43
|
...apiModules,
|
|
44
|
+
// 这个来自用户文件
|
|
38
45
|
"/favicon.ico": () => new Response(Bun.file("./public/favicon.ico"), {
|
|
39
46
|
headers: {
|
|
40
47
|
"content-type": "image/x-icon",
|
|
41
48
|
}
|
|
42
49
|
}),
|
|
43
|
-
"/render.js": () => new Response((readFileSync("
|
|
50
|
+
"/render.js": () => new Response((readFileSync(path.resolve(__dirname, "../public/render.js"))), {
|
|
44
51
|
headers: {
|
|
45
52
|
"Content-Type": "text/javascript; charset=utf-8",
|
|
46
53
|
"Cache-Control": isDev ? "no-cache" : "public, max-age=31536000, immutable"
|
|
@@ -67,7 +74,6 @@ export const startServer = () => {
|
|
|
67
74
|
|
|
68
75
|
// 请求服务端数据
|
|
69
76
|
const matchRoute = matches.at(-1)!;
|
|
70
|
-
console.log(matchRoute);
|
|
71
77
|
let serverDataApi = matchRoute.route.serverDataApi;
|
|
72
78
|
const getServerData = async () => {
|
|
73
79
|
if(!serverDataApi)return undefined;
|
|
@@ -76,17 +82,11 @@ export const startServer = () => {
|
|
|
76
82
|
if(value)serverDataApi = serverDataApi.replace(":" + key, value);
|
|
77
83
|
}
|
|
78
84
|
const pathname = serverDataApi.split("?")[0]; // 获取路径
|
|
79
|
-
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
return await serverDataResponse.json();
|
|
84
|
-
}else{
|
|
85
|
-
console.debug("No handler for pathname: ", pathname);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
85
|
+
const handleUrl = "http://" + hostname + ":" + port + pathname;
|
|
86
|
+
const serverData = await fetch(handleUrl).then(r => r.json());
|
|
87
|
+
return serverData;
|
|
88
|
+
};
|
|
88
89
|
let serverData = await getServerData();
|
|
89
|
-
console.debug("serverData: ", serverData);
|
|
90
90
|
|
|
91
91
|
|
|
92
92
|
const stream = await renderToReadableStream(<App router={router} serverData={serverData} />);
|
|
@@ -98,22 +98,7 @@ export const startServer = () => {
|
|
|
98
98
|
})
|
|
99
99
|
},
|
|
100
100
|
},
|
|
101
|
-
development: isDev
|
|
101
|
+
development: isDev,
|
|
102
|
+
|
|
102
103
|
})
|
|
103
|
-
console.clear();
|
|
104
|
-
console.log(` __ __ _ _ _ ____ _
|
|
105
|
-
\\ \\ / /(_)| | __| | | _ \\ (_) __ _
|
|
106
|
-
\\ \\ /\\ / / | || | / _\` | | |_) || | / _\` |
|
|
107
|
-
\\ V V / | || || (_| | | __/ | || (_| |
|
|
108
|
-
\\_/\\_/ |_||_| \\__,_| |_| |_| \\__, |
|
|
109
|
-
|___/ `)
|
|
110
|
-
console.log(chalk.blue.bgGreen(" 🐗 WildPig version 1.1.6 by eriktse "));
|
|
111
|
-
console.log(chalk.green(" Strong & Fast Fullstack Framework\n"));
|
|
112
|
-
console.log(chalk.green("✨ WildPig is running on port " + env.PORT || 3000));
|
|
113
|
-
if(isDev){
|
|
114
|
-
console.log(chalk.yellow("💻 Wildpig is Running in development mode."));
|
|
115
|
-
}else{
|
|
116
|
-
console.log(chalk.green("💻 Wildpig is Running in production mode."));
|
|
117
|
-
}
|
|
118
|
-
console.log(chalk.green("🔗 Click to debug in Browser: http://localhost" + ":" + (env.PORT || 3000)));
|
|
119
104
|
}
|
package/scripts/apiRoutes.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { readdirSync, statSync, writeFileSync } from "fs";
|
|
2
|
-
import { middleware } from "@/middleware";
|
|
2
|
+
import { middleware } from "@/api/middleware";
|
|
3
3
|
|
|
4
4
|
const getFilePaths = (dir: string) => {
|
|
5
5
|
const res: string[] = [];
|
|
@@ -16,8 +16,11 @@ const getFilePaths = (dir: string) => {
|
|
|
16
16
|
return res;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
|
|
20
|
+
const makeDynamicRoute = (route: string) => route.replaceAll(/\[([^\]]*)\]/g, ':$1');
|
|
21
|
+
|
|
19
22
|
export const makeApiRoutePathObj = () => {
|
|
20
|
-
//
|
|
23
|
+
// 扫描用户代码路径
|
|
21
24
|
const apiDir = "./src/api";
|
|
22
25
|
const apiPaths = getFilePaths(apiDir);
|
|
23
26
|
const result: Record<string, string> = {};
|
|
@@ -37,7 +40,7 @@ export const makeApiRoutePathObj = () => {
|
|
|
37
40
|
export const packageApiRoutes = async () => {
|
|
38
41
|
const apiRoutes = makeApiRoutePathObj();
|
|
39
42
|
let identId = 0;
|
|
40
|
-
let importsText = `import { middleware } from "@/middleware" \n`;
|
|
43
|
+
let importsText = `import { middleware } from "@/api/middleware" \n`;
|
|
41
44
|
let routesText = "export default {\n";
|
|
42
45
|
for(const route of Object.keys(apiRoutes)) {
|
|
43
46
|
const importPath = apiRoutes[route];
|
|
@@ -48,7 +51,7 @@ export const packageApiRoutes = async () => {
|
|
|
48
51
|
// 标识id
|
|
49
52
|
identId ++;
|
|
50
53
|
importsText += `import {\n`;
|
|
51
|
-
routesText += `\t"${route}": {\n`;
|
|
54
|
+
routesText += `\t"${makeDynamicRoute(route)}": {\n`;
|
|
52
55
|
if(module.GET) {
|
|
53
56
|
importsText += `\tGET as GET${identId},\n`;
|
|
54
57
|
routesText += `\t\tGET: (req: any) => middleware(req, GET${identId}),\n`;
|
|
@@ -80,9 +83,11 @@ export const getApiRouteModules = async (mode: "dev" | "prod") => {
|
|
|
80
83
|
if(!module.GET && !module.POST) continue;
|
|
81
84
|
|
|
82
85
|
// 新建一个路由
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
+
const dynamicRoute = makeDynamicRoute(route);
|
|
87
|
+
console.log(`[apiRoutes] ${dynamicRoute}`)
|
|
88
|
+
result[dynamicRoute] = {};
|
|
89
|
+
if(module.GET) result[dynamicRoute].GET = (req: any) => middleware(req, module.GET);
|
|
90
|
+
if(module.POST) result[dynamicRoute].POST = (req: any) => middleware(req, module.POST);
|
|
86
91
|
}
|
|
87
92
|
return result;
|
|
88
93
|
} else {
|
package/scripts/build.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { packageApiRoutes } from "./apiRoutes";
|
|
3
|
+
import { packageStatic } from "./packageStatic";
|
|
4
|
+
|
|
5
|
+
const prebuild = async () => {
|
|
6
|
+
await packageStatic();
|
|
7
|
+
await packageApiRoutes();
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
export const build = async () => {
|
|
12
|
+
// 前处理
|
|
13
|
+
await prebuild();
|
|
14
|
+
// 正式编译
|
|
15
|
+
await Bun.build({
|
|
16
|
+
entrypoints: [path.resolve(__dirname, "./server.ts")],
|
|
17
|
+
compile: true,
|
|
18
|
+
outdir: "./dist",
|
|
19
|
+
define: {
|
|
20
|
+
"process.env.NODE_ENV": JSON.stringify("production"),
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
}
|
package/scripts/packageStatic.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import Bun from "bun";
|
|
2
2
|
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
3
4
|
|
|
5
|
+
const __dirname = import.meta.dirname;
|
|
4
6
|
|
|
5
7
|
export const packageStatic = async () => {
|
|
6
8
|
/** 打包js */
|
|
7
9
|
await Bun.build({
|
|
8
|
-
entrypoints: ["
|
|
9
|
-
outdir: "
|
|
10
|
+
entrypoints: [path.resolve(__dirname, "../public/render.tsx")],
|
|
11
|
+
outdir: path.resolve(__dirname, "../dist/public"),
|
|
10
12
|
format: "esm",
|
|
11
13
|
minify: true,
|
|
12
14
|
});
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { startServer } from "./WildPig";
|
|
4
|
+
const env = process.env;
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
const port = env.PORT || 3000;
|
|
8
|
+
const hostname = env.HOSTNAME || "localhost";
|
|
9
|
+
const isDev = env.NODE_ENV === "development";
|
|
10
|
+
|
|
11
|
+
const getPackageInfo = async () => {
|
|
12
|
+
const packageJson = await Bun.file(path.resolve(__dirname, "../package.json")).json();
|
|
13
|
+
return packageJson;
|
|
14
|
+
}
|
|
15
|
+
const packageInfo = await getPackageInfo();
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
startServer();
|
|
19
|
+
|
|
20
|
+
const afterStart = () => {
|
|
21
|
+
// 启动后的文字
|
|
22
|
+
console.log(` __ __ _ _ _ ____ _
|
|
23
|
+
\\ \\ / /(_)| | __| | | _ \\ (_) __ _
|
|
24
|
+
\\ \\ /\\ / / | || | / _\` | | |_) || | / _\` |
|
|
25
|
+
\\ V V / | || || (_| | | __/ | || (_| |
|
|
26
|
+
\\_/\\_/ |_||_| \\__,_| |_| |_| \\__, |
|
|
27
|
+
|___/ `)
|
|
28
|
+
console.log(chalk.blue.bgGreen(` 🐗 WildPig version ${packageInfo?.version} by ${packageInfo?.author} `));
|
|
29
|
+
console.log(chalk.green(" Strong & Fast Fullstack Framework\n"));
|
|
30
|
+
console.log(chalk.green("✨ WildPig is running on port " + env.PORT || 3000));
|
|
31
|
+
if(isDev){
|
|
32
|
+
console.log(chalk.yellow("💻 Wildpig is Running in development mode."));
|
|
33
|
+
}else{
|
|
34
|
+
console.log(chalk.green("💻 Wildpig is Running in production mode."));
|
|
35
|
+
}
|
|
36
|
+
console.log(chalk.green(`🔗 Click to debug in Browser: http://${hostname}:${port}`));
|
|
37
|
+
}
|
|
38
|
+
afterStart();
|
package/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { startServer } from "./scripts/WildPig";
|
package/scripts/prebuild.ts
DELETED
package/scripts/run-prebuild.ts
DELETED