vigor-moon 1.1.9 → 1.1.10
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/LICENSE +21 -0
- package/README.md +2 -11
- package/bin/vigor.js +0 -0
- package/dist/{chunk-4MIAR4M4.mjs → chunk-Q2IDULHW.mjs} +2 -2
- package/dist/{chunk-LDLUO4RY.mjs → chunk-VOVCOHUS.mjs} +2 -2
- package/dist/chunk-VOVCOHUS.mjs.map +1 -0
- package/dist/cli.js +12 -11
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +14 -13
- package/dist/cli.mjs.map +1 -1
- package/dist/dev.mjs +2 -2
- package/dist/index.mjs +1 -1
- package/package.json +113 -112
- package/dist/chunk-LDLUO4RY.mjs.map +0 -1
- /package/dist/{chunk-4MIAR4M4.mjs.map → chunk-Q2IDULHW.mjs.map} +0 -0
- /package/src/theme-default/component/{sidebar → sideBar}/index.module.scss +0 -0
- /package/src/theme-default/component/{sidebar → sideBar}/index.tsx +0 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 WIshFul
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
# a static site automation framework
|
|
2
2
|
|
|
3
|
-
# 毕业设计
|
|
4
|
-
## 静态网站自动化构建框架
|
|
5
|
-
将我的毕业设计取名为vigorJS.<br />
|
|
6
|
-
特意选v字开头的单词,代表着使用vite开发。 <br />
|
|
7
|
-
使用 TypeScript & React 完成核心逻辑和前端样式的开发。<br />
|
|
8
|
-
vigor -- 英:/ˈvɪgə/ 美: /ˈvɪgər/ <br />
|
|
9
|
-
n. <br />
|
|
10
|
-
活力;智力, 精力, 元气. <br />
|
|
11
3
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-

|
|
4
|
+
使用说明文档:
|
|
5
|
+
https://vigor-js.vercel.app
|
package/bin/vigor.js
CHANGED
|
File without changes
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
__dirname,
|
|
3
3
|
resolveConfig
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-VOVCOHUS.mjs";
|
|
5
5
|
|
|
6
6
|
// src/node/dev.ts
|
|
7
7
|
import { createServer as createViteDevServer } from "vite";
|
|
@@ -432,4 +432,4 @@ export {
|
|
|
432
432
|
unocssOptions_default,
|
|
433
433
|
createDevServer
|
|
434
434
|
};
|
|
435
|
-
//# sourceMappingURL=chunk-
|
|
435
|
+
//# sourceMappingURL=chunk-Q2IDULHW.mjs.map
|
|
@@ -3,7 +3,7 @@ var __commonJS = (cb, mod) => function __require() {
|
|
|
3
3
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
4
4
|
};
|
|
5
5
|
|
|
6
|
-
// node_modules/.pnpm/tsup@6.6.
|
|
6
|
+
// node_modules/.pnpm/tsup@6.6.2_postcss@8.4.21_typescript@4.9.5/node_modules/tsup/assets/esm_shims.js
|
|
7
7
|
import { fileURLToPath } from "url";
|
|
8
8
|
import path from "path";
|
|
9
9
|
var getFilename = () => fileURLToPath(import.meta.url);
|
|
@@ -68,4 +68,4 @@ export {
|
|
|
68
68
|
resolveConfig,
|
|
69
69
|
defineConfig
|
|
70
70
|
};
|
|
71
|
-
//# sourceMappingURL=chunk-
|
|
71
|
+
//# sourceMappingURL=chunk-VOVCOHUS.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../node_modules/.pnpm/tsup@6.6.2_postcss@8.4.21_typescript@4.9.5/node_modules/tsup/assets/esm_shims.js","../src/node/config.ts"],"sourcesContent":["// Shim globals in esm bundle\nimport { fileURLToPath } from 'url'\nimport path from 'path'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n","import { resolve } from \"path\";\r\nimport fs from \"fs-extra\";\r\n\r\n// vite内部的api,用来解析文件\r\nimport { loadConfigFromFile } from \"vite\";\r\nimport { UserConfig, SiteConfig } from \"../types/index\";\r\n\r\n// 定义command和mode的类型\r\ntype Command = \"build\" | \"serve\";\r\ntype Mode = \"development\" | \"production\";\r\n\r\n// 拿到的文件类型 对象、promise和返回对象或promise的函数\r\ntype RawConfig = UserConfig | Promise<UserConfig> | (() => UserConfig | Promise<UserConfig>);\r\n\r\nfunction getUserConfig(root: string) {\r\n try {\r\n // .js和.ts文件均可\r\n const supportConfigFile = [\"config.js\", \"config.ts\"];\r\n // 判断配置文件是否存在,如果存在就拿到并返回回去\r\n //\r\n const configPath = supportConfigFile.map((file) => resolve(root, file)).find(fs.pathExistsSync);\r\n return configPath;\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n}\r\n\r\nasync function resolveUserConfig(command: Command, mode: Mode, root: string) {\r\n // 1. 获取配置文件路径\r\n const configPath = getUserConfig(root);\r\n // 2. 解析配置文件\r\n const res = await loadConfigFromFile(\r\n {\r\n command,\r\n mode,\r\n },\r\n configPath\r\n );\r\n if (res) {\r\n const { config: ordConfig = {} as RawConfig } = res;\r\n // rawConfig有三种形式\r\n // 1. object对象形式\r\n // 2. promise形式\r\n // 3. function函数形式\r\n // 所以要对rawConfig做一个统一的规范化\r\n const userConfig = await (typeof ordConfig === \"function\" ? ordConfig() : ordConfig);\r\n return [configPath, userConfig] as const;\r\n } else {\r\n return [configPath, {} as UserConfig] as const;\r\n }\r\n}\r\n\r\n// 解析网站(用户信息)信息\r\nexport function resolveSiteData(userConfig: UserConfig): UserConfig {\r\n return {\r\n title: userConfig.title || \"vigor.js\",\r\n description: userConfig.description || \"A SSG framework.\",\r\n themeConfig: userConfig.themeConfig || {},\r\n icon: userConfig.icon || \"\",\r\n vite: userConfig.vite || {},\r\n };\r\n}\r\nexport async function resolveConfig(\r\n // command和mode是vite的解析文件api需要的配置信息\r\n root: string,\r\n command: \"serve\" | \"build\",\r\n mode: \"production\" | \"development\"\r\n): Promise<SiteConfig> {\r\n // 组合并返回解析出来的网站信息\r\n const [configPath, userConfig] = await resolveUserConfig(command, mode, root);\r\n const siteConfig: SiteConfig = {\r\n root,\r\n configPath: configPath,\r\n siteData: resolveSiteData(userConfig as UserConfig),\r\n };\r\n return siteConfig;\r\n}\r\n\r\nexport function defineConfig(config: UserConfig): UserConfig {\r\n return config;\r\n}\r\n"],"mappings":";;;;;;AACA,SAAS,qBAAqB;AAC9B,OAAO,UAAU;AAEjB,IAAM,cAAc,MAAM,cAAc,YAAY,GAAG;AACvD,IAAM,aAAa,MAAM,KAAK,QAAQ,YAAY,CAAC;AAE5C,IAAM,YAA4B,2BAAW;;;ACPpD,SAAS,eAAe;AACxB,OAAO,QAAQ;AAGf,SAAS,0BAA0B;AAUnC,SAAS,cAAc,MAAc;AACnC,MAAI;AAEF,UAAM,oBAAoB,CAAC,aAAa,WAAW;AAGnD,UAAM,aAAa,kBAAkB,IAAI,CAAC,SAAS,QAAQ,MAAM,IAAI,CAAC,EAAE,KAAK,GAAG,cAAc;AAC9F,WAAO;AAAA,EACT,SAAS,GAAP;AACA,YAAQ,IAAI,CAAC;AAAA,EACf;AACF;AAEA,eAAe,kBAAkB,SAAkB,MAAY,MAAc;AAE3E,QAAM,aAAa,cAAc,IAAI;AAErC,QAAM,MAAM,MAAM;AAAA,IAChB;AAAA,MACE;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACA,MAAI,KAAK;AACP,UAAM,EAAE,QAAQ,YAAY,CAAC,EAAe,IAAI;AAMhD,UAAM,aAAa,OAAO,OAAO,cAAc,aAAa,UAAU,IAAI;AAC1E,WAAO,CAAC,YAAY,UAAU;AAAA,EAChC,OAAO;AACL,WAAO,CAAC,YAAY,CAAC,CAAe;AAAA,EACtC;AACF;AAGO,SAAS,gBAAgB,YAAoC;AAClE,SAAO;AAAA,IACL,OAAO,WAAW,SAAS;AAAA,IAC3B,aAAa,WAAW,eAAe;AAAA,IACvC,aAAa,WAAW,eAAe,CAAC;AAAA,IACxC,MAAM,WAAW,QAAQ;AAAA,IACzB,MAAM,WAAW,QAAQ,CAAC;AAAA,EAC5B;AACF;AACA,eAAsB,cAEpB,MACA,SACA,MACqB;AAErB,QAAM,CAAC,YAAY,UAAU,IAAI,MAAM,kBAAkB,SAAS,MAAM,IAAI;AAC5E,QAAM,aAAyB;AAAA,IAC7B;AAAA,IACA;AAAA,IACA,UAAU,gBAAgB,UAAwB;AAAA,EACpD;AACA,SAAO;AACT;AAEO,SAAS,aAAa,QAAgC;AAC3D,SAAO;AACT;","names":[]}
|
package/dist/cli.js
CHANGED
|
@@ -84,10 +84,14 @@ var require_package = _chunk6MH7TP7Pjs.__commonJS.call(void 0, {
|
|
|
84
84
|
},
|
|
85
85
|
dependencies: {
|
|
86
86
|
"@loadable/component": "^5.15.3",
|
|
87
|
-
"@mdx-js/rollup": "2",
|
|
88
87
|
"@mdx-js/mdx": "^2.1.3",
|
|
89
88
|
"@mdx-js/react": "^2.1.3",
|
|
89
|
+
"@mdx-js/rollup": "2",
|
|
90
90
|
"@types/react": "^18.0.27",
|
|
91
|
+
"@unocss/preset-attributify": "0.45.26",
|
|
92
|
+
"@unocss/preset-icons": "0.45.29",
|
|
93
|
+
"@unocss/preset-wind": "0.45.26",
|
|
94
|
+
"@unocss/vite": "0.45.26",
|
|
91
95
|
"@vitejs/plugin-react": "^3.1.0",
|
|
92
96
|
acorn: "^8.8.2",
|
|
93
97
|
cac: "^6.7.14",
|
|
@@ -105,27 +109,24 @@ var require_package = _chunk6MH7TP7Pjs.__commonJS.call(void 0, {
|
|
|
105
109
|
"react-router-dom": "6.4.3",
|
|
106
110
|
"rehype-autolink-headings": "^6.1.1",
|
|
107
111
|
"rehype-slug": "^5.1.0",
|
|
112
|
+
"rehype-stringify": "^9.0.3",
|
|
108
113
|
"remark-frontmatter": "^4.0.1",
|
|
109
114
|
"remark-gfm": "^3.0.1",
|
|
110
115
|
"remark-mdx": "^2.3.0",
|
|
111
116
|
"remark-mdx-frontmatter": "^2.1.1",
|
|
117
|
+
"remark-parse": "^10.0.1",
|
|
118
|
+
"remark-rehype": "^10.1.0",
|
|
112
119
|
"remark-stringify": "^10.0.2",
|
|
120
|
+
rollup: "^3.14.0",
|
|
113
121
|
sass: "^1.60.0",
|
|
114
122
|
serve: "^14.2.0",
|
|
115
123
|
shiki: "^0.14.1",
|
|
116
124
|
sirv: "^2.0.2",
|
|
117
|
-
unocss: "^0.50.4",
|
|
118
|
-
vite: "^4.1.1",
|
|
119
|
-
"@unocss/preset-attributify": "0.45.26",
|
|
120
|
-
"@unocss/preset-icons": "0.45.29",
|
|
121
|
-
"@unocss/preset-wind": "0.45.26",
|
|
122
|
-
"@unocss/vite": "0.45.26",
|
|
123
|
-
"rehype-stringify": "^9.0.3",
|
|
124
|
-
"remark-parse": "^10.0.1",
|
|
125
|
-
"remark-rehype": "^10.1.0",
|
|
126
|
-
rollup: "^3.14.0",
|
|
127
125
|
unified: "^10.1.2",
|
|
128
126
|
"unist-util-visit": "^4.1.2",
|
|
127
|
+
unocss: "^0.50.4",
|
|
128
|
+
"vigor-moon-publisher": "^1.0.1",
|
|
129
|
+
vite: "^4.1.1",
|
|
129
130
|
vitest: "^0.28.4"
|
|
130
131
|
}
|
|
131
132
|
};
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../package.json","../src/node/cli.ts","../src/node/build.ts","../src/node/preview.ts"],"names":["path","fs"],"mappings":"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","sourcesContent":["{\n \"name\": \"vigor-moon\",\n \"version\": \"1.1.9\",\n \"packageManager\": \"pnpm@7.9.2\",\n \"description\": \"SSG framework\",\n \"main\": \"dist/index.js\",\n \"module\": \"dist/index.mjs\",\n \"types\": \"dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"require\": \"./dist/index.js\"\n },\n \"./dist/*\": \"./dist/*\",\n \"./package.json\": \"./package.json\"\n },\n \"scripts\": {\n \"start\": \"tsup --watch --format=cjs,esm\",\n \"build\": \"tsup\",\n \"test:unit\": \"vitest run\",\n \"test:watch\": \"vitest\",\n \"test:e2e\": \"playwright test\",\n \"prepare:e2e\": \"tsx scripts/e2e.ts\",\n \"release\": \"tsx scripts/release.ts\",\n \"changelog\": \"conventional-changelog -p angular -i CHANGELOG.md -s\"\n },\n \"bin\": {\n \"vigor\": \"./bin/vigor.js\"\n },\n \"keywords\": [\n \"SSG\",\n \"docs\"\n ],\n \"author\": \"sungMoon\",\n \"license\": \"MIT\",\n \"files\": [\n \"dist\",\n \"bin\",\n \"README.md\",\n \"src/runtime\",\n \"src/theme-default\",\n \"src/types\",\n \"src/core\",\n \"template.html\"\n ],\n \"devDependencies\": {\n \"@iconify-json/carbon\": \"^1.1.16\",\n \"@playwright/test\": \"1.26.1\",\n \"@types/compression\": \"^1.7.2\",\n \"@types/fs-extra\": \"^11.0.1\",\n \"@types/hast\": \"^2.3.4\",\n \"@types/mdast\": \"^3.0.10\",\n \"@types/node\": \"^18.13.0\",\n \"@types/polka\": \"^0.5.4\",\n \"@types/react-dom\": \"^18.0.11\",\n \"chalk\": \"^5.2.0\",\n \"conventional-changelog-cli\": \"^2.2.2\",\n \"enquirer\": \"^2.3.6\",\n \"execa\": \"5.1.1\",\n \"minimist\": \"^1.2.8\",\n \"semver\": \"^7.5.0\",\n \"tsup\": \"^6.6.2\",\n \"tsx\": \"^3.12.3\",\n \"typescript\": \"^4.9.5\"\n },\n \"dependencies\": {\n \"@loadable/component\": \"^5.15.3\",\n \"@mdx-js/rollup\": \"2\",\n \"@mdx-js/mdx\": \"^2.1.3\",\n \"@mdx-js/react\": \"^2.1.3\",\n \"@types/react\": \"^18.0.27\",\n \"@vitejs/plugin-react\": \"^3.1.0\",\n \"acorn\": \"^8.8.2\",\n \"cac\": \"^6.7.14\",\n \"compression\": \"^1.7.4\",\n \"fast-glob\": \"^3.2.12\",\n \"fs-extra\": \"^11.1.0\",\n \"github-slugger\": \"^2.0.0\",\n \"hast-util-from-html\": \"^1.0.1\",\n \"koa\": \"^2.14.1\",\n \"mdast-util-mdxjs-esm\": \"^1.3.1\",\n \"polka\": \"^0.5.2\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\",\n \"react-helmet-async\": \"1.3.0\",\n \"react-router-dom\": \"6.4.3\",\n \"rehype-autolink-headings\": \"^6.1.1\",\n \"rehype-slug\": \"^5.1.0\",\n \"remark-frontmatter\": \"^4.0.1\",\n \"remark-gfm\": \"^3.0.1\",\n \"remark-mdx\": \"^2.3.0\",\n \"remark-mdx-frontmatter\": \"^2.1.1\",\n \"remark-stringify\": \"^10.0.2\",\n \"sass\": \"^1.60.0\",\n \"serve\": \"^14.2.0\",\n \"shiki\": \"^0.14.1\",\n \"sirv\": \"^2.0.2\",\n \"unocss\": \"^0.50.4\",\n \"vite\": \"^4.1.1\",\n \"@unocss/preset-attributify\": \"0.45.26\",\n \"@unocss/preset-icons\": \"0.45.29\",\n \"@unocss/preset-wind\": \"0.45.26\",\n \"@unocss/vite\": \"0.45.26\",\n \"rehype-stringify\": \"^9.0.3\",\n \"remark-parse\": \"^10.0.1\",\n \"remark-rehype\": \"^10.1.0\",\n \"rollup\": \"^3.14.0\",\n \"unified\": \"^10.1.2\",\n \"unist-util-visit\": \"^4.1.2\",\n \"vitest\": \"^0.28.4\"\n }\n}","import { cac } from \"cac\";\r\nimport { createDevServer } from \"./dev\";\r\nimport { build } from \"./build\";\r\nimport { preview } from \"./preview\";\r\nimport { resolve } from \"path\";\r\nimport { resolveConfig } from \"./config\";\r\nconst version = require(\"../../package.json\").version;\r\n\r\nconst cli = cac(\"vigor\").version(version).help();\r\n\r\n// terminal 指令集\r\n// 开启服务指令\r\ncli\r\n .command(\"[root]\", \"start dev server\")\r\n .alias(\"dev\")\r\n .action(async (root: string) => {\r\n try {\r\n root = root ? resolve(root) : process.cwd();\r\n const server = await createDevServer(root);\r\n await server.listen();\r\n server.printUrls();\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n });\r\n\r\n// 构建打包指令\r\ncli.command(\"build [root]\", \"build in production\").action(async (root: string) => {\r\n try {\r\n root = resolve(root);\r\n const config = await resolveConfig(root, \"build\", \"production\");\r\n await build(root, config);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n});\r\n\r\n// 本地预览产物\r\ncli\r\n .command(\"preview [root]\", \"preview production build\")\r\n .option(\"--port <port>\", \"port to use for preview server\")\r\n .action(async (root: string, { port }: { port: number }) => {\r\n try {\r\n root = resolve(root);\r\n console.log(root);\r\n await preview(root, { port });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n });\r\n\r\ncli.parse();\r\n","import { build as viteBuild, InlineConfig } from \"vite\";\r\nimport { CLIENT_ENTRY_PATH, SERVER_ENTRY_PATH } from \"./constants/index\";\r\nimport path, { join, dirname } from \"path\";\r\nimport { PACKAGE_ROOT } from \"./constants/index\";\r\n\r\nimport type { RollupOutput } from \"rollup\";\r\nimport fs from \"fs-extra\";\r\nimport pluginReact from \"@vitejs/plugin-react\";\r\n\r\nimport { pathToFileURL } from \"url\";\r\nimport { SiteConfig } from \"types\";\r\nimport { pluginConfig } from \"./plugin/config\";\r\nimport { pluginIndexHtml } from \"./plugin/indexHtml\";\r\n\r\nimport { pluginMdx } from \"./plugin/plugin-mdx/index\";\r\nimport { Route, pluginRoutes } from \"./plugin/plugin-routes\";\r\n\r\nimport pluginUnocss from \"unocss/vite\";\r\nimport unocssOptions from \"./unocssOptions\";\r\n\r\nimport { HelmetData } from \"react-helmet-async\";\r\n\r\nconst CLIENT_OUTPUT = \"build\";\r\n\r\n// 依靠vite的打包工具\r\nexport async function bundle(root: string, config: SiteConfig) {\r\n // 使用vite进行打包,将重复逻辑进行抽离\r\n // 设定isSSR,判断是否是生产环境下,用不用多路由打包\r\n const resolveViteConfig = async (isServer: boolean, isSSR = isServer): Promise<InlineConfig> => ({\r\n mode: \"production\",\r\n root,\r\n plugins: [\r\n pluginUnocss(unocssOptions),\r\n pluginIndexHtml(),\r\n pluginReact({ jsxRuntime: \"automatic\", jsxImportSource: \"react\" }),\r\n pluginConfig(config),\r\n // 此处的isSSR和isServer其实是一个东西,但是用的结构符,所以名称需要和之前设定的一样\r\n // 所以添加了一个参数,直接让其和isServer相同\r\n pluginRoutes({ root: config.root, isSSR }),\r\n await pluginMdx(),\r\n ],\r\n // 将react-router-dom直接打包进ssr的产物中,不用再单独引入第三方包了\r\n ssr: {\r\n noExternal: [\"react-router-dom\"],\r\n },\r\n build: {\r\n minify: false,\r\n ssr: isServer,\r\n outDir: isServer ? path.join(root, \".temp\") : path.join(root, CLIENT_OUTPUT),\r\n rollupOptions: {\r\n input: isServer ? SERVER_ENTRY_PATH : CLIENT_ENTRY_PATH,\r\n output: {\r\n format: isServer ? \"cjs\" : \"esm\",\r\n },\r\n },\r\n },\r\n });\r\n\r\n try {\r\n // // 对客户端进行打包\r\n // const clientBuild = async () => {\r\n // return viteBuild(resolveViteConfig(false));\r\n // };\r\n\r\n // // 对服务端进行打包\r\n // const serverBuild = async () => {\r\n // return viteBuild(resolveViteConfig(true));\r\n // };\r\n\r\n console.log(\"Building client and server bundles ...\");\r\n\r\n // 因为clientBuild和serverBuild是相互独立的两个函数,所以使用Promise.all进行优化将二者并行执行\r\n const [clientBundle, serverBundle] = await Promise.all([\r\n // client build\r\n viteBuild(await resolveViteConfig(false)),\r\n // server build\r\n viteBuild(await resolveViteConfig(true)),\r\n ]);\r\n const publicDir = join(root, \"public\");\r\n if (fs.pathExistsSync(publicDir)) {\r\n await fs.copy(publicDir, join(root, CLIENT_OUTPUT));\r\n }\r\n return [clientBundle, serverBundle] as [RollupOutput, RollupOutput];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n}\r\n\r\n// 渲染页面\r\nexport async function renderPage(\r\n render: (pagePath: string, helmetContext: object) => string,\r\n root: string,\r\n clientBundle: RollupOutput,\r\n routes: Route[],\r\n config: SiteConfig\r\n) {\r\n // 水合\r\n const clientChunk = clientBundle.output.find((chunk) => chunk.type === \"chunk\" && chunk.isEntry);\r\n // 拼接为真正的html页面\r\n console.log(\"Rendering page in server side...\");\r\n\r\n // 自动化注入head\r\n const helmetContext = {\r\n context: {},\r\n } as HelmetData;\r\n\r\n // 多路由打包\r\n await Promise.all(\r\n [\r\n ...routes,\r\n {\r\n path: \"/404\",\r\n },\r\n ].map(async (route) => {\r\n const routePath = route.path;\r\n\r\n // 拿到将html渲染为字符串的结果\r\n const appHtml = render(routePath, helmetContext.context);\r\n const styleAssets = clientBundle.output.filter(\r\n (chunk) => chunk.type === \"asset\" && chunk.fileName.endsWith(\".css\")\r\n );\r\n // const code = clientBundle.output[0].code;\r\n const titleIcon = config.siteData?.icon;\r\n const description = config.siteData?.description;\r\n const { helmet } = helmetContext.context;\r\n const html = `\r\n <!DOCTYPE html>\r\n <html lang=\"en\">\r\n <head>\r\n <meta charset=\"UTF-8\">\r\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\r\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n <link rel=\"icon\" href=\"${titleIcon}\" type=\"image/svg+xml\"></link>\r\n ${helmet?.title?.toString() || \"\"}\r\n ${helmet?.meta?.toString() || \"\"}\r\n ${helmet?.link?.toString() || \"\"}\r\n ${helmet?.style?.toString() || \"\"}\r\n <meta name=\"description\" content=\"${description}\">\r\n ${styleAssets.map((item) => `<link rel=\"stylesheet\" href=\"/${item.fileName}\">`).join(\"\\n\")}\r\n </head>\r\n <body>\r\n <div id=\"root\">${appHtml}</div>\r\n <script src=\"/${clientChunk?.fileName}\" type=\"module\"></script>\r\n </body>\r\n </html>\r\n `.trim();\r\n // 开始写入文件\r\n const fileName = routePath.endsWith(\"/\") ? `${routePath}index.html` : `${routePath}.html`;\r\n await fs.ensureDir(join(root, \"build\", dirname(fileName)));\r\n\r\n // 将以上页面html产物写到对应的文件目录中\r\n await fs.writeFile(join(root, \"build\", fileName), html);\r\n })\r\n );\r\n\r\n // 移除掉ssr的产物\r\n await fs.remove(join(root, \".temp\"));\r\n}\r\n\r\n// feature: SSG构建页面\r\nexport async function build(root: string = process.cwd(), config: SiteConfig) {\r\n // bundle => client + server\r\n const [clientBundle] = await bundle(root, config);\r\n // 引入 server-entry 模块,也就是引入刚才打包生成的ssr产物\r\n const serverEntryPath = join(root, \".temp\", \"ssr-entry.js\");\r\n // 服务端渲染,产出HTML\r\n const { render, routes } = await import(pathToFileURL(serverEntryPath).toString()); // pathToFileURL是为了兼容windows的url格式\r\n try {\r\n await renderPage(render, root, clientBundle, routes, config);\r\n } catch (e) {\r\n console.log(\"Render is error\\n\", e);\r\n }\r\n}\r\n","import { resolveConfig } from \"./config\";\r\nimport path from \"path\";\r\nimport fs from \"fs-extra\";\r\nimport compression from \"compression\";\r\nimport sirv from \"sirv\";\r\nimport polka from \"polka\";\r\n\r\n// 默认运行服务器端口号\r\nconst DEFAULT_SERVER_PORT = 9999;\r\n\r\nexport async function preview(root: string, { port }: { port?: number }) {\r\n const config = await resolveConfig(root, \"serve\", \"production\");\r\n const listenPort = port ?? DEFAULT_SERVER_PORT;\r\n const outputDir = path.resolve(root, \"build\");\r\n const notFoundPage = fs.readFileSync(path.resolve(outputDir, \"404.html\"), \"utf8\");\r\n\r\n // 资源压缩\r\n const compress = compression();\r\n\r\n // 处理静态资源\r\n const serve = sirv(outputDir, {\r\n etag: true,\r\n maxAge: 31536000, // 一年\r\n immutable: true,\r\n setHeaders(res, pathname) {\r\n if (pathname.endsWith(\".html\")) {\r\n res.setHeader(\"Cache-Control\", \"no-cache\");\r\n }\r\n },\r\n });\r\n\r\n const onNoMatch: polka.Options[\"onNoMatch\"] = (req, res) => {\r\n res.statusCode = 404;\r\n res.end(notFoundPage);\r\n };\r\n\r\n polka({ onNoMatch })\r\n .use(compress, serve)\r\n .listen(listenPort, (err) => {\r\n if (err) {\r\n throw err;\r\n }\r\n console.log(`Preview server is running at http://localhost:${listenPort}`);\r\n });\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../package.json","../src/node/cli.ts","../src/node/build.ts","../src/node/preview.ts"],"names":["path","fs"],"mappings":"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","sourcesContent":["{\r\n \"name\": \"vigor-moon\",\r\n \"version\": \"1.1.9\",\r\n \"packageManager\": \"pnpm@7.9.2\",\r\n \"description\": \"SSG framework\",\r\n \"main\": \"dist/index.js\",\r\n \"module\": \"dist/index.mjs\",\r\n \"types\": \"dist/index.d.ts\",\r\n \"exports\": {\r\n \".\": {\r\n \"types\": \"./dist/index.d.ts\",\r\n \"import\": \"./dist/index.mjs\",\r\n \"require\": \"./dist/index.js\"\r\n },\r\n \"./dist/*\": \"./dist/*\",\r\n \"./package.json\": \"./package.json\"\r\n },\r\n \"scripts\": {\r\n \"start\": \"tsup --watch --format=cjs,esm\",\r\n \"build\": \"tsup\",\r\n \"test:unit\": \"vitest run\",\r\n \"test:watch\": \"vitest\",\r\n \"test:e2e\": \"playwright test\",\r\n \"prepare:e2e\": \"tsx scripts/e2e.ts\",\r\n \"release\": \"tsx scripts/release.ts\",\r\n \"changelog\": \"conventional-changelog -p angular -i CHANGELOG.md -s\"\r\n },\r\n \"bin\": {\r\n \"vigor\": \"./bin/vigor.js\"\r\n },\r\n \"keywords\": [\r\n \"SSG\",\r\n \"docs\"\r\n ],\r\n \"author\": \"sungMoon\",\r\n \"license\": \"MIT\",\r\n \"files\": [\r\n \"dist\",\r\n \"bin\",\r\n \"README.md\",\r\n \"src/runtime\",\r\n \"src/theme-default\",\r\n \"src/types\",\r\n \"src/core\",\r\n \"template.html\"\r\n ],\r\n \"devDependencies\": {\r\n \"@iconify-json/carbon\": \"^1.1.16\",\r\n \"@playwright/test\": \"1.26.1\",\r\n \"@types/compression\": \"^1.7.2\",\r\n \"@types/fs-extra\": \"^11.0.1\",\r\n \"@types/hast\": \"^2.3.4\",\r\n \"@types/mdast\": \"^3.0.10\",\r\n \"@types/node\": \"^18.13.0\",\r\n \"@types/polka\": \"^0.5.4\",\r\n \"@types/react-dom\": \"^18.0.11\",\r\n \"chalk\": \"^5.2.0\",\r\n \"conventional-changelog-cli\": \"^2.2.2\",\r\n \"enquirer\": \"^2.3.6\",\r\n \"execa\": \"5.1.1\",\r\n \"minimist\": \"^1.2.8\",\r\n \"semver\": \"^7.5.0\",\r\n \"tsup\": \"^6.6.2\",\r\n \"tsx\": \"^3.12.3\",\r\n \"typescript\": \"^4.9.5\"\r\n },\r\n \"dependencies\": {\r\n \"@loadable/component\": \"^5.15.3\",\r\n \"@mdx-js/mdx\": \"^2.1.3\",\r\n \"@mdx-js/react\": \"^2.1.3\",\r\n \"@mdx-js/rollup\": \"2\",\r\n \"@types/react\": \"^18.0.27\",\r\n \"@unocss/preset-attributify\": \"0.45.26\",\r\n \"@unocss/preset-icons\": \"0.45.29\",\r\n \"@unocss/preset-wind\": \"0.45.26\",\r\n \"@unocss/vite\": \"0.45.26\",\r\n \"@vitejs/plugin-react\": \"^3.1.0\",\r\n \"acorn\": \"^8.8.2\",\r\n \"cac\": \"^6.7.14\",\r\n \"compression\": \"^1.7.4\",\r\n \"fast-glob\": \"^3.2.12\",\r\n \"fs-extra\": \"^11.1.0\",\r\n \"github-slugger\": \"^2.0.0\",\r\n \"hast-util-from-html\": \"^1.0.1\",\r\n \"koa\": \"^2.14.1\",\r\n \"mdast-util-mdxjs-esm\": \"^1.3.1\",\r\n \"polka\": \"^0.5.2\",\r\n \"react\": \"^18.2.0\",\r\n \"react-dom\": \"^18.2.0\",\r\n \"react-helmet-async\": \"1.3.0\",\r\n \"react-router-dom\": \"6.4.3\",\r\n \"rehype-autolink-headings\": \"^6.1.1\",\r\n \"rehype-slug\": \"^5.1.0\",\r\n \"rehype-stringify\": \"^9.0.3\",\r\n \"remark-frontmatter\": \"^4.0.1\",\r\n \"remark-gfm\": \"^3.0.1\",\r\n \"remark-mdx\": \"^2.3.0\",\r\n \"remark-mdx-frontmatter\": \"^2.1.1\",\r\n \"remark-parse\": \"^10.0.1\",\r\n \"remark-rehype\": \"^10.1.0\",\r\n \"remark-stringify\": \"^10.0.2\",\r\n \"rollup\": \"^3.14.0\",\r\n \"sass\": \"^1.60.0\",\r\n \"serve\": \"^14.2.0\",\r\n \"shiki\": \"^0.14.1\",\r\n \"sirv\": \"^2.0.2\",\r\n \"unified\": \"^10.1.2\",\r\n \"unist-util-visit\": \"^4.1.2\",\r\n \"unocss\": \"^0.50.4\",\r\n \"vigor-moon-publisher\": \"^1.0.1\",\r\n \"vite\": \"^4.1.1\",\r\n \"vitest\": \"^0.28.4\"\r\n }\r\n}","import { cac } from \"cac\";\r\nimport { createDevServer } from \"./dev\";\r\nimport { build } from \"./build\";\r\nimport { preview } from \"./preview\";\r\nimport { resolve } from \"path\";\r\nimport { resolveConfig } from \"./config\";\r\nconst version = require(\"../../package.json\").version;\r\n\r\nconst cli = cac(\"vigor\").version(version).help();\r\n\r\n// terminal 指令集\r\n// 开启服务指令\r\ncli\r\n .command(\"[root]\", \"start dev server\")\r\n .alias(\"dev\")\r\n .action(async (root: string) => {\r\n try {\r\n root = root ? resolve(root) : process.cwd();\r\n const server = await createDevServer(root);\r\n await server.listen();\r\n server.printUrls();\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n });\r\n\r\n// 构建打包指令\r\ncli.command(\"build [root]\", \"build in production\").action(async (root: string) => {\r\n try {\r\n root = resolve(root);\r\n const config = await resolveConfig(root, \"build\", \"production\");\r\n await build(root, config);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n});\r\n\r\n// 本地预览产物\r\ncli\r\n .command(\"preview [root]\", \"preview production build\")\r\n .option(\"--port <port>\", \"port to use for preview server\")\r\n .action(async (root: string, { port }: { port: number }) => {\r\n try {\r\n root = resolve(root);\r\n console.log(root);\r\n await preview(root, { port });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n });\r\n\r\ncli.parse();\r\n","import { build as viteBuild, InlineConfig } from \"vite\";\r\nimport { CLIENT_ENTRY_PATH, SERVER_ENTRY_PATH } from \"./constants/index\";\r\nimport path, { join, dirname } from \"path\";\r\nimport { PACKAGE_ROOT } from \"./constants/index\";\r\n\r\nimport type { RollupOutput } from \"rollup\";\r\nimport fs from \"fs-extra\";\r\nimport pluginReact from \"@vitejs/plugin-react\";\r\n\r\nimport { pathToFileURL } from \"url\";\r\nimport { SiteConfig } from \"types\";\r\nimport { pluginConfig } from \"./plugin/config\";\r\nimport { pluginIndexHtml } from \"./plugin/indexHtml\";\r\n\r\nimport { pluginMdx } from \"./plugin/plugin-mdx/index\";\r\nimport { Route, pluginRoutes } from \"./plugin/plugin-routes\";\r\n\r\nimport pluginUnocss from \"unocss/vite\";\r\nimport unocssOptions from \"./unocssOptions\";\r\n\r\nimport { HelmetData } from \"react-helmet-async\";\r\n\r\nconst CLIENT_OUTPUT = \"build\";\r\n\r\n// 依靠vite的打包工具\r\nexport async function bundle(root: string, config: SiteConfig) {\r\n // 使用vite进行打包,将重复逻辑进行抽离\r\n // 设定isSSR,判断是否是生产环境下,用不用多路由打包\r\n const resolveViteConfig = async (isServer: boolean, isSSR = isServer): Promise<InlineConfig> => ({\r\n mode: \"production\",\r\n root,\r\n plugins: [\r\n pluginUnocss(unocssOptions),\r\n pluginIndexHtml(),\r\n pluginReact({ jsxRuntime: \"automatic\", jsxImportSource: \"react\" }),\r\n pluginConfig(config),\r\n // 此处的isSSR和isServer其实是一个东西,但是用的结构符,所以名称需要和之前设定的一样\r\n // 所以添加了一个参数,直接让其和isServer相同\r\n pluginRoutes({ root: config.root, isSSR }),\r\n await pluginMdx(),\r\n ],\r\n // 将react-router-dom直接打包进ssr的产物中,不用再单独引入第三方包了\r\n ssr: {\r\n noExternal: [\"react-router-dom\"],\r\n },\r\n build: {\r\n minify: false,\r\n ssr: isServer,\r\n outDir: isServer ? path.join(root, \".temp\") : path.join(root, CLIENT_OUTPUT),\r\n rollupOptions: {\r\n input: isServer ? SERVER_ENTRY_PATH : CLIENT_ENTRY_PATH,\r\n output: {\r\n format: isServer ? \"cjs\" : \"esm\",\r\n },\r\n },\r\n },\r\n });\r\n\r\n try {\r\n // // 对客户端进行打包\r\n // const clientBuild = async () => {\r\n // return viteBuild(resolveViteConfig(false));\r\n // };\r\n\r\n // // 对服务端进行打包\r\n // const serverBuild = async () => {\r\n // return viteBuild(resolveViteConfig(true));\r\n // };\r\n\r\n console.log(\"Building client and server bundles ...\");\r\n\r\n // 因为clientBuild和serverBuild是相互独立的两个函数,所以使用Promise.all进行优化将二者并行执行\r\n const [clientBundle, serverBundle] = await Promise.all([\r\n // client build\r\n viteBuild(await resolveViteConfig(false)),\r\n // server build\r\n viteBuild(await resolveViteConfig(true)),\r\n ]);\r\n const publicDir = join(root, \"public\");\r\n if (fs.pathExistsSync(publicDir)) {\r\n await fs.copy(publicDir, join(root, CLIENT_OUTPUT));\r\n }\r\n return [clientBundle, serverBundle] as [RollupOutput, RollupOutput];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n}\r\n\r\n// 渲染页面\r\nexport async function renderPage(\r\n render: (pagePath: string, helmetContext: object) => string,\r\n root: string,\r\n clientBundle: RollupOutput,\r\n routes: Route[],\r\n config: SiteConfig\r\n) {\r\n // 水合\r\n const clientChunk = clientBundle.output.find((chunk) => chunk.type === \"chunk\" && chunk.isEntry);\r\n // 拼接为真正的html页面\r\n console.log(\"Rendering page in server side...\");\r\n\r\n // 自动化注入head\r\n const helmetContext = {\r\n context: {},\r\n } as HelmetData;\r\n\r\n // 多路由打包\r\n await Promise.all(\r\n [\r\n ...routes,\r\n {\r\n path: \"/404\",\r\n },\r\n ].map(async (route) => {\r\n const routePath = route.path;\r\n\r\n // 拿到将html渲染为字符串的结果\r\n const appHtml = render(routePath, helmetContext.context);\r\n const styleAssets = clientBundle.output.filter(\r\n (chunk) => chunk.type === \"asset\" && chunk.fileName.endsWith(\".css\")\r\n );\r\n // const code = clientBundle.output[0].code;\r\n const titleIcon = config.siteData?.icon;\r\n const description = config.siteData?.description;\r\n const { helmet } = helmetContext.context;\r\n const html = `\r\n <!DOCTYPE html>\r\n <html lang=\"en\">\r\n <head>\r\n <meta charset=\"UTF-8\">\r\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\r\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n <link rel=\"icon\" href=\"${titleIcon}\" type=\"image/svg+xml\"></link>\r\n ${helmet?.title?.toString() || \"\"}\r\n ${helmet?.meta?.toString() || \"\"}\r\n ${helmet?.link?.toString() || \"\"}\r\n ${helmet?.style?.toString() || \"\"}\r\n <meta name=\"description\" content=\"${description}\">\r\n ${styleAssets.map((item) => `<link rel=\"stylesheet\" href=\"/${item.fileName}\">`).join(\"\\n\")}\r\n </head>\r\n <body>\r\n <div id=\"root\">${appHtml}</div>\r\n <script src=\"/${clientChunk?.fileName}\" type=\"module\"></script>\r\n </body>\r\n </html>\r\n `.trim();\r\n // 开始写入文件\r\n const fileName = routePath.endsWith(\"/\") ? `${routePath}index.html` : `${routePath}.html`;\r\n await fs.ensureDir(join(root, \"build\", dirname(fileName)));\r\n\r\n // 将以上页面html产物写到对应的文件目录中\r\n await fs.writeFile(join(root, \"build\", fileName), html);\r\n })\r\n );\r\n\r\n // 移除掉ssr的产物\r\n await fs.remove(join(root, \".temp\"));\r\n}\r\n\r\n// feature: SSG构建页面\r\nexport async function build(root: string = process.cwd(), config: SiteConfig) {\r\n // bundle => client + server\r\n const [clientBundle] = await bundle(root, config);\r\n // 引入 server-entry 模块,也就是引入刚才打包生成的ssr产物\r\n const serverEntryPath = join(root, \".temp\", \"ssr-entry.js\");\r\n // 服务端渲染,产出HTML\r\n const { render, routes } = await import(pathToFileURL(serverEntryPath).toString()); // pathToFileURL是为了兼容windows的url格式\r\n try {\r\n await renderPage(render, root, clientBundle, routes, config);\r\n } catch (e) {\r\n console.log(\"Render is error\\n\", e);\r\n }\r\n}\r\n","import { resolveConfig } from \"./config\";\r\nimport path from \"path\";\r\nimport fs from \"fs-extra\";\r\nimport compression from \"compression\";\r\nimport sirv from \"sirv\";\r\nimport polka from \"polka\";\r\n\r\n// 默认运行服务器端口号\r\nconst DEFAULT_SERVER_PORT = 9999;\r\n\r\nexport async function preview(root: string, { port }: { port?: number }) {\r\n const config = await resolveConfig(root, \"serve\", \"production\");\r\n const listenPort = port ?? DEFAULT_SERVER_PORT;\r\n const outputDir = path.resolve(root, \"build\");\r\n const notFoundPage = fs.readFileSync(path.resolve(outputDir, \"404.html\"), \"utf8\");\r\n\r\n // 资源压缩\r\n const compress = compression();\r\n\r\n // 处理静态资源\r\n const serve = sirv(outputDir, {\r\n etag: true,\r\n maxAge: 31536000, // 一年\r\n immutable: true,\r\n setHeaders(res, pathname) {\r\n if (pathname.endsWith(\".html\")) {\r\n res.setHeader(\"Cache-Control\", \"no-cache\");\r\n }\r\n },\r\n });\r\n\r\n const onNoMatch: polka.Options[\"onNoMatch\"] = (req, res) => {\r\n res.statusCode = 404;\r\n res.end(notFoundPage);\r\n };\r\n\r\n polka({ onNoMatch })\r\n .use(compress, serve)\r\n .listen(listenPort, (err) => {\r\n if (err) {\r\n throw err;\r\n }\r\n console.log(`Preview server is running at http://localhost:${listenPort}`);\r\n });\r\n}\r\n"]}
|
package/dist/cli.mjs
CHANGED
|
@@ -7,11 +7,11 @@ import {
|
|
|
7
7
|
pluginMdx,
|
|
8
8
|
pluginRoutes,
|
|
9
9
|
unocssOptions_default
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-Q2IDULHW.mjs";
|
|
11
11
|
import {
|
|
12
12
|
__commonJS,
|
|
13
13
|
resolveConfig
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-VOVCOHUS.mjs";
|
|
15
15
|
|
|
16
16
|
// package.json
|
|
17
17
|
var require_package = __commonJS({
|
|
@@ -84,10 +84,14 @@ var require_package = __commonJS({
|
|
|
84
84
|
},
|
|
85
85
|
dependencies: {
|
|
86
86
|
"@loadable/component": "^5.15.3",
|
|
87
|
-
"@mdx-js/rollup": "2",
|
|
88
87
|
"@mdx-js/mdx": "^2.1.3",
|
|
89
88
|
"@mdx-js/react": "^2.1.3",
|
|
89
|
+
"@mdx-js/rollup": "2",
|
|
90
90
|
"@types/react": "^18.0.27",
|
|
91
|
+
"@unocss/preset-attributify": "0.45.26",
|
|
92
|
+
"@unocss/preset-icons": "0.45.29",
|
|
93
|
+
"@unocss/preset-wind": "0.45.26",
|
|
94
|
+
"@unocss/vite": "0.45.26",
|
|
91
95
|
"@vitejs/plugin-react": "^3.1.0",
|
|
92
96
|
acorn: "^8.8.2",
|
|
93
97
|
cac: "^6.7.14",
|
|
@@ -105,27 +109,24 @@ var require_package = __commonJS({
|
|
|
105
109
|
"react-router-dom": "6.4.3",
|
|
106
110
|
"rehype-autolink-headings": "^6.1.1",
|
|
107
111
|
"rehype-slug": "^5.1.0",
|
|
112
|
+
"rehype-stringify": "^9.0.3",
|
|
108
113
|
"remark-frontmatter": "^4.0.1",
|
|
109
114
|
"remark-gfm": "^3.0.1",
|
|
110
115
|
"remark-mdx": "^2.3.0",
|
|
111
116
|
"remark-mdx-frontmatter": "^2.1.1",
|
|
117
|
+
"remark-parse": "^10.0.1",
|
|
118
|
+
"remark-rehype": "^10.1.0",
|
|
112
119
|
"remark-stringify": "^10.0.2",
|
|
120
|
+
rollup: "^3.14.0",
|
|
113
121
|
sass: "^1.60.0",
|
|
114
122
|
serve: "^14.2.0",
|
|
115
123
|
shiki: "^0.14.1",
|
|
116
124
|
sirv: "^2.0.2",
|
|
117
|
-
unocss: "^0.50.4",
|
|
118
|
-
vite: "^4.1.1",
|
|
119
|
-
"@unocss/preset-attributify": "0.45.26",
|
|
120
|
-
"@unocss/preset-icons": "0.45.29",
|
|
121
|
-
"@unocss/preset-wind": "0.45.26",
|
|
122
|
-
"@unocss/vite": "0.45.26",
|
|
123
|
-
"rehype-stringify": "^9.0.3",
|
|
124
|
-
"remark-parse": "^10.0.1",
|
|
125
|
-
"remark-rehype": "^10.1.0",
|
|
126
|
-
rollup: "^3.14.0",
|
|
127
125
|
unified: "^10.1.2",
|
|
128
126
|
"unist-util-visit": "^4.1.2",
|
|
127
|
+
unocss: "^0.50.4",
|
|
128
|
+
"vigor-moon-publisher": "^1.0.1",
|
|
129
|
+
vite: "^4.1.1",
|
|
129
130
|
vitest: "^0.28.4"
|
|
130
131
|
}
|
|
131
132
|
};
|
package/dist/cli.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../package.json","../src/node/cli.ts","../src/node/build.ts","../src/node/preview.ts"],"sourcesContent":["{\n \"name\": \"vigor-moon\",\n \"version\": \"1.1.9\",\n \"packageManager\": \"pnpm@7.9.2\",\n \"description\": \"SSG framework\",\n \"main\": \"dist/index.js\",\n \"module\": \"dist/index.mjs\",\n \"types\": \"dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"require\": \"./dist/index.js\"\n },\n \"./dist/*\": \"./dist/*\",\n \"./package.json\": \"./package.json\"\n },\n \"scripts\": {\n \"start\": \"tsup --watch --format=cjs,esm\",\n \"build\": \"tsup\",\n \"test:unit\": \"vitest run\",\n \"test:watch\": \"vitest\",\n \"test:e2e\": \"playwright test\",\n \"prepare:e2e\": \"tsx scripts/e2e.ts\",\n \"release\": \"tsx scripts/release.ts\",\n \"changelog\": \"conventional-changelog -p angular -i CHANGELOG.md -s\"\n },\n \"bin\": {\n \"vigor\": \"./bin/vigor.js\"\n },\n \"keywords\": [\n \"SSG\",\n \"docs\"\n ],\n \"author\": \"sungMoon\",\n \"license\": \"MIT\",\n \"files\": [\n \"dist\",\n \"bin\",\n \"README.md\",\n \"src/runtime\",\n \"src/theme-default\",\n \"src/types\",\n \"src/core\",\n \"template.html\"\n ],\n \"devDependencies\": {\n \"@iconify-json/carbon\": \"^1.1.16\",\n \"@playwright/test\": \"1.26.1\",\n \"@types/compression\": \"^1.7.2\",\n \"@types/fs-extra\": \"^11.0.1\",\n \"@types/hast\": \"^2.3.4\",\n \"@types/mdast\": \"^3.0.10\",\n \"@types/node\": \"^18.13.0\",\n \"@types/polka\": \"^0.5.4\",\n \"@types/react-dom\": \"^18.0.11\",\n \"chalk\": \"^5.2.0\",\n \"conventional-changelog-cli\": \"^2.2.2\",\n \"enquirer\": \"^2.3.6\",\n \"execa\": \"5.1.1\",\n \"minimist\": \"^1.2.8\",\n \"semver\": \"^7.5.0\",\n \"tsup\": \"^6.6.2\",\n \"tsx\": \"^3.12.3\",\n \"typescript\": \"^4.9.5\"\n },\n \"dependencies\": {\n \"@loadable/component\": \"^5.15.3\",\n \"@mdx-js/rollup\": \"2\",\n \"@mdx-js/mdx\": \"^2.1.3\",\n \"@mdx-js/react\": \"^2.1.3\",\n \"@types/react\": \"^18.0.27\",\n \"@vitejs/plugin-react\": \"^3.1.0\",\n \"acorn\": \"^8.8.2\",\n \"cac\": \"^6.7.14\",\n \"compression\": \"^1.7.4\",\n \"fast-glob\": \"^3.2.12\",\n \"fs-extra\": \"^11.1.0\",\n \"github-slugger\": \"^2.0.0\",\n \"hast-util-from-html\": \"^1.0.1\",\n \"koa\": \"^2.14.1\",\n \"mdast-util-mdxjs-esm\": \"^1.3.1\",\n \"polka\": \"^0.5.2\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\",\n \"react-helmet-async\": \"1.3.0\",\n \"react-router-dom\": \"6.4.3\",\n \"rehype-autolink-headings\": \"^6.1.1\",\n \"rehype-slug\": \"^5.1.0\",\n \"remark-frontmatter\": \"^4.0.1\",\n \"remark-gfm\": \"^3.0.1\",\n \"remark-mdx\": \"^2.3.0\",\n \"remark-mdx-frontmatter\": \"^2.1.1\",\n \"remark-stringify\": \"^10.0.2\",\n \"sass\": \"^1.60.0\",\n \"serve\": \"^14.2.0\",\n \"shiki\": \"^0.14.1\",\n \"sirv\": \"^2.0.2\",\n \"unocss\": \"^0.50.4\",\n \"vite\": \"^4.1.1\",\n \"@unocss/preset-attributify\": \"0.45.26\",\n \"@unocss/preset-icons\": \"0.45.29\",\n \"@unocss/preset-wind\": \"0.45.26\",\n \"@unocss/vite\": \"0.45.26\",\n \"rehype-stringify\": \"^9.0.3\",\n \"remark-parse\": \"^10.0.1\",\n \"remark-rehype\": \"^10.1.0\",\n \"rollup\": \"^3.14.0\",\n \"unified\": \"^10.1.2\",\n \"unist-util-visit\": \"^4.1.2\",\n \"vitest\": \"^0.28.4\"\n }\n}","import { cac } from \"cac\";\r\nimport { createDevServer } from \"./dev\";\r\nimport { build } from \"./build\";\r\nimport { preview } from \"./preview\";\r\nimport { resolve } from \"path\";\r\nimport { resolveConfig } from \"./config\";\r\nconst version = require(\"../../package.json\").version;\r\n\r\nconst cli = cac(\"vigor\").version(version).help();\r\n\r\n// terminal 指令集\r\n// 开启服务指令\r\ncli\r\n .command(\"[root]\", \"start dev server\")\r\n .alias(\"dev\")\r\n .action(async (root: string) => {\r\n try {\r\n root = root ? resolve(root) : process.cwd();\r\n const server = await createDevServer(root);\r\n await server.listen();\r\n server.printUrls();\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n });\r\n\r\n// 构建打包指令\r\ncli.command(\"build [root]\", \"build in production\").action(async (root: string) => {\r\n try {\r\n root = resolve(root);\r\n const config = await resolveConfig(root, \"build\", \"production\");\r\n await build(root, config);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n});\r\n\r\n// 本地预览产物\r\ncli\r\n .command(\"preview [root]\", \"preview production build\")\r\n .option(\"--port <port>\", \"port to use for preview server\")\r\n .action(async (root: string, { port }: { port: number }) => {\r\n try {\r\n root = resolve(root);\r\n console.log(root);\r\n await preview(root, { port });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n });\r\n\r\ncli.parse();\r\n","import { build as viteBuild, InlineConfig } from \"vite\";\r\nimport { CLIENT_ENTRY_PATH, SERVER_ENTRY_PATH } from \"./constants/index\";\r\nimport path, { join, dirname } from \"path\";\r\nimport { PACKAGE_ROOT } from \"./constants/index\";\r\n\r\nimport type { RollupOutput } from \"rollup\";\r\nimport fs from \"fs-extra\";\r\nimport pluginReact from \"@vitejs/plugin-react\";\r\n\r\nimport { pathToFileURL } from \"url\";\r\nimport { SiteConfig } from \"types\";\r\nimport { pluginConfig } from \"./plugin/config\";\r\nimport { pluginIndexHtml } from \"./plugin/indexHtml\";\r\n\r\nimport { pluginMdx } from \"./plugin/plugin-mdx/index\";\r\nimport { Route, pluginRoutes } from \"./plugin/plugin-routes\";\r\n\r\nimport pluginUnocss from \"unocss/vite\";\r\nimport unocssOptions from \"./unocssOptions\";\r\n\r\nimport { HelmetData } from \"react-helmet-async\";\r\n\r\nconst CLIENT_OUTPUT = \"build\";\r\n\r\n// 依靠vite的打包工具\r\nexport async function bundle(root: string, config: SiteConfig) {\r\n // 使用vite进行打包,将重复逻辑进行抽离\r\n // 设定isSSR,判断是否是生产环境下,用不用多路由打包\r\n const resolveViteConfig = async (isServer: boolean, isSSR = isServer): Promise<InlineConfig> => ({\r\n mode: \"production\",\r\n root,\r\n plugins: [\r\n pluginUnocss(unocssOptions),\r\n pluginIndexHtml(),\r\n pluginReact({ jsxRuntime: \"automatic\", jsxImportSource: \"react\" }),\r\n pluginConfig(config),\r\n // 此处的isSSR和isServer其实是一个东西,但是用的结构符,所以名称需要和之前设定的一样\r\n // 所以添加了一个参数,直接让其和isServer相同\r\n pluginRoutes({ root: config.root, isSSR }),\r\n await pluginMdx(),\r\n ],\r\n // 将react-router-dom直接打包进ssr的产物中,不用再单独引入第三方包了\r\n ssr: {\r\n noExternal: [\"react-router-dom\"],\r\n },\r\n build: {\r\n minify: false,\r\n ssr: isServer,\r\n outDir: isServer ? path.join(root, \".temp\") : path.join(root, CLIENT_OUTPUT),\r\n rollupOptions: {\r\n input: isServer ? SERVER_ENTRY_PATH : CLIENT_ENTRY_PATH,\r\n output: {\r\n format: isServer ? \"cjs\" : \"esm\",\r\n },\r\n },\r\n },\r\n });\r\n\r\n try {\r\n // // 对客户端进行打包\r\n // const clientBuild = async () => {\r\n // return viteBuild(resolveViteConfig(false));\r\n // };\r\n\r\n // // 对服务端进行打包\r\n // const serverBuild = async () => {\r\n // return viteBuild(resolveViteConfig(true));\r\n // };\r\n\r\n console.log(\"Building client and server bundles ...\");\r\n\r\n // 因为clientBuild和serverBuild是相互独立的两个函数,所以使用Promise.all进行优化将二者并行执行\r\n const [clientBundle, serverBundle] = await Promise.all([\r\n // client build\r\n viteBuild(await resolveViteConfig(false)),\r\n // server build\r\n viteBuild(await resolveViteConfig(true)),\r\n ]);\r\n const publicDir = join(root, \"public\");\r\n if (fs.pathExistsSync(publicDir)) {\r\n await fs.copy(publicDir, join(root, CLIENT_OUTPUT));\r\n }\r\n return [clientBundle, serverBundle] as [RollupOutput, RollupOutput];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n}\r\n\r\n// 渲染页面\r\nexport async function renderPage(\r\n render: (pagePath: string, helmetContext: object) => string,\r\n root: string,\r\n clientBundle: RollupOutput,\r\n routes: Route[],\r\n config: SiteConfig\r\n) {\r\n // 水合\r\n const clientChunk = clientBundle.output.find((chunk) => chunk.type === \"chunk\" && chunk.isEntry);\r\n // 拼接为真正的html页面\r\n console.log(\"Rendering page in server side...\");\r\n\r\n // 自动化注入head\r\n const helmetContext = {\r\n context: {},\r\n } as HelmetData;\r\n\r\n // 多路由打包\r\n await Promise.all(\r\n [\r\n ...routes,\r\n {\r\n path: \"/404\",\r\n },\r\n ].map(async (route) => {\r\n const routePath = route.path;\r\n\r\n // 拿到将html渲染为字符串的结果\r\n const appHtml = render(routePath, helmetContext.context);\r\n const styleAssets = clientBundle.output.filter(\r\n (chunk) => chunk.type === \"asset\" && chunk.fileName.endsWith(\".css\")\r\n );\r\n // const code = clientBundle.output[0].code;\r\n const titleIcon = config.siteData?.icon;\r\n const description = config.siteData?.description;\r\n const { helmet } = helmetContext.context;\r\n const html = `\r\n <!DOCTYPE html>\r\n <html lang=\"en\">\r\n <head>\r\n <meta charset=\"UTF-8\">\r\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\r\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n <link rel=\"icon\" href=\"${titleIcon}\" type=\"image/svg+xml\"></link>\r\n ${helmet?.title?.toString() || \"\"}\r\n ${helmet?.meta?.toString() || \"\"}\r\n ${helmet?.link?.toString() || \"\"}\r\n ${helmet?.style?.toString() || \"\"}\r\n <meta name=\"description\" content=\"${description}\">\r\n ${styleAssets.map((item) => `<link rel=\"stylesheet\" href=\"/${item.fileName}\">`).join(\"\\n\")}\r\n </head>\r\n <body>\r\n <div id=\"root\">${appHtml}</div>\r\n <script src=\"/${clientChunk?.fileName}\" type=\"module\"></script>\r\n </body>\r\n </html>\r\n `.trim();\r\n // 开始写入文件\r\n const fileName = routePath.endsWith(\"/\") ? `${routePath}index.html` : `${routePath}.html`;\r\n await fs.ensureDir(join(root, \"build\", dirname(fileName)));\r\n\r\n // 将以上页面html产物写到对应的文件目录中\r\n await fs.writeFile(join(root, \"build\", fileName), html);\r\n })\r\n );\r\n\r\n // 移除掉ssr的产物\r\n await fs.remove(join(root, \".temp\"));\r\n}\r\n\r\n// feature: SSG构建页面\r\nexport async function build(root: string = process.cwd(), config: SiteConfig) {\r\n // bundle => client + server\r\n const [clientBundle] = await bundle(root, config);\r\n // 引入 server-entry 模块,也就是引入刚才打包生成的ssr产物\r\n const serverEntryPath = join(root, \".temp\", \"ssr-entry.js\");\r\n // 服务端渲染,产出HTML\r\n const { render, routes } = await import(pathToFileURL(serverEntryPath).toString()); // pathToFileURL是为了兼容windows的url格式\r\n try {\r\n await renderPage(render, root, clientBundle, routes, config);\r\n } catch (e) {\r\n console.log(\"Render is error\\n\", e);\r\n }\r\n}\r\n","import { resolveConfig } from \"./config\";\r\nimport path from \"path\";\r\nimport fs from \"fs-extra\";\r\nimport compression from \"compression\";\r\nimport sirv from \"sirv\";\r\nimport polka from \"polka\";\r\n\r\n// 默认运行服务器端口号\r\nconst DEFAULT_SERVER_PORT = 9999;\r\n\r\nexport async function preview(root: string, { port }: { port?: number }) {\r\n const config = await resolveConfig(root, \"serve\", \"production\");\r\n const listenPort = port ?? DEFAULT_SERVER_PORT;\r\n const outputDir = path.resolve(root, \"build\");\r\n const notFoundPage = fs.readFileSync(path.resolve(outputDir, \"404.html\"), \"utf8\");\r\n\r\n // 资源压缩\r\n const compress = compression();\r\n\r\n // 处理静态资源\r\n const serve = sirv(outputDir, {\r\n etag: true,\r\n maxAge: 31536000, // 一年\r\n immutable: true,\r\n setHeaders(res, pathname) {\r\n if (pathname.endsWith(\".html\")) {\r\n res.setHeader(\"Cache-Control\", \"no-cache\");\r\n }\r\n },\r\n });\r\n\r\n const onNoMatch: polka.Options[\"onNoMatch\"] = (req, res) => {\r\n res.statusCode = 404;\r\n res.end(notFoundPage);\r\n };\r\n\r\n polka({ onNoMatch })\r\n .use(compress, serve)\r\n .listen(listenPort, (err) => {\r\n if (err) {\r\n throw err;\r\n }\r\n console.log(`Preview server is running at http://localhost:${listenPort}`);\r\n });\r\n}\r\n"],"mappings":"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","names":["path","fs"]}
|
|
1
|
+
{"version":3,"sources":["../package.json","../src/node/cli.ts","../src/node/build.ts","../src/node/preview.ts"],"sourcesContent":["{\r\n \"name\": \"vigor-moon\",\r\n \"version\": \"1.1.9\",\r\n \"packageManager\": \"pnpm@7.9.2\",\r\n \"description\": \"SSG framework\",\r\n \"main\": \"dist/index.js\",\r\n \"module\": \"dist/index.mjs\",\r\n \"types\": \"dist/index.d.ts\",\r\n \"exports\": {\r\n \".\": {\r\n \"types\": \"./dist/index.d.ts\",\r\n \"import\": \"./dist/index.mjs\",\r\n \"require\": \"./dist/index.js\"\r\n },\r\n \"./dist/*\": \"./dist/*\",\r\n \"./package.json\": \"./package.json\"\r\n },\r\n \"scripts\": {\r\n \"start\": \"tsup --watch --format=cjs,esm\",\r\n \"build\": \"tsup\",\r\n \"test:unit\": \"vitest run\",\r\n \"test:watch\": \"vitest\",\r\n \"test:e2e\": \"playwright test\",\r\n \"prepare:e2e\": \"tsx scripts/e2e.ts\",\r\n \"release\": \"tsx scripts/release.ts\",\r\n \"changelog\": \"conventional-changelog -p angular -i CHANGELOG.md -s\"\r\n },\r\n \"bin\": {\r\n \"vigor\": \"./bin/vigor.js\"\r\n },\r\n \"keywords\": [\r\n \"SSG\",\r\n \"docs\"\r\n ],\r\n \"author\": \"sungMoon\",\r\n \"license\": \"MIT\",\r\n \"files\": [\r\n \"dist\",\r\n \"bin\",\r\n \"README.md\",\r\n \"src/runtime\",\r\n \"src/theme-default\",\r\n \"src/types\",\r\n \"src/core\",\r\n \"template.html\"\r\n ],\r\n \"devDependencies\": {\r\n \"@iconify-json/carbon\": \"^1.1.16\",\r\n \"@playwright/test\": \"1.26.1\",\r\n \"@types/compression\": \"^1.7.2\",\r\n \"@types/fs-extra\": \"^11.0.1\",\r\n \"@types/hast\": \"^2.3.4\",\r\n \"@types/mdast\": \"^3.0.10\",\r\n \"@types/node\": \"^18.13.0\",\r\n \"@types/polka\": \"^0.5.4\",\r\n \"@types/react-dom\": \"^18.0.11\",\r\n \"chalk\": \"^5.2.0\",\r\n \"conventional-changelog-cli\": \"^2.2.2\",\r\n \"enquirer\": \"^2.3.6\",\r\n \"execa\": \"5.1.1\",\r\n \"minimist\": \"^1.2.8\",\r\n \"semver\": \"^7.5.0\",\r\n \"tsup\": \"^6.6.2\",\r\n \"tsx\": \"^3.12.3\",\r\n \"typescript\": \"^4.9.5\"\r\n },\r\n \"dependencies\": {\r\n \"@loadable/component\": \"^5.15.3\",\r\n \"@mdx-js/mdx\": \"^2.1.3\",\r\n \"@mdx-js/react\": \"^2.1.3\",\r\n \"@mdx-js/rollup\": \"2\",\r\n \"@types/react\": \"^18.0.27\",\r\n \"@unocss/preset-attributify\": \"0.45.26\",\r\n \"@unocss/preset-icons\": \"0.45.29\",\r\n \"@unocss/preset-wind\": \"0.45.26\",\r\n \"@unocss/vite\": \"0.45.26\",\r\n \"@vitejs/plugin-react\": \"^3.1.0\",\r\n \"acorn\": \"^8.8.2\",\r\n \"cac\": \"^6.7.14\",\r\n \"compression\": \"^1.7.4\",\r\n \"fast-glob\": \"^3.2.12\",\r\n \"fs-extra\": \"^11.1.0\",\r\n \"github-slugger\": \"^2.0.0\",\r\n \"hast-util-from-html\": \"^1.0.1\",\r\n \"koa\": \"^2.14.1\",\r\n \"mdast-util-mdxjs-esm\": \"^1.3.1\",\r\n \"polka\": \"^0.5.2\",\r\n \"react\": \"^18.2.0\",\r\n \"react-dom\": \"^18.2.0\",\r\n \"react-helmet-async\": \"1.3.0\",\r\n \"react-router-dom\": \"6.4.3\",\r\n \"rehype-autolink-headings\": \"^6.1.1\",\r\n \"rehype-slug\": \"^5.1.0\",\r\n \"rehype-stringify\": \"^9.0.3\",\r\n \"remark-frontmatter\": \"^4.0.1\",\r\n \"remark-gfm\": \"^3.0.1\",\r\n \"remark-mdx\": \"^2.3.0\",\r\n \"remark-mdx-frontmatter\": \"^2.1.1\",\r\n \"remark-parse\": \"^10.0.1\",\r\n \"remark-rehype\": \"^10.1.0\",\r\n \"remark-stringify\": \"^10.0.2\",\r\n \"rollup\": \"^3.14.0\",\r\n \"sass\": \"^1.60.0\",\r\n \"serve\": \"^14.2.0\",\r\n \"shiki\": \"^0.14.1\",\r\n \"sirv\": \"^2.0.2\",\r\n \"unified\": \"^10.1.2\",\r\n \"unist-util-visit\": \"^4.1.2\",\r\n \"unocss\": \"^0.50.4\",\r\n \"vigor-moon-publisher\": \"^1.0.1\",\r\n \"vite\": \"^4.1.1\",\r\n \"vitest\": \"^0.28.4\"\r\n }\r\n}","import { cac } from \"cac\";\r\nimport { createDevServer } from \"./dev\";\r\nimport { build } from \"./build\";\r\nimport { preview } from \"./preview\";\r\nimport { resolve } from \"path\";\r\nimport { resolveConfig } from \"./config\";\r\nconst version = require(\"../../package.json\").version;\r\n\r\nconst cli = cac(\"vigor\").version(version).help();\r\n\r\n// terminal 指令集\r\n// 开启服务指令\r\ncli\r\n .command(\"[root]\", \"start dev server\")\r\n .alias(\"dev\")\r\n .action(async (root: string) => {\r\n try {\r\n root = root ? resolve(root) : process.cwd();\r\n const server = await createDevServer(root);\r\n await server.listen();\r\n server.printUrls();\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n });\r\n\r\n// 构建打包指令\r\ncli.command(\"build [root]\", \"build in production\").action(async (root: string) => {\r\n try {\r\n root = resolve(root);\r\n const config = await resolveConfig(root, \"build\", \"production\");\r\n await build(root, config);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n});\r\n\r\n// 本地预览产物\r\ncli\r\n .command(\"preview [root]\", \"preview production build\")\r\n .option(\"--port <port>\", \"port to use for preview server\")\r\n .action(async (root: string, { port }: { port: number }) => {\r\n try {\r\n root = resolve(root);\r\n console.log(root);\r\n await preview(root, { port });\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n });\r\n\r\ncli.parse();\r\n","import { build as viteBuild, InlineConfig } from \"vite\";\r\nimport { CLIENT_ENTRY_PATH, SERVER_ENTRY_PATH } from \"./constants/index\";\r\nimport path, { join, dirname } from \"path\";\r\nimport { PACKAGE_ROOT } from \"./constants/index\";\r\n\r\nimport type { RollupOutput } from \"rollup\";\r\nimport fs from \"fs-extra\";\r\nimport pluginReact from \"@vitejs/plugin-react\";\r\n\r\nimport { pathToFileURL } from \"url\";\r\nimport { SiteConfig } from \"types\";\r\nimport { pluginConfig } from \"./plugin/config\";\r\nimport { pluginIndexHtml } from \"./plugin/indexHtml\";\r\n\r\nimport { pluginMdx } from \"./plugin/plugin-mdx/index\";\r\nimport { Route, pluginRoutes } from \"./plugin/plugin-routes\";\r\n\r\nimport pluginUnocss from \"unocss/vite\";\r\nimport unocssOptions from \"./unocssOptions\";\r\n\r\nimport { HelmetData } from \"react-helmet-async\";\r\n\r\nconst CLIENT_OUTPUT = \"build\";\r\n\r\n// 依靠vite的打包工具\r\nexport async function bundle(root: string, config: SiteConfig) {\r\n // 使用vite进行打包,将重复逻辑进行抽离\r\n // 设定isSSR,判断是否是生产环境下,用不用多路由打包\r\n const resolveViteConfig = async (isServer: boolean, isSSR = isServer): Promise<InlineConfig> => ({\r\n mode: \"production\",\r\n root,\r\n plugins: [\r\n pluginUnocss(unocssOptions),\r\n pluginIndexHtml(),\r\n pluginReact({ jsxRuntime: \"automatic\", jsxImportSource: \"react\" }),\r\n pluginConfig(config),\r\n // 此处的isSSR和isServer其实是一个东西,但是用的结构符,所以名称需要和之前设定的一样\r\n // 所以添加了一个参数,直接让其和isServer相同\r\n pluginRoutes({ root: config.root, isSSR }),\r\n await pluginMdx(),\r\n ],\r\n // 将react-router-dom直接打包进ssr的产物中,不用再单独引入第三方包了\r\n ssr: {\r\n noExternal: [\"react-router-dom\"],\r\n },\r\n build: {\r\n minify: false,\r\n ssr: isServer,\r\n outDir: isServer ? path.join(root, \".temp\") : path.join(root, CLIENT_OUTPUT),\r\n rollupOptions: {\r\n input: isServer ? SERVER_ENTRY_PATH : CLIENT_ENTRY_PATH,\r\n output: {\r\n format: isServer ? \"cjs\" : \"esm\",\r\n },\r\n },\r\n },\r\n });\r\n\r\n try {\r\n // // 对客户端进行打包\r\n // const clientBuild = async () => {\r\n // return viteBuild(resolveViteConfig(false));\r\n // };\r\n\r\n // // 对服务端进行打包\r\n // const serverBuild = async () => {\r\n // return viteBuild(resolveViteConfig(true));\r\n // };\r\n\r\n console.log(\"Building client and server bundles ...\");\r\n\r\n // 因为clientBuild和serverBuild是相互独立的两个函数,所以使用Promise.all进行优化将二者并行执行\r\n const [clientBundle, serverBundle] = await Promise.all([\r\n // client build\r\n viteBuild(await resolveViteConfig(false)),\r\n // server build\r\n viteBuild(await resolveViteConfig(true)),\r\n ]);\r\n const publicDir = join(root, \"public\");\r\n if (fs.pathExistsSync(publicDir)) {\r\n await fs.copy(publicDir, join(root, CLIENT_OUTPUT));\r\n }\r\n return [clientBundle, serverBundle] as [RollupOutput, RollupOutput];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n}\r\n\r\n// 渲染页面\r\nexport async function renderPage(\r\n render: (pagePath: string, helmetContext: object) => string,\r\n root: string,\r\n clientBundle: RollupOutput,\r\n routes: Route[],\r\n config: SiteConfig\r\n) {\r\n // 水合\r\n const clientChunk = clientBundle.output.find((chunk) => chunk.type === \"chunk\" && chunk.isEntry);\r\n // 拼接为真正的html页面\r\n console.log(\"Rendering page in server side...\");\r\n\r\n // 自动化注入head\r\n const helmetContext = {\r\n context: {},\r\n } as HelmetData;\r\n\r\n // 多路由打包\r\n await Promise.all(\r\n [\r\n ...routes,\r\n {\r\n path: \"/404\",\r\n },\r\n ].map(async (route) => {\r\n const routePath = route.path;\r\n\r\n // 拿到将html渲染为字符串的结果\r\n const appHtml = render(routePath, helmetContext.context);\r\n const styleAssets = clientBundle.output.filter(\r\n (chunk) => chunk.type === \"asset\" && chunk.fileName.endsWith(\".css\")\r\n );\r\n // const code = clientBundle.output[0].code;\r\n const titleIcon = config.siteData?.icon;\r\n const description = config.siteData?.description;\r\n const { helmet } = helmetContext.context;\r\n const html = `\r\n <!DOCTYPE html>\r\n <html lang=\"en\">\r\n <head>\r\n <meta charset=\"UTF-8\">\r\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\r\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n <link rel=\"icon\" href=\"${titleIcon}\" type=\"image/svg+xml\"></link>\r\n ${helmet?.title?.toString() || \"\"}\r\n ${helmet?.meta?.toString() || \"\"}\r\n ${helmet?.link?.toString() || \"\"}\r\n ${helmet?.style?.toString() || \"\"}\r\n <meta name=\"description\" content=\"${description}\">\r\n ${styleAssets.map((item) => `<link rel=\"stylesheet\" href=\"/${item.fileName}\">`).join(\"\\n\")}\r\n </head>\r\n <body>\r\n <div id=\"root\">${appHtml}</div>\r\n <script src=\"/${clientChunk?.fileName}\" type=\"module\"></script>\r\n </body>\r\n </html>\r\n `.trim();\r\n // 开始写入文件\r\n const fileName = routePath.endsWith(\"/\") ? `${routePath}index.html` : `${routePath}.html`;\r\n await fs.ensureDir(join(root, \"build\", dirname(fileName)));\r\n\r\n // 将以上页面html产物写到对应的文件目录中\r\n await fs.writeFile(join(root, \"build\", fileName), html);\r\n })\r\n );\r\n\r\n // 移除掉ssr的产物\r\n await fs.remove(join(root, \".temp\"));\r\n}\r\n\r\n// feature: SSG构建页面\r\nexport async function build(root: string = process.cwd(), config: SiteConfig) {\r\n // bundle => client + server\r\n const [clientBundle] = await bundle(root, config);\r\n // 引入 server-entry 模块,也就是引入刚才打包生成的ssr产物\r\n const serverEntryPath = join(root, \".temp\", \"ssr-entry.js\");\r\n // 服务端渲染,产出HTML\r\n const { render, routes } = await import(pathToFileURL(serverEntryPath).toString()); // pathToFileURL是为了兼容windows的url格式\r\n try {\r\n await renderPage(render, root, clientBundle, routes, config);\r\n } catch (e) {\r\n console.log(\"Render is error\\n\", e);\r\n }\r\n}\r\n","import { resolveConfig } from \"./config\";\r\nimport path from \"path\";\r\nimport fs from \"fs-extra\";\r\nimport compression from \"compression\";\r\nimport sirv from \"sirv\";\r\nimport polka from \"polka\";\r\n\r\n// 默认运行服务器端口号\r\nconst DEFAULT_SERVER_PORT = 9999;\r\n\r\nexport async function preview(root: string, { port }: { port?: number }) {\r\n const config = await resolveConfig(root, \"serve\", \"production\");\r\n const listenPort = port ?? DEFAULT_SERVER_PORT;\r\n const outputDir = path.resolve(root, \"build\");\r\n const notFoundPage = fs.readFileSync(path.resolve(outputDir, \"404.html\"), \"utf8\");\r\n\r\n // 资源压缩\r\n const compress = compression();\r\n\r\n // 处理静态资源\r\n const serve = sirv(outputDir, {\r\n etag: true,\r\n maxAge: 31536000, // 一年\r\n immutable: true,\r\n setHeaders(res, pathname) {\r\n if (pathname.endsWith(\".html\")) {\r\n res.setHeader(\"Cache-Control\", \"no-cache\");\r\n }\r\n },\r\n });\r\n\r\n const onNoMatch: polka.Options[\"onNoMatch\"] = (req, res) => {\r\n res.statusCode = 404;\r\n res.end(notFoundPage);\r\n };\r\n\r\n polka({ onNoMatch })\r\n .use(compress, serve)\r\n .listen(listenPort, (err) => {\r\n if (err) {\r\n throw err;\r\n }\r\n console.log(`Preview server is running at http://localhost:${listenPort}`);\r\n });\r\n}\r\n"],"mappings":"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","names":["path","fs"]}
|
package/dist/dev.mjs
CHANGED
package/dist/index.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,113 +1,114 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "vigor-moon",
|
|
3
|
-
"version": "1.1.
|
|
4
|
-
"packageManager": "pnpm@7.9.2",
|
|
5
|
-
"description": "SSG framework",
|
|
6
|
-
"main": "dist/index.js",
|
|
7
|
-
"module": "dist/index.mjs",
|
|
8
|
-
"types": "dist/index.d.ts",
|
|
9
|
-
"exports": {
|
|
10
|
-
".": {
|
|
11
|
-
"types": "./dist/index.d.ts",
|
|
12
|
-
"import": "./dist/index.mjs",
|
|
13
|
-
"require": "./dist/index.js"
|
|
14
|
-
},
|
|
15
|
-
"./dist/*": "./dist/*",
|
|
16
|
-
"./package.json": "./package.json"
|
|
17
|
-
},
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
"bin"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
"react
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"
|
|
85
|
-
"
|
|
86
|
-
"
|
|
87
|
-
"
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
"
|
|
91
|
-
"
|
|
92
|
-
"
|
|
93
|
-
"
|
|
94
|
-
"
|
|
95
|
-
"
|
|
96
|
-
"remark-
|
|
97
|
-
"remark-
|
|
98
|
-
"
|
|
99
|
-
"
|
|
100
|
-
"
|
|
101
|
-
"
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
"
|
|
105
|
-
"
|
|
106
|
-
"
|
|
107
|
-
"
|
|
108
|
-
"
|
|
109
|
-
"
|
|
110
|
-
"
|
|
111
|
-
"
|
|
112
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "vigor-moon",
|
|
3
|
+
"version": "1.1.10",
|
|
4
|
+
"packageManager": "pnpm@7.9.2",
|
|
5
|
+
"description": "SSG framework",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"module": "dist/index.mjs",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.mjs",
|
|
13
|
+
"require": "./dist/index.js"
|
|
14
|
+
},
|
|
15
|
+
"./dist/*": "./dist/*",
|
|
16
|
+
"./package.json": "./package.json"
|
|
17
|
+
},
|
|
18
|
+
"scripts": {
|
|
19
|
+
"start": "tsup --watch --format=cjs,esm",
|
|
20
|
+
"build": "tsup",
|
|
21
|
+
"test:unit": "vitest run",
|
|
22
|
+
"test:watch": "vitest",
|
|
23
|
+
"test:e2e": "playwright test",
|
|
24
|
+
"prepare:e2e": "tsx scripts/e2e.ts",
|
|
25
|
+
"release": "tsx scripts/release.ts",
|
|
26
|
+
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s"
|
|
27
|
+
},
|
|
28
|
+
"bin": {
|
|
29
|
+
"vigor": "./bin/vigor.js"
|
|
30
|
+
},
|
|
31
|
+
"keywords": [
|
|
32
|
+
"SSG",
|
|
33
|
+
"docs"
|
|
34
|
+
],
|
|
35
|
+
"author": "sungMoon",
|
|
36
|
+
"license": "MIT",
|
|
37
|
+
"files": [
|
|
38
|
+
"dist",
|
|
39
|
+
"bin",
|
|
40
|
+
"README.md",
|
|
41
|
+
"src/runtime",
|
|
42
|
+
"src/theme-default",
|
|
43
|
+
"src/types",
|
|
44
|
+
"src/core",
|
|
45
|
+
"template.html"
|
|
46
|
+
],
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@iconify-json/carbon": "^1.1.16",
|
|
49
|
+
"@playwright/test": "1.26.1",
|
|
50
|
+
"@types/compression": "^1.7.2",
|
|
51
|
+
"@types/fs-extra": "^11.0.1",
|
|
52
|
+
"@types/hast": "^2.3.4",
|
|
53
|
+
"@types/mdast": "^3.0.10",
|
|
54
|
+
"@types/node": "^18.13.0",
|
|
55
|
+
"@types/polka": "^0.5.4",
|
|
56
|
+
"@types/react-dom": "^18.0.11",
|
|
57
|
+
"chalk": "^5.2.0",
|
|
58
|
+
"conventional-changelog-cli": "^2.2.2",
|
|
59
|
+
"enquirer": "^2.3.6",
|
|
60
|
+
"execa": "5.1.1",
|
|
61
|
+
"minimist": "^1.2.8",
|
|
62
|
+
"semver": "^7.5.0",
|
|
63
|
+
"tsup": "^6.6.2",
|
|
64
|
+
"tsx": "^3.12.3",
|
|
65
|
+
"typescript": "^4.9.5"
|
|
66
|
+
},
|
|
67
|
+
"dependencies": {
|
|
68
|
+
"@loadable/component": "^5.15.3",
|
|
69
|
+
"@mdx-js/mdx": "^2.1.3",
|
|
70
|
+
"@mdx-js/react": "^2.1.3",
|
|
71
|
+
"@mdx-js/rollup": "2",
|
|
72
|
+
"@types/react": "^18.0.27",
|
|
73
|
+
"@unocss/preset-attributify": "0.45.26",
|
|
74
|
+
"@unocss/preset-icons": "0.45.29",
|
|
75
|
+
"@unocss/preset-wind": "0.45.26",
|
|
76
|
+
"@unocss/vite": "0.45.26",
|
|
77
|
+
"@vitejs/plugin-react": "^3.1.0",
|
|
78
|
+
"acorn": "^8.8.2",
|
|
79
|
+
"cac": "^6.7.14",
|
|
80
|
+
"compression": "^1.7.4",
|
|
81
|
+
"fast-glob": "^3.2.12",
|
|
82
|
+
"fs-extra": "^11.1.0",
|
|
83
|
+
"github-slugger": "^2.0.0",
|
|
84
|
+
"hast-util-from-html": "^1.0.1",
|
|
85
|
+
"koa": "^2.14.1",
|
|
86
|
+
"mdast-util-mdxjs-esm": "^1.3.1",
|
|
87
|
+
"polka": "^0.5.2",
|
|
88
|
+
"react": "^18.2.0",
|
|
89
|
+
"react-dom": "^18.2.0",
|
|
90
|
+
"react-helmet-async": "1.3.0",
|
|
91
|
+
"react-router-dom": "6.4.3",
|
|
92
|
+
"rehype-autolink-headings": "^6.1.1",
|
|
93
|
+
"rehype-slug": "^5.1.0",
|
|
94
|
+
"rehype-stringify": "^9.0.3",
|
|
95
|
+
"remark-frontmatter": "^4.0.1",
|
|
96
|
+
"remark-gfm": "^3.0.1",
|
|
97
|
+
"remark-mdx": "^2.3.0",
|
|
98
|
+
"remark-mdx-frontmatter": "^2.1.1",
|
|
99
|
+
"remark-parse": "^10.0.1",
|
|
100
|
+
"remark-rehype": "^10.1.0",
|
|
101
|
+
"remark-stringify": "^10.0.2",
|
|
102
|
+
"rollup": "^3.14.0",
|
|
103
|
+
"sass": "^1.60.0",
|
|
104
|
+
"serve": "^14.2.0",
|
|
105
|
+
"shiki": "^0.14.1",
|
|
106
|
+
"sirv": "^2.0.2",
|
|
107
|
+
"unified": "^10.1.2",
|
|
108
|
+
"unist-util-visit": "^4.1.2",
|
|
109
|
+
"unocss": "^0.50.4",
|
|
110
|
+
"vigor-moon-publisher": "^1.0.1",
|
|
111
|
+
"vite": "^4.1.1",
|
|
112
|
+
"vitest": "^0.28.4"
|
|
113
|
+
}
|
|
113
114
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../node_modules/.pnpm/tsup@6.6.2_typescript@4.9.5/node_modules/tsup/assets/esm_shims.js","../src/node/config.ts"],"sourcesContent":["// Shim globals in esm bundle\nimport { fileURLToPath } from 'url'\nimport path from 'path'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n","import { resolve } from \"path\";\r\nimport fs from \"fs-extra\";\r\n\r\n// vite内部的api,用来解析文件\r\nimport { loadConfigFromFile } from \"vite\";\r\nimport { UserConfig, SiteConfig } from \"../types/index\";\r\n\r\n// 定义command和mode的类型\r\ntype Command = \"build\" | \"serve\";\r\ntype Mode = \"development\" | \"production\";\r\n\r\n// 拿到的文件类型 对象、promise和返回对象或promise的函数\r\ntype RawConfig = UserConfig | Promise<UserConfig> | (() => UserConfig | Promise<UserConfig>);\r\n\r\nfunction getUserConfig(root: string) {\r\n try {\r\n // .js和.ts文件均可\r\n const supportConfigFile = [\"config.js\", \"config.ts\"];\r\n // 判断配置文件是否存在,如果存在就拿到并返回回去\r\n //\r\n const configPath = supportConfigFile.map((file) => resolve(root, file)).find(fs.pathExistsSync);\r\n return configPath;\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n}\r\n\r\nasync function resolveUserConfig(command: Command, mode: Mode, root: string) {\r\n // 1. 获取配置文件路径\r\n const configPath = getUserConfig(root);\r\n // 2. 解析配置文件\r\n const res = await loadConfigFromFile(\r\n {\r\n command,\r\n mode,\r\n },\r\n configPath\r\n );\r\n if (res) {\r\n const { config: ordConfig = {} as RawConfig } = res;\r\n // rawConfig有三种形式\r\n // 1. object对象形式\r\n // 2. promise形式\r\n // 3. function函数形式\r\n // 所以要对rawConfig做一个统一的规范化\r\n const userConfig = await (typeof ordConfig === \"function\" ? ordConfig() : ordConfig);\r\n return [configPath, userConfig] as const;\r\n } else {\r\n return [configPath, {} as UserConfig] as const;\r\n }\r\n}\r\n\r\n// 解析网站(用户信息)信息\r\nexport function resolveSiteData(userConfig: UserConfig): UserConfig {\r\n return {\r\n title: userConfig.title || \"vigor.js\",\r\n description: userConfig.description || \"A SSG framework.\",\r\n themeConfig: userConfig.themeConfig || {},\r\n icon: userConfig.icon || \"\",\r\n vite: userConfig.vite || {},\r\n };\r\n}\r\nexport async function resolveConfig(\r\n // command和mode是vite的解析文件api需要的配置信息\r\n root: string,\r\n command: \"serve\" | \"build\",\r\n mode: \"production\" | \"development\"\r\n): Promise<SiteConfig> {\r\n // 组合并返回解析出来的网站信息\r\n const [configPath, userConfig] = await resolveUserConfig(command, mode, root);\r\n const siteConfig: SiteConfig = {\r\n root,\r\n configPath: configPath,\r\n siteData: resolveSiteData(userConfig as UserConfig),\r\n };\r\n return siteConfig;\r\n}\r\n\r\nexport function defineConfig(config: UserConfig): UserConfig {\r\n return config;\r\n}\r\n"],"mappings":";;;;;;AACA,SAAS,qBAAqB;AAC9B,OAAO,UAAU;AAEjB,IAAM,cAAc,MAAM,cAAc,YAAY,GAAG;AACvD,IAAM,aAAa,MAAM,KAAK,QAAQ,YAAY,CAAC;AAE5C,IAAM,YAA4B,2BAAW;;;ACPpD,SAAS,eAAe;AACxB,OAAO,QAAQ;AAGf,SAAS,0BAA0B;AAUnC,SAAS,cAAc,MAAc;AACnC,MAAI;AAEF,UAAM,oBAAoB,CAAC,aAAa,WAAW;AAGnD,UAAM,aAAa,kBAAkB,IAAI,CAAC,SAAS,QAAQ,MAAM,IAAI,CAAC,EAAE,KAAK,GAAG,cAAc;AAC9F,WAAO;AAAA,EACT,SAAS,GAAP;AACA,YAAQ,IAAI,CAAC;AAAA,EACf;AACF;AAEA,eAAe,kBAAkB,SAAkB,MAAY,MAAc;AAE3E,QAAM,aAAa,cAAc,IAAI;AAErC,QAAM,MAAM,MAAM;AAAA,IAChB;AAAA,MACE;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACA,MAAI,KAAK;AACP,UAAM,EAAE,QAAQ,YAAY,CAAC,EAAe,IAAI;AAMhD,UAAM,aAAa,OAAO,OAAO,cAAc,aAAa,UAAU,IAAI;AAC1E,WAAO,CAAC,YAAY,UAAU;AAAA,EAChC,OAAO;AACL,WAAO,CAAC,YAAY,CAAC,CAAe;AAAA,EACtC;AACF;AAGO,SAAS,gBAAgB,YAAoC;AAClE,SAAO;AAAA,IACL,OAAO,WAAW,SAAS;AAAA,IAC3B,aAAa,WAAW,eAAe;AAAA,IACvC,aAAa,WAAW,eAAe,CAAC;AAAA,IACxC,MAAM,WAAW,QAAQ;AAAA,IACzB,MAAM,WAAW,QAAQ,CAAC;AAAA,EAC5B;AACF;AACA,eAAsB,cAEpB,MACA,SACA,MACqB;AAErB,QAAM,CAAC,YAAY,UAAU,IAAI,MAAM,kBAAkB,SAAS,MAAM,IAAI;AAC5E,QAAM,aAAyB;AAAA,IAC7B;AAAA,IACA;AAAA,IACA,UAAU,gBAAgB,UAAwB;AAAA,EACpD;AACA,SAAO;AACT;AAEO,SAAS,aAAa,QAAgC;AAC3D,SAAO;AACT;","names":[]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|