项目迁移
This commit is contained in:
275
word/.vitepress/cache/deps/@theme_index.js
vendored
Normal file
275
word/.vitepress/cache/deps/@theme_index.js
vendored
Normal file
@@ -0,0 +1,275 @@
|
||||
import {
|
||||
useMediaQuery
|
||||
} from "./chunk-FX5VEOLN.js";
|
||||
import {
|
||||
computed,
|
||||
ref,
|
||||
shallowRef,
|
||||
watch
|
||||
} from "./chunk-VIGQSUQT.js";
|
||||
|
||||
// ../node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/index.js
|
||||
import "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/styles/fonts.css";
|
||||
|
||||
// ../node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/without-fonts.js
|
||||
import "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/styles/vars.css";
|
||||
import "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/styles/base.css";
|
||||
import "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/styles/icons.css";
|
||||
import "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/styles/utils.css";
|
||||
import "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/styles/components/custom-block.css";
|
||||
import "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/styles/components/vp-code.css";
|
||||
import "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/styles/components/vp-code-group.css";
|
||||
import "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/styles/components/vp-doc.css";
|
||||
import "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/styles/components/vp-sponsor.css";
|
||||
import VPBadge from "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/components/VPBadge.vue";
|
||||
import Layout from "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/Layout.vue";
|
||||
import { default as default2 } from "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/components/VPBadge.vue";
|
||||
import { default as default3 } from "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/components/VPButton.vue";
|
||||
import { default as default4 } from "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/components/VPDocAsideSponsors.vue";
|
||||
import { default as default5 } from "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/components/VPFeatures.vue";
|
||||
import { default as default6 } from "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/components/VPHomeContent.vue";
|
||||
import { default as default7 } from "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/components/VPHomeFeatures.vue";
|
||||
import { default as default8 } from "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/components/VPHomeHero.vue";
|
||||
import { default as default9 } from "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/components/VPHomeSponsors.vue";
|
||||
import { default as default10 } from "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/components/VPImage.vue";
|
||||
import { default as default11 } from "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/components/VPLink.vue";
|
||||
import { default as default12 } from "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/components/VPNavBarSearch.vue";
|
||||
import { default as default13 } from "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/components/VPSocialLink.vue";
|
||||
import { default as default14 } from "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/components/VPSocialLinks.vue";
|
||||
import { default as default15 } from "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/components/VPSponsors.vue";
|
||||
import { default as default16 } from "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/components/VPTeamMembers.vue";
|
||||
import { default as default17 } from "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/components/VPTeamPage.vue";
|
||||
import { default as default18 } from "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/components/VPTeamPageSection.vue";
|
||||
import { default as default19 } from "D:/Users/Grace-X/Desktop/DeEarthX-CE/node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/components/VPTeamPageTitle.vue";
|
||||
|
||||
// ../node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/composables/local-nav.js
|
||||
import { onContentUpdated } from "vitepress";
|
||||
|
||||
// ../node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/composables/outline.js
|
||||
import { getScrollOffset } from "vitepress";
|
||||
|
||||
// ../node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/support/utils.js
|
||||
import { withBase } from "vitepress";
|
||||
|
||||
// ../node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/composables/data.js
|
||||
import { useData as useData$ } from "vitepress";
|
||||
var useData = useData$;
|
||||
|
||||
// ../node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/support/utils.js
|
||||
function ensureStartingSlash(path) {
|
||||
return path.startsWith("/") ? path : `/${path}`;
|
||||
}
|
||||
|
||||
// ../node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/support/sidebar.js
|
||||
function getSidebar(_sidebar, path) {
|
||||
if (Array.isArray(_sidebar))
|
||||
return addBase(_sidebar);
|
||||
if (_sidebar == null)
|
||||
return [];
|
||||
path = ensureStartingSlash(path);
|
||||
const dir = Object.keys(_sidebar).sort((a, b) => {
|
||||
return b.split("/").length - a.split("/").length;
|
||||
}).find((dir2) => {
|
||||
return path.startsWith(ensureStartingSlash(dir2));
|
||||
});
|
||||
const sidebar = dir ? _sidebar[dir] : [];
|
||||
return Array.isArray(sidebar) ? addBase(sidebar) : addBase(sidebar.items, sidebar.base);
|
||||
}
|
||||
function getSidebarGroups(sidebar) {
|
||||
const groups = [];
|
||||
let lastGroupIndex = 0;
|
||||
for (const index in sidebar) {
|
||||
const item = sidebar[index];
|
||||
if (item.items) {
|
||||
lastGroupIndex = groups.push(item);
|
||||
continue;
|
||||
}
|
||||
if (!groups[lastGroupIndex]) {
|
||||
groups.push({ items: [] });
|
||||
}
|
||||
groups[lastGroupIndex].items.push(item);
|
||||
}
|
||||
return groups;
|
||||
}
|
||||
function addBase(items, _base) {
|
||||
return [...items].map((_item) => {
|
||||
const item = { ..._item };
|
||||
const base = item.base || _base;
|
||||
if (base && item.link)
|
||||
item.link = base + item.link;
|
||||
if (item.items)
|
||||
item.items = addBase(item.items, base);
|
||||
return item;
|
||||
});
|
||||
}
|
||||
|
||||
// ../node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/composables/sidebar.js
|
||||
function useSidebar() {
|
||||
const { frontmatter, page, theme: theme2 } = useData();
|
||||
const is960 = useMediaQuery("(min-width: 960px)");
|
||||
const isOpen = ref(false);
|
||||
const _sidebar = computed(() => {
|
||||
const sidebarConfig = theme2.value.sidebar;
|
||||
const relativePath = page.value.relativePath;
|
||||
return sidebarConfig ? getSidebar(sidebarConfig, relativePath) : [];
|
||||
});
|
||||
const sidebar = ref(_sidebar.value);
|
||||
watch(_sidebar, (next, prev) => {
|
||||
if (JSON.stringify(next) !== JSON.stringify(prev))
|
||||
sidebar.value = _sidebar.value;
|
||||
});
|
||||
const hasSidebar = computed(() => {
|
||||
return frontmatter.value.sidebar !== false && sidebar.value.length > 0 && frontmatter.value.layout !== "home";
|
||||
});
|
||||
const leftAside = computed(() => {
|
||||
if (hasAside)
|
||||
return frontmatter.value.aside == null ? theme2.value.aside === "left" : frontmatter.value.aside === "left";
|
||||
return false;
|
||||
});
|
||||
const hasAside = computed(() => {
|
||||
if (frontmatter.value.layout === "home")
|
||||
return false;
|
||||
if (frontmatter.value.aside != null)
|
||||
return !!frontmatter.value.aside;
|
||||
return theme2.value.aside !== false;
|
||||
});
|
||||
const isSidebarEnabled = computed(() => hasSidebar.value && is960.value);
|
||||
const sidebarGroups = computed(() => {
|
||||
return hasSidebar.value ? getSidebarGroups(sidebar.value) : [];
|
||||
});
|
||||
function open() {
|
||||
isOpen.value = true;
|
||||
}
|
||||
function close() {
|
||||
isOpen.value = false;
|
||||
}
|
||||
function toggle() {
|
||||
isOpen.value ? close() : open();
|
||||
}
|
||||
return {
|
||||
isOpen,
|
||||
sidebar,
|
||||
sidebarGroups,
|
||||
hasSidebar,
|
||||
hasAside,
|
||||
leftAside,
|
||||
isSidebarEnabled,
|
||||
open,
|
||||
close,
|
||||
toggle
|
||||
};
|
||||
}
|
||||
|
||||
// ../node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/composables/outline.js
|
||||
var ignoreRE = /\b(?:VPBadge|header-anchor|footnote-ref|ignore-header)\b/;
|
||||
var resolvedHeaders = [];
|
||||
function getHeaders(range) {
|
||||
const headers = [
|
||||
...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")
|
||||
].filter((el) => el.id && el.hasChildNodes()).map((el) => {
|
||||
const level = Number(el.tagName[1]);
|
||||
return {
|
||||
element: el,
|
||||
title: serializeHeader(el),
|
||||
link: "#" + el.id,
|
||||
level
|
||||
};
|
||||
});
|
||||
return resolveHeaders(headers, range);
|
||||
}
|
||||
function serializeHeader(h) {
|
||||
let ret = "";
|
||||
for (const node of h.childNodes) {
|
||||
if (node.nodeType === 1) {
|
||||
if (ignoreRE.test(node.className))
|
||||
continue;
|
||||
ret += node.textContent;
|
||||
} else if (node.nodeType === 3) {
|
||||
ret += node.textContent;
|
||||
}
|
||||
}
|
||||
return ret.trim();
|
||||
}
|
||||
function resolveHeaders(headers, range) {
|
||||
if (range === false) {
|
||||
return [];
|
||||
}
|
||||
const levelsRange = (typeof range === "object" && !Array.isArray(range) ? range.level : range) || 2;
|
||||
const [high, low] = typeof levelsRange === "number" ? [levelsRange, levelsRange] : levelsRange === "deep" ? [2, 6] : levelsRange;
|
||||
return buildTree(headers, high, low);
|
||||
}
|
||||
function buildTree(data, min, max) {
|
||||
resolvedHeaders.length = 0;
|
||||
const result = [];
|
||||
const stack = [];
|
||||
data.forEach((item) => {
|
||||
const node = { ...item, children: [] };
|
||||
let parent = stack[stack.length - 1];
|
||||
while (parent && parent.level >= node.level) {
|
||||
stack.pop();
|
||||
parent = stack[stack.length - 1];
|
||||
}
|
||||
if (node.element.classList.contains("ignore-header") || parent && "shouldIgnore" in parent) {
|
||||
stack.push({ level: node.level, shouldIgnore: true });
|
||||
return;
|
||||
}
|
||||
if (node.level > max || node.level < min)
|
||||
return;
|
||||
resolvedHeaders.push({ element: node.element, link: node.link });
|
||||
if (parent)
|
||||
parent.children.push(node);
|
||||
else
|
||||
result.push(node);
|
||||
stack.push(node);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
// ../node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/composables/local-nav.js
|
||||
function useLocalNav() {
|
||||
const { theme: theme2, frontmatter } = useData();
|
||||
const headers = shallowRef([]);
|
||||
const hasLocalNav = computed(() => {
|
||||
return headers.value.length > 0;
|
||||
});
|
||||
onContentUpdated(() => {
|
||||
headers.value = getHeaders(frontmatter.value.outline ?? theme2.value.outline);
|
||||
});
|
||||
return {
|
||||
headers,
|
||||
hasLocalNav
|
||||
};
|
||||
}
|
||||
|
||||
// ../node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/without-fonts.js
|
||||
var theme = {
|
||||
Layout,
|
||||
enhanceApp: ({ app }) => {
|
||||
app.component("Badge", VPBadge);
|
||||
}
|
||||
};
|
||||
var without_fonts_default = theme;
|
||||
export {
|
||||
default2 as VPBadge,
|
||||
default3 as VPButton,
|
||||
default4 as VPDocAsideSponsors,
|
||||
default5 as VPFeatures,
|
||||
default6 as VPHomeContent,
|
||||
default7 as VPHomeFeatures,
|
||||
default8 as VPHomeHero,
|
||||
default9 as VPHomeSponsors,
|
||||
default10 as VPImage,
|
||||
default11 as VPLink,
|
||||
default12 as VPNavBarSearch,
|
||||
default13 as VPSocialLink,
|
||||
default14 as VPSocialLinks,
|
||||
default15 as VPSponsors,
|
||||
default16 as VPTeamMembers,
|
||||
default17 as VPTeamPage,
|
||||
default18 as VPTeamPageSection,
|
||||
default19 as VPTeamPageTitle,
|
||||
without_fonts_default as default,
|
||||
useLocalNav,
|
||||
useSidebar
|
||||
};
|
||||
//# sourceMappingURL=@theme_index.js.map
|
||||
7
word/.vitepress/cache/deps/@theme_index.js.map
vendored
Normal file
7
word/.vitepress/cache/deps/@theme_index.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
40
word/.vitepress/cache/deps/_metadata.json
vendored
Normal file
40
word/.vitepress/cache/deps/_metadata.json
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"hash": "6976e0a7",
|
||||
"configHash": "16b5e256",
|
||||
"lockfileHash": "b21b0169",
|
||||
"browserHash": "1a32ef31",
|
||||
"optimized": {
|
||||
"vue": {
|
||||
"src": "../../../../node_modules/.pnpm/vue@3.5.29_typescript@5.9.3/node_modules/vue/dist/vue.runtime.esm-bundler.js",
|
||||
"file": "vue.js",
|
||||
"fileHash": "7e923f01",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vitepress > @vue/devtools-api": {
|
||||
"src": "../../../../node_modules/.pnpm/@vue+devtools-api@7.7.9/node_modules/@vue/devtools-api/dist/index.js",
|
||||
"file": "vitepress___@vue_devtools-api.js",
|
||||
"fileHash": "0373f16c",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vitepress > @vueuse/core": {
|
||||
"src": "../../../../node_modules/.pnpm/@vueuse+core@12.8.2_typescript@5.9.3/node_modules/@vueuse/core/index.mjs",
|
||||
"file": "vitepress___@vueuse_core.js",
|
||||
"fileHash": "67853364",
|
||||
"needsInterop": false
|
||||
},
|
||||
"@theme/index": {
|
||||
"src": "../../../../node_modules/.pnpm/vitepress@1.6.4_@algolia+cl_b21953e64bdc687d6358312771661039/node_modules/vitepress/dist/client/theme-default/index.js",
|
||||
"file": "@theme_index.js",
|
||||
"fileHash": "58797fc7",
|
||||
"needsInterop": false
|
||||
}
|
||||
},
|
||||
"chunks": {
|
||||
"chunk-FX5VEOLN": {
|
||||
"file": "chunk-FX5VEOLN.js"
|
||||
},
|
||||
"chunk-VIGQSUQT": {
|
||||
"file": "chunk-VIGQSUQT.js"
|
||||
}
|
||||
}
|
||||
}
|
||||
9719
word/.vitepress/cache/deps/chunk-FX5VEOLN.js
vendored
Normal file
9719
word/.vitepress/cache/deps/chunk-FX5VEOLN.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7
word/.vitepress/cache/deps/chunk-FX5VEOLN.js.map
vendored
Normal file
7
word/.vitepress/cache/deps/chunk-FX5VEOLN.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
12877
word/.vitepress/cache/deps/chunk-VIGQSUQT.js
vendored
Normal file
12877
word/.vitepress/cache/deps/chunk-VIGQSUQT.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7
word/.vitepress/cache/deps/chunk-VIGQSUQT.js.map
vendored
Normal file
7
word/.vitepress/cache/deps/chunk-VIGQSUQT.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
3
word/.vitepress/cache/deps/package.json
vendored
Normal file
3
word/.vitepress/cache/deps/package.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"type": "module"
|
||||
}
|
||||
4505
word/.vitepress/cache/deps/vitepress___@vue_devtools-api.js
vendored
Normal file
4505
word/.vitepress/cache/deps/vitepress___@vue_devtools-api.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7
word/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map
vendored
Normal file
7
word/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
583
word/.vitepress/cache/deps/vitepress___@vueuse_core.js
vendored
Normal file
583
word/.vitepress/cache/deps/vitepress___@vueuse_core.js
vendored
Normal file
@@ -0,0 +1,583 @@
|
||||
import {
|
||||
DefaultMagicKeysAliasMap,
|
||||
StorageSerializers,
|
||||
TransitionPresets,
|
||||
assert,
|
||||
breakpointsAntDesign,
|
||||
breakpointsBootstrapV5,
|
||||
breakpointsElement,
|
||||
breakpointsMasterCss,
|
||||
breakpointsPrimeFlex,
|
||||
breakpointsQuasar,
|
||||
breakpointsSematic,
|
||||
breakpointsTailwind,
|
||||
breakpointsVuetify,
|
||||
breakpointsVuetifyV2,
|
||||
breakpointsVuetifyV3,
|
||||
bypassFilter,
|
||||
camelize,
|
||||
clamp,
|
||||
cloneFnJSON,
|
||||
computedAsync,
|
||||
computedEager,
|
||||
computedInject,
|
||||
computedWithControl,
|
||||
containsProp,
|
||||
controlledRef,
|
||||
createEventHook,
|
||||
createFetch,
|
||||
createFilterWrapper,
|
||||
createGlobalState,
|
||||
createInjectionState,
|
||||
createRef,
|
||||
createReusableTemplate,
|
||||
createSharedComposable,
|
||||
createSingletonPromise,
|
||||
createTemplatePromise,
|
||||
createUnrefFn,
|
||||
customStorageEventName,
|
||||
debounceFilter,
|
||||
defaultDocument,
|
||||
defaultLocation,
|
||||
defaultNavigator,
|
||||
defaultWindow,
|
||||
executeTransition,
|
||||
extendRef,
|
||||
formatDate,
|
||||
formatTimeAgo,
|
||||
get,
|
||||
getLifeCycleTarget,
|
||||
getSSRHandler,
|
||||
hasOwn,
|
||||
hyphenate,
|
||||
identity,
|
||||
increaseWithUnit,
|
||||
injectLocal,
|
||||
invoke,
|
||||
isClient,
|
||||
isDef,
|
||||
isDefined,
|
||||
isIOS,
|
||||
isObject,
|
||||
isWorker,
|
||||
makeDestructurable,
|
||||
mapGamepadToXbox360Controller,
|
||||
noop,
|
||||
normalizeDate,
|
||||
notNullish,
|
||||
now,
|
||||
objectEntries,
|
||||
objectOmit,
|
||||
objectPick,
|
||||
onClickOutside,
|
||||
onElementRemoval,
|
||||
onKeyDown,
|
||||
onKeyPressed,
|
||||
onKeyStroke,
|
||||
onKeyUp,
|
||||
onLongPress,
|
||||
onStartTyping,
|
||||
pausableFilter,
|
||||
promiseTimeout,
|
||||
provideLocal,
|
||||
provideSSRWidth,
|
||||
pxValue,
|
||||
rand,
|
||||
reactify,
|
||||
reactifyObject,
|
||||
reactiveComputed,
|
||||
reactiveOmit,
|
||||
reactivePick,
|
||||
refAutoReset,
|
||||
refDebounced,
|
||||
refDefault,
|
||||
refThrottled,
|
||||
refWithControl,
|
||||
resolveRef,
|
||||
resolveUnref,
|
||||
set,
|
||||
setSSRHandler,
|
||||
syncRef,
|
||||
syncRefs,
|
||||
templateRef,
|
||||
throttleFilter,
|
||||
timestamp,
|
||||
toArray,
|
||||
toReactive,
|
||||
toRef,
|
||||
toRefs,
|
||||
toValue,
|
||||
tryOnBeforeMount,
|
||||
tryOnBeforeUnmount,
|
||||
tryOnMounted,
|
||||
tryOnScopeDispose,
|
||||
tryOnUnmounted,
|
||||
unrefElement,
|
||||
until,
|
||||
useActiveElement,
|
||||
useAnimate,
|
||||
useArrayDifference,
|
||||
useArrayEvery,
|
||||
useArrayFilter,
|
||||
useArrayFind,
|
||||
useArrayFindIndex,
|
||||
useArrayFindLast,
|
||||
useArrayIncludes,
|
||||
useArrayJoin,
|
||||
useArrayMap,
|
||||
useArrayReduce,
|
||||
useArraySome,
|
||||
useArrayUnique,
|
||||
useAsyncQueue,
|
||||
useAsyncState,
|
||||
useBase64,
|
||||
useBattery,
|
||||
useBluetooth,
|
||||
useBreakpoints,
|
||||
useBroadcastChannel,
|
||||
useBrowserLocation,
|
||||
useCached,
|
||||
useClipboard,
|
||||
useClipboardItems,
|
||||
useCloned,
|
||||
useColorMode,
|
||||
useConfirmDialog,
|
||||
useCountdown,
|
||||
useCounter,
|
||||
useCssVar,
|
||||
useCurrentElement,
|
||||
useCycleList,
|
||||
useDark,
|
||||
useDateFormat,
|
||||
useDebounceFn,
|
||||
useDebouncedRefHistory,
|
||||
useDeviceMotion,
|
||||
useDeviceOrientation,
|
||||
useDevicePixelRatio,
|
||||
useDevicesList,
|
||||
useDisplayMedia,
|
||||
useDocumentVisibility,
|
||||
useDraggable,
|
||||
useDropZone,
|
||||
useElementBounding,
|
||||
useElementByPoint,
|
||||
useElementHover,
|
||||
useElementSize,
|
||||
useElementVisibility,
|
||||
useEventBus,
|
||||
useEventListener,
|
||||
useEventSource,
|
||||
useEyeDropper,
|
||||
useFavicon,
|
||||
useFetch,
|
||||
useFileDialog,
|
||||
useFileSystemAccess,
|
||||
useFocus,
|
||||
useFocusWithin,
|
||||
useFps,
|
||||
useFullscreen,
|
||||
useGamepad,
|
||||
useGeolocation,
|
||||
useIdle,
|
||||
useImage,
|
||||
useInfiniteScroll,
|
||||
useIntersectionObserver,
|
||||
useInterval,
|
||||
useIntervalFn,
|
||||
useKeyModifier,
|
||||
useLastChanged,
|
||||
useLocalStorage,
|
||||
useMagicKeys,
|
||||
useManualRefHistory,
|
||||
useMediaControls,
|
||||
useMediaQuery,
|
||||
useMemoize,
|
||||
useMemory,
|
||||
useMounted,
|
||||
useMouse,
|
||||
useMouseInElement,
|
||||
useMousePressed,
|
||||
useMutationObserver,
|
||||
useNavigatorLanguage,
|
||||
useNetwork,
|
||||
useNow,
|
||||
useObjectUrl,
|
||||
useOffsetPagination,
|
||||
useOnline,
|
||||
usePageLeave,
|
||||
useParallax,
|
||||
useParentElement,
|
||||
usePerformanceObserver,
|
||||
usePermission,
|
||||
usePointer,
|
||||
usePointerLock,
|
||||
usePointerSwipe,
|
||||
usePreferredColorScheme,
|
||||
usePreferredContrast,
|
||||
usePreferredDark,
|
||||
usePreferredLanguages,
|
||||
usePreferredReducedMotion,
|
||||
usePreferredReducedTransparency,
|
||||
usePrevious,
|
||||
useRafFn,
|
||||
useRefHistory,
|
||||
useResizeObserver,
|
||||
useSSRWidth,
|
||||
useScreenOrientation,
|
||||
useScreenSafeArea,
|
||||
useScriptTag,
|
||||
useScroll,
|
||||
useScrollLock,
|
||||
useSessionStorage,
|
||||
useShare,
|
||||
useSorted,
|
||||
useSpeechRecognition,
|
||||
useSpeechSynthesis,
|
||||
useStepper,
|
||||
useStorage,
|
||||
useStorageAsync,
|
||||
useStyleTag,
|
||||
useSupported,
|
||||
useSwipe,
|
||||
useTemplateRefsList,
|
||||
useTextDirection,
|
||||
useTextSelection,
|
||||
useTextareaAutosize,
|
||||
useThrottleFn,
|
||||
useThrottledRefHistory,
|
||||
useTimeAgo,
|
||||
useTimeout,
|
||||
useTimeoutFn,
|
||||
useTimeoutPoll,
|
||||
useTimestamp,
|
||||
useTitle,
|
||||
useToNumber,
|
||||
useToString,
|
||||
useToggle,
|
||||
useTransition,
|
||||
useUrlSearchParams,
|
||||
useUserMedia,
|
||||
useVModel,
|
||||
useVModels,
|
||||
useVibrate,
|
||||
useVirtualList,
|
||||
useWakeLock,
|
||||
useWebNotification,
|
||||
useWebSocket,
|
||||
useWebWorker,
|
||||
useWebWorkerFn,
|
||||
useWindowFocus,
|
||||
useWindowScroll,
|
||||
useWindowSize,
|
||||
watchArray,
|
||||
watchAtMost,
|
||||
watchDebounced,
|
||||
watchDeep,
|
||||
watchIgnorable,
|
||||
watchImmediate,
|
||||
watchOnce,
|
||||
watchPausable,
|
||||
watchThrottled,
|
||||
watchTriggerable,
|
||||
watchWithFilter,
|
||||
whenever
|
||||
} from "./chunk-FX5VEOLN.js";
|
||||
import "./chunk-VIGQSUQT.js";
|
||||
export {
|
||||
DefaultMagicKeysAliasMap,
|
||||
StorageSerializers,
|
||||
TransitionPresets,
|
||||
assert,
|
||||
computedAsync as asyncComputed,
|
||||
refAutoReset as autoResetRef,
|
||||
breakpointsAntDesign,
|
||||
breakpointsBootstrapV5,
|
||||
breakpointsElement,
|
||||
breakpointsMasterCss,
|
||||
breakpointsPrimeFlex,
|
||||
breakpointsQuasar,
|
||||
breakpointsSematic,
|
||||
breakpointsTailwind,
|
||||
breakpointsVuetify,
|
||||
breakpointsVuetifyV2,
|
||||
breakpointsVuetifyV3,
|
||||
bypassFilter,
|
||||
camelize,
|
||||
clamp,
|
||||
cloneFnJSON,
|
||||
computedAsync,
|
||||
computedEager,
|
||||
computedInject,
|
||||
computedWithControl,
|
||||
containsProp,
|
||||
computedWithControl as controlledComputed,
|
||||
controlledRef,
|
||||
createEventHook,
|
||||
createFetch,
|
||||
createFilterWrapper,
|
||||
createGlobalState,
|
||||
createInjectionState,
|
||||
reactify as createReactiveFn,
|
||||
createRef,
|
||||
createReusableTemplate,
|
||||
createSharedComposable,
|
||||
createSingletonPromise,
|
||||
createTemplatePromise,
|
||||
createUnrefFn,
|
||||
customStorageEventName,
|
||||
debounceFilter,
|
||||
refDebounced as debouncedRef,
|
||||
watchDebounced as debouncedWatch,
|
||||
defaultDocument,
|
||||
defaultLocation,
|
||||
defaultNavigator,
|
||||
defaultWindow,
|
||||
computedEager as eagerComputed,
|
||||
executeTransition,
|
||||
extendRef,
|
||||
formatDate,
|
||||
formatTimeAgo,
|
||||
get,
|
||||
getLifeCycleTarget,
|
||||
getSSRHandler,
|
||||
hasOwn,
|
||||
hyphenate,
|
||||
identity,
|
||||
watchIgnorable as ignorableWatch,
|
||||
increaseWithUnit,
|
||||
injectLocal,
|
||||
invoke,
|
||||
isClient,
|
||||
isDef,
|
||||
isDefined,
|
||||
isIOS,
|
||||
isObject,
|
||||
isWorker,
|
||||
makeDestructurable,
|
||||
mapGamepadToXbox360Controller,
|
||||
noop,
|
||||
normalizeDate,
|
||||
notNullish,
|
||||
now,
|
||||
objectEntries,
|
||||
objectOmit,
|
||||
objectPick,
|
||||
onClickOutside,
|
||||
onElementRemoval,
|
||||
onKeyDown,
|
||||
onKeyPressed,
|
||||
onKeyStroke,
|
||||
onKeyUp,
|
||||
onLongPress,
|
||||
onStartTyping,
|
||||
pausableFilter,
|
||||
watchPausable as pausableWatch,
|
||||
promiseTimeout,
|
||||
provideLocal,
|
||||
provideSSRWidth,
|
||||
pxValue,
|
||||
rand,
|
||||
reactify,
|
||||
reactifyObject,
|
||||
reactiveComputed,
|
||||
reactiveOmit,
|
||||
reactivePick,
|
||||
refAutoReset,
|
||||
refDebounced,
|
||||
refDefault,
|
||||
refThrottled,
|
||||
refWithControl,
|
||||
resolveRef,
|
||||
resolveUnref,
|
||||
set,
|
||||
setSSRHandler,
|
||||
syncRef,
|
||||
syncRefs,
|
||||
templateRef,
|
||||
throttleFilter,
|
||||
refThrottled as throttledRef,
|
||||
watchThrottled as throttledWatch,
|
||||
timestamp,
|
||||
toArray,
|
||||
toReactive,
|
||||
toRef,
|
||||
toRefs,
|
||||
toValue,
|
||||
tryOnBeforeMount,
|
||||
tryOnBeforeUnmount,
|
||||
tryOnMounted,
|
||||
tryOnScopeDispose,
|
||||
tryOnUnmounted,
|
||||
unrefElement,
|
||||
until,
|
||||
useActiveElement,
|
||||
useAnimate,
|
||||
useArrayDifference,
|
||||
useArrayEvery,
|
||||
useArrayFilter,
|
||||
useArrayFind,
|
||||
useArrayFindIndex,
|
||||
useArrayFindLast,
|
||||
useArrayIncludes,
|
||||
useArrayJoin,
|
||||
useArrayMap,
|
||||
useArrayReduce,
|
||||
useArraySome,
|
||||
useArrayUnique,
|
||||
useAsyncQueue,
|
||||
useAsyncState,
|
||||
useBase64,
|
||||
useBattery,
|
||||
useBluetooth,
|
||||
useBreakpoints,
|
||||
useBroadcastChannel,
|
||||
useBrowserLocation,
|
||||
useCached,
|
||||
useClipboard,
|
||||
useClipboardItems,
|
||||
useCloned,
|
||||
useColorMode,
|
||||
useConfirmDialog,
|
||||
useCountdown,
|
||||
useCounter,
|
||||
useCssVar,
|
||||
useCurrentElement,
|
||||
useCycleList,
|
||||
useDark,
|
||||
useDateFormat,
|
||||
refDebounced as useDebounce,
|
||||
useDebounceFn,
|
||||
useDebouncedRefHistory,
|
||||
useDeviceMotion,
|
||||
useDeviceOrientation,
|
||||
useDevicePixelRatio,
|
||||
useDevicesList,
|
||||
useDisplayMedia,
|
||||
useDocumentVisibility,
|
||||
useDraggable,
|
||||
useDropZone,
|
||||
useElementBounding,
|
||||
useElementByPoint,
|
||||
useElementHover,
|
||||
useElementSize,
|
||||
useElementVisibility,
|
||||
useEventBus,
|
||||
useEventListener,
|
||||
useEventSource,
|
||||
useEyeDropper,
|
||||
useFavicon,
|
||||
useFetch,
|
||||
useFileDialog,
|
||||
useFileSystemAccess,
|
||||
useFocus,
|
||||
useFocusWithin,
|
||||
useFps,
|
||||
useFullscreen,
|
||||
useGamepad,
|
||||
useGeolocation,
|
||||
useIdle,
|
||||
useImage,
|
||||
useInfiniteScroll,
|
||||
useIntersectionObserver,
|
||||
useInterval,
|
||||
useIntervalFn,
|
||||
useKeyModifier,
|
||||
useLastChanged,
|
||||
useLocalStorage,
|
||||
useMagicKeys,
|
||||
useManualRefHistory,
|
||||
useMediaControls,
|
||||
useMediaQuery,
|
||||
useMemoize,
|
||||
useMemory,
|
||||
useMounted,
|
||||
useMouse,
|
||||
useMouseInElement,
|
||||
useMousePressed,
|
||||
useMutationObserver,
|
||||
useNavigatorLanguage,
|
||||
useNetwork,
|
||||
useNow,
|
||||
useObjectUrl,
|
||||
useOffsetPagination,
|
||||
useOnline,
|
||||
usePageLeave,
|
||||
useParallax,
|
||||
useParentElement,
|
||||
usePerformanceObserver,
|
||||
usePermission,
|
||||
usePointer,
|
||||
usePointerLock,
|
||||
usePointerSwipe,
|
||||
usePreferredColorScheme,
|
||||
usePreferredContrast,
|
||||
usePreferredDark,
|
||||
usePreferredLanguages,
|
||||
usePreferredReducedMotion,
|
||||
usePreferredReducedTransparency,
|
||||
usePrevious,
|
||||
useRafFn,
|
||||
useRefHistory,
|
||||
useResizeObserver,
|
||||
useSSRWidth,
|
||||
useScreenOrientation,
|
||||
useScreenSafeArea,
|
||||
useScriptTag,
|
||||
useScroll,
|
||||
useScrollLock,
|
||||
useSessionStorage,
|
||||
useShare,
|
||||
useSorted,
|
||||
useSpeechRecognition,
|
||||
useSpeechSynthesis,
|
||||
useStepper,
|
||||
useStorage,
|
||||
useStorageAsync,
|
||||
useStyleTag,
|
||||
useSupported,
|
||||
useSwipe,
|
||||
useTemplateRefsList,
|
||||
useTextDirection,
|
||||
useTextSelection,
|
||||
useTextareaAutosize,
|
||||
refThrottled as useThrottle,
|
||||
useThrottleFn,
|
||||
useThrottledRefHistory,
|
||||
useTimeAgo,
|
||||
useTimeout,
|
||||
useTimeoutFn,
|
||||
useTimeoutPoll,
|
||||
useTimestamp,
|
||||
useTitle,
|
||||
useToNumber,
|
||||
useToString,
|
||||
useToggle,
|
||||
useTransition,
|
||||
useUrlSearchParams,
|
||||
useUserMedia,
|
||||
useVModel,
|
||||
useVModels,
|
||||
useVibrate,
|
||||
useVirtualList,
|
||||
useWakeLock,
|
||||
useWebNotification,
|
||||
useWebSocket,
|
||||
useWebWorker,
|
||||
useWebWorkerFn,
|
||||
useWindowFocus,
|
||||
useWindowScroll,
|
||||
useWindowSize,
|
||||
watchArray,
|
||||
watchAtMost,
|
||||
watchDebounced,
|
||||
watchDeep,
|
||||
watchIgnorable,
|
||||
watchImmediate,
|
||||
watchOnce,
|
||||
watchPausable,
|
||||
watchThrottled,
|
||||
watchTriggerable,
|
||||
watchWithFilter,
|
||||
whenever
|
||||
};
|
||||
//# sourceMappingURL=vitepress___@vueuse_core.js.map
|
||||
7
word/.vitepress/cache/deps/vitepress___@vueuse_core.js.map
vendored
Normal file
7
word/.vitepress/cache/deps/vitepress___@vueuse_core.js.map
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
347
word/.vitepress/cache/deps/vue.js
vendored
Normal file
347
word/.vitepress/cache/deps/vue.js
vendored
Normal file
@@ -0,0 +1,347 @@
|
||||
import {
|
||||
BaseTransition,
|
||||
BaseTransitionPropsValidators,
|
||||
Comment,
|
||||
DeprecationTypes,
|
||||
EffectScope,
|
||||
ErrorCodes,
|
||||
ErrorTypeStrings,
|
||||
Fragment,
|
||||
KeepAlive,
|
||||
ReactiveEffect,
|
||||
Static,
|
||||
Suspense,
|
||||
Teleport,
|
||||
Text,
|
||||
TrackOpTypes,
|
||||
Transition,
|
||||
TransitionGroup,
|
||||
TriggerOpTypes,
|
||||
VueElement,
|
||||
assertNumber,
|
||||
callWithAsyncErrorHandling,
|
||||
callWithErrorHandling,
|
||||
camelize,
|
||||
capitalize,
|
||||
cloneVNode,
|
||||
compatUtils,
|
||||
compile,
|
||||
computed,
|
||||
createApp,
|
||||
createBaseVNode,
|
||||
createBlock,
|
||||
createCommentVNode,
|
||||
createElementBlock,
|
||||
createHydrationRenderer,
|
||||
createPropsRestProxy,
|
||||
createRenderer,
|
||||
createSSRApp,
|
||||
createSlots,
|
||||
createStaticVNode,
|
||||
createTextVNode,
|
||||
createVNode,
|
||||
customRef,
|
||||
defineAsyncComponent,
|
||||
defineComponent,
|
||||
defineCustomElement,
|
||||
defineEmits,
|
||||
defineExpose,
|
||||
defineModel,
|
||||
defineOptions,
|
||||
defineProps,
|
||||
defineSSRCustomElement,
|
||||
defineSlots,
|
||||
devtools,
|
||||
effect,
|
||||
effectScope,
|
||||
getCurrentInstance,
|
||||
getCurrentScope,
|
||||
getCurrentWatcher,
|
||||
getTransitionRawChildren,
|
||||
guardReactiveProps,
|
||||
h,
|
||||
handleError,
|
||||
hasInjectionContext,
|
||||
hydrate,
|
||||
hydrateOnIdle,
|
||||
hydrateOnInteraction,
|
||||
hydrateOnMediaQuery,
|
||||
hydrateOnVisible,
|
||||
initCustomFormatter,
|
||||
initDirectivesForSSR,
|
||||
inject,
|
||||
isMemoSame,
|
||||
isProxy,
|
||||
isReactive,
|
||||
isReadonly,
|
||||
isRef,
|
||||
isRuntimeOnly,
|
||||
isShallow,
|
||||
isVNode,
|
||||
markRaw,
|
||||
mergeDefaults,
|
||||
mergeModels,
|
||||
mergeProps,
|
||||
nextTick,
|
||||
nodeOps,
|
||||
normalizeClass,
|
||||
normalizeProps,
|
||||
normalizeStyle,
|
||||
onActivated,
|
||||
onBeforeMount,
|
||||
onBeforeUnmount,
|
||||
onBeforeUpdate,
|
||||
onDeactivated,
|
||||
onErrorCaptured,
|
||||
onMounted,
|
||||
onRenderTracked,
|
||||
onRenderTriggered,
|
||||
onScopeDispose,
|
||||
onServerPrefetch,
|
||||
onUnmounted,
|
||||
onUpdated,
|
||||
onWatcherCleanup,
|
||||
openBlock,
|
||||
patchProp,
|
||||
popScopeId,
|
||||
provide,
|
||||
proxyRefs,
|
||||
pushScopeId,
|
||||
queuePostFlushCb,
|
||||
reactive,
|
||||
readonly,
|
||||
ref,
|
||||
registerRuntimeCompiler,
|
||||
render,
|
||||
renderList,
|
||||
renderSlot,
|
||||
resolveComponent,
|
||||
resolveDirective,
|
||||
resolveDynamicComponent,
|
||||
resolveFilter,
|
||||
resolveTransitionHooks,
|
||||
setBlockTracking,
|
||||
setDevtoolsHook,
|
||||
setTransitionHooks,
|
||||
shallowReactive,
|
||||
shallowReadonly,
|
||||
shallowRef,
|
||||
ssrContextKey,
|
||||
ssrUtils,
|
||||
stop,
|
||||
toDisplayString,
|
||||
toHandlerKey,
|
||||
toHandlers,
|
||||
toRaw,
|
||||
toRef,
|
||||
toRefs,
|
||||
toValue,
|
||||
transformVNodeArgs,
|
||||
triggerRef,
|
||||
unref,
|
||||
useAttrs,
|
||||
useCssModule,
|
||||
useCssVars,
|
||||
useHost,
|
||||
useId,
|
||||
useModel,
|
||||
useSSRContext,
|
||||
useShadowRoot,
|
||||
useSlots,
|
||||
useTemplateRef,
|
||||
useTransitionState,
|
||||
vModelCheckbox,
|
||||
vModelDynamic,
|
||||
vModelRadio,
|
||||
vModelSelect,
|
||||
vModelText,
|
||||
vShow,
|
||||
version,
|
||||
warn,
|
||||
watch,
|
||||
watchEffect,
|
||||
watchPostEffect,
|
||||
watchSyncEffect,
|
||||
withAsyncContext,
|
||||
withCtx,
|
||||
withDefaults,
|
||||
withDirectives,
|
||||
withKeys,
|
||||
withMemo,
|
||||
withModifiers,
|
||||
withScopeId
|
||||
} from "./chunk-VIGQSUQT.js";
|
||||
export {
|
||||
BaseTransition,
|
||||
BaseTransitionPropsValidators,
|
||||
Comment,
|
||||
DeprecationTypes,
|
||||
EffectScope,
|
||||
ErrorCodes,
|
||||
ErrorTypeStrings,
|
||||
Fragment,
|
||||
KeepAlive,
|
||||
ReactiveEffect,
|
||||
Static,
|
||||
Suspense,
|
||||
Teleport,
|
||||
Text,
|
||||
TrackOpTypes,
|
||||
Transition,
|
||||
TransitionGroup,
|
||||
TriggerOpTypes,
|
||||
VueElement,
|
||||
assertNumber,
|
||||
callWithAsyncErrorHandling,
|
||||
callWithErrorHandling,
|
||||
camelize,
|
||||
capitalize,
|
||||
cloneVNode,
|
||||
compatUtils,
|
||||
compile,
|
||||
computed,
|
||||
createApp,
|
||||
createBlock,
|
||||
createCommentVNode,
|
||||
createElementBlock,
|
||||
createBaseVNode as createElementVNode,
|
||||
createHydrationRenderer,
|
||||
createPropsRestProxy,
|
||||
createRenderer,
|
||||
createSSRApp,
|
||||
createSlots,
|
||||
createStaticVNode,
|
||||
createTextVNode,
|
||||
createVNode,
|
||||
customRef,
|
||||
defineAsyncComponent,
|
||||
defineComponent,
|
||||
defineCustomElement,
|
||||
defineEmits,
|
||||
defineExpose,
|
||||
defineModel,
|
||||
defineOptions,
|
||||
defineProps,
|
||||
defineSSRCustomElement,
|
||||
defineSlots,
|
||||
devtools,
|
||||
effect,
|
||||
effectScope,
|
||||
getCurrentInstance,
|
||||
getCurrentScope,
|
||||
getCurrentWatcher,
|
||||
getTransitionRawChildren,
|
||||
guardReactiveProps,
|
||||
h,
|
||||
handleError,
|
||||
hasInjectionContext,
|
||||
hydrate,
|
||||
hydrateOnIdle,
|
||||
hydrateOnInteraction,
|
||||
hydrateOnMediaQuery,
|
||||
hydrateOnVisible,
|
||||
initCustomFormatter,
|
||||
initDirectivesForSSR,
|
||||
inject,
|
||||
isMemoSame,
|
||||
isProxy,
|
||||
isReactive,
|
||||
isReadonly,
|
||||
isRef,
|
||||
isRuntimeOnly,
|
||||
isShallow,
|
||||
isVNode,
|
||||
markRaw,
|
||||
mergeDefaults,
|
||||
mergeModels,
|
||||
mergeProps,
|
||||
nextTick,
|
||||
nodeOps,
|
||||
normalizeClass,
|
||||
normalizeProps,
|
||||
normalizeStyle,
|
||||
onActivated,
|
||||
onBeforeMount,
|
||||
onBeforeUnmount,
|
||||
onBeforeUpdate,
|
||||
onDeactivated,
|
||||
onErrorCaptured,
|
||||
onMounted,
|
||||
onRenderTracked,
|
||||
onRenderTriggered,
|
||||
onScopeDispose,
|
||||
onServerPrefetch,
|
||||
onUnmounted,
|
||||
onUpdated,
|
||||
onWatcherCleanup,
|
||||
openBlock,
|
||||
patchProp,
|
||||
popScopeId,
|
||||
provide,
|
||||
proxyRefs,
|
||||
pushScopeId,
|
||||
queuePostFlushCb,
|
||||
reactive,
|
||||
readonly,
|
||||
ref,
|
||||
registerRuntimeCompiler,
|
||||
render,
|
||||
renderList,
|
||||
renderSlot,
|
||||
resolveComponent,
|
||||
resolveDirective,
|
||||
resolveDynamicComponent,
|
||||
resolveFilter,
|
||||
resolveTransitionHooks,
|
||||
setBlockTracking,
|
||||
setDevtoolsHook,
|
||||
setTransitionHooks,
|
||||
shallowReactive,
|
||||
shallowReadonly,
|
||||
shallowRef,
|
||||
ssrContextKey,
|
||||
ssrUtils,
|
||||
stop,
|
||||
toDisplayString,
|
||||
toHandlerKey,
|
||||
toHandlers,
|
||||
toRaw,
|
||||
toRef,
|
||||
toRefs,
|
||||
toValue,
|
||||
transformVNodeArgs,
|
||||
triggerRef,
|
||||
unref,
|
||||
useAttrs,
|
||||
useCssModule,
|
||||
useCssVars,
|
||||
useHost,
|
||||
useId,
|
||||
useModel,
|
||||
useSSRContext,
|
||||
useShadowRoot,
|
||||
useSlots,
|
||||
useTemplateRef,
|
||||
useTransitionState,
|
||||
vModelCheckbox,
|
||||
vModelDynamic,
|
||||
vModelRadio,
|
||||
vModelSelect,
|
||||
vModelText,
|
||||
vShow,
|
||||
version,
|
||||
warn,
|
||||
watch,
|
||||
watchEffect,
|
||||
watchPostEffect,
|
||||
watchSyncEffect,
|
||||
withAsyncContext,
|
||||
withCtx,
|
||||
withDefaults,
|
||||
withDirectives,
|
||||
withKeys,
|
||||
withMemo,
|
||||
withModifiers,
|
||||
withScopeId
|
||||
};
|
||||
//# sourceMappingURL=vue.js.map
|
||||
7
word/.vitepress/cache/deps/vue.js.map
vendored
Normal file
7
word/.vitepress/cache/deps/vue.js.map
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
46
word/.vitepress/config.mts
Normal file
46
word/.vitepress/config.mts
Normal file
@@ -0,0 +1,46 @@
|
||||
import { defineConfig } from 'vitepress'
|
||||
|
||||
// https://vitepress.dev/reference/site-config
|
||||
export default defineConfig({
|
||||
title: "DeEarthX-CE",
|
||||
description: "DeEarthX-CE 项目文档",
|
||||
themeConfig: {
|
||||
// https://vitepress.dev/reference/default-theme-config
|
||||
nav: [
|
||||
{ text: '首页', link: '/' },
|
||||
{ text: '文档', link: '/guide/introduction' },
|
||||
{ text: 'API', link: '/api/core' },
|
||||
{ text: '贡献', link: '/contributing' }
|
||||
],
|
||||
|
||||
sidebar: {
|
||||
'/guide/': [
|
||||
{
|
||||
text: '指南',
|
||||
items: [
|
||||
{ text: '项目介绍', link: '/guide/introduction' },
|
||||
{ text: '安装指南', link: '/guide/installation' },
|
||||
{ text: '使用教程', link: '/guide/usage' },
|
||||
{ text: '模板编写教程', link: '/guide/template-tutorial' },
|
||||
{ text: '常见问题', link: '/guide/faq' },
|
||||
{ text: '开发者指南', link: '/guide/developer' }
|
||||
]
|
||||
}
|
||||
],
|
||||
'/api/': [
|
||||
{
|
||||
text: 'API 文档',
|
||||
items: [
|
||||
{ text: '核心模块', link: '/api/core' },
|
||||
{ text: '后端 API', link: '/api/backend' },
|
||||
{ text: '前端 API', link: '/api/frontend' }
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
socialLinks: [
|
||||
{ icon: 'github', link: 'https://github.com' }
|
||||
]
|
||||
}
|
||||
})
|
||||
49
word/api-examples.md
Normal file
49
word/api-examples.md
Normal file
@@ -0,0 +1,49 @@
|
||||
---
|
||||
outline: deep
|
||||
---
|
||||
|
||||
# Runtime API Examples
|
||||
|
||||
This page demonstrates usage of some of the runtime APIs provided by VitePress.
|
||||
|
||||
The main `useData()` API can be used to access site, theme, and page data for the current page. It works in both `.md` and `.vue` files:
|
||||
|
||||
```md
|
||||
<script setup>
|
||||
import { useData } from 'vitepress'
|
||||
|
||||
const { theme, page, frontmatter } = useData()
|
||||
</script>
|
||||
|
||||
## Results
|
||||
|
||||
### Theme Data
|
||||
<pre>{{ theme }}</pre>
|
||||
|
||||
### Page Data
|
||||
<pre>{{ page }}</pre>
|
||||
|
||||
### Page Frontmatter
|
||||
<pre>{{ frontmatter }}</pre>
|
||||
```
|
||||
|
||||
<script setup>
|
||||
import { useData } from 'vitepress'
|
||||
|
||||
const { site, theme, page, frontmatter } = useData()
|
||||
</script>
|
||||
|
||||
## Results
|
||||
|
||||
### Theme Data
|
||||
<pre>{{ theme }}</pre>
|
||||
|
||||
### Page Data
|
||||
<pre>{{ page }}</pre>
|
||||
|
||||
### Page Frontmatter
|
||||
<pre>{{ frontmatter }}</pre>
|
||||
|
||||
## More
|
||||
|
||||
Check out the documentation for the [full list of runtime APIs](https://vitepress.dev/reference/runtime-api#usedata).
|
||||
314
word/api/backend.md
Normal file
314
word/api/backend.md
Normal file
@@ -0,0 +1,314 @@
|
||||
# 后端 API
|
||||
|
||||
## 概述
|
||||
|
||||
DeEarthX-CE 的后端模块使用 TypeScript 开发,提供了核心功能和 API 接口。本章节将详细介绍后端模块的 API 接口。
|
||||
|
||||
## 模块结构
|
||||
|
||||
后端模块包含以下主要目录:
|
||||
|
||||
- `dearth/` - 核心功能模块
|
||||
- `modloader/` - 模组加载器相关功能
|
||||
- `platform/` - 平台集成模块
|
||||
- `template/` - 模板管理模块
|
||||
- `utils/` - 工具函数
|
||||
|
||||
## 核心模块
|
||||
|
||||
### dearth/strategies
|
||||
|
||||
包含各种模组过滤策略:
|
||||
|
||||
- `DexpubFilter.ts` - Dexpub 过滤策略
|
||||
- `HashFilter.ts` - 基于哈希值的过滤策略
|
||||
- `MixinFilter.ts` - 混合过滤策略
|
||||
- `ModrinthFilter.ts` - Modrinth 过滤策略
|
||||
|
||||
### dearth/ModCheckService.ts
|
||||
|
||||
**功能**:负责检查模组的有效性和兼容性
|
||||
|
||||
**方法**:
|
||||
|
||||
- `checkMod(modPath: string): Promise<ModInfo>`
|
||||
- **参数**:`modPath` - 模组文件路径
|
||||
- **返回值**:模组信息对象
|
||||
- **描述**:检查模组的基本信息和兼容性
|
||||
|
||||
- `checkModCompatibility(modInfo: ModInfo, gameVersion: string, modloader: string): Promise<boolean>`
|
||||
- **参数**:
|
||||
- `modInfo` - 模组信息对象
|
||||
- `gameVersion` - 游戏版本
|
||||
- `modloader` - 模组加载器
|
||||
- **返回值**:是否兼容
|
||||
- **描述**:检查模组与指定游戏版本和加载器的兼容性
|
||||
|
||||
### dearth/ModFilterService.ts
|
||||
|
||||
**功能**:负责根据不同策略过滤模组
|
||||
|
||||
**方法**:
|
||||
|
||||
- `filterMods(mods: ModInfo[], strategy: FilterStrategy): Promise<ModInfo[]>`
|
||||
- **参数**:
|
||||
- `mods` - 模组信息数组
|
||||
- `strategy` - 过滤策略
|
||||
- **返回值**:过滤后的模组数组
|
||||
- **描述**:根据指定策略过滤模组
|
||||
|
||||
- `registerFilterStrategy(name: string, strategy: FilterStrategy): void`
|
||||
- **参数**:
|
||||
- `name` - 策略名称
|
||||
- `strategy` - 过滤策略对象
|
||||
- **返回值**:无
|
||||
- **描述**:注册新的过滤策略
|
||||
|
||||
## 模组加载器模块
|
||||
|
||||
### modloader/fabric.ts
|
||||
|
||||
**功能**:处理 Fabric 模组加载器相关操作
|
||||
|
||||
**方法**:
|
||||
|
||||
- `detectFabricMod(modPath: string): Promise<boolean>`
|
||||
- **参数**:`modPath` - 模组文件路径
|
||||
- **返回值**:是否为 Fabric 模组
|
||||
- **描述**:检测指定文件是否为 Fabric 模组
|
||||
|
||||
- `getFabricModInfo(modPath: string): Promise<ModInfo>`
|
||||
- **参数**:`modPath` - 模组文件路径
|
||||
- **返回值**:模组信息对象
|
||||
- **描述**:获取 Fabric 模组的详细信息
|
||||
|
||||
### modloader/forge.ts
|
||||
|
||||
**功能**:处理 Forge 模组加载器相关操作
|
||||
|
||||
**方法**:
|
||||
|
||||
- `detectForgeMod(modPath: string): Promise<boolean>`
|
||||
- **参数**:`modPath` - 模组文件路径
|
||||
- **返回值**:是否为 Forge 模组
|
||||
- **描述**:检测指定文件是否为 Forge 模组
|
||||
|
||||
- `getForgeModInfo(modPath: string): Promise<ModInfo>`
|
||||
- **参数**:`modPath` - 模组文件路径
|
||||
- **返回值**:模组信息对象
|
||||
- **描述**:获取 Forge 模组的详细信息
|
||||
|
||||
### modloader/neoforge.ts
|
||||
|
||||
**功能**:处理 NeoForge 模组加载器相关操作
|
||||
|
||||
**方法**:
|
||||
|
||||
- `detectNeoForgeMod(modPath: string): Promise<boolean>`
|
||||
- **参数**:`modPath` - 模组文件路径
|
||||
- **返回值**:是否为 NeoForge 模组
|
||||
- **描述**:检测指定文件是否为 NeoForge 模组
|
||||
|
||||
- `getNeoForgeModInfo(modPath: string): Promise<ModInfo>`
|
||||
- **参数**:`modPath` - 模组文件路径
|
||||
- **返回值**:模组信息对象
|
||||
- **描述**:获取 NeoForge 模组的详细信息
|
||||
|
||||
## 平台集成模块
|
||||
|
||||
### platform/curseforge.ts
|
||||
|
||||
**功能**:与 CurseForge API 交互
|
||||
|
||||
**方法**:
|
||||
|
||||
- `searchMods(query: string, gameVersion: string): Promise<ModInfo[]>`
|
||||
- **参数**:
|
||||
- `query` - 搜索关键词
|
||||
- `gameVersion` - 游戏版本
|
||||
- **返回值**:搜索结果数组
|
||||
- **描述**:在 CurseForge 上搜索模组
|
||||
|
||||
- `getModDetails(modId: string): Promise<ModInfo>`
|
||||
- **参数**:`modId` - 模组ID
|
||||
- **返回值**:模组详细信息
|
||||
- **描述**:获取模组的详细信息
|
||||
|
||||
- `downloadMod(modId: string, fileId: string, destination: string): Promise<boolean>`
|
||||
- **参数**:
|
||||
- `modId` - 模组ID
|
||||
- `fileId` - 文件ID
|
||||
- `destination` - 下载目标路径
|
||||
- **返回值**:是否下载成功
|
||||
- **描述**:下载指定模组文件
|
||||
|
||||
### platform/modrinth.ts
|
||||
|
||||
**功能**:与 Modrinth API 交互
|
||||
|
||||
**方法**:
|
||||
|
||||
- `searchMods(query: string, gameVersion: string): Promise<ModInfo[]>`
|
||||
- **参数**:
|
||||
- `query` - 搜索关键词
|
||||
- `gameVersion` - 游戏版本
|
||||
- **返回值**:搜索结果数组
|
||||
- **描述**:在 Modrinth 上搜索模组
|
||||
|
||||
- `getModDetails(modId: string): Promise<ModInfo>`
|
||||
- **参数**:`modId` - 模组ID
|
||||
- **返回值**:模组详细信息
|
||||
- **描述**:获取模组的详细信息
|
||||
|
||||
- `downloadMod(modId: string, versionId: string, destination: string): Promise<boolean>`
|
||||
- **参数**:
|
||||
- `modId` - 模组ID
|
||||
- `versionId` - 版本ID
|
||||
- `destination` - 下载目标路径
|
||||
- **返回值**:是否下载成功
|
||||
- **描述**:下载指定模组文件
|
||||
|
||||
## 模板管理模块
|
||||
|
||||
### template/TemplateManager.ts
|
||||
|
||||
**功能**:负责模板的创建、管理和应用
|
||||
|
||||
**方法**:
|
||||
|
||||
- `createTemplate(name: string, description: string, mods: ModInfo[]): Promise<Template>`
|
||||
- **参数**:
|
||||
- `name` - 模板名称
|
||||
- `description` - 模板描述
|
||||
- `mods` - 模组信息数组
|
||||
- **返回值**:创建的模板对象
|
||||
- **描述**:创建新的模组包模板
|
||||
|
||||
- `getTemplate(templateId: string): Promise<Template>`
|
||||
- **参数**:`templateId` - 模板ID
|
||||
- **返回值**:模板对象
|
||||
- **描述**:获取指定模板的详细信息
|
||||
|
||||
- `listTemplates(): Promise<Template[]>`
|
||||
- **参数**:无
|
||||
- **返回值**:模板数组
|
||||
- **描述**:获取所有模板列表
|
||||
|
||||
- `updateTemplate(templateId: string, updates: Partial<Template>): Promise<Template>`
|
||||
- **参数**:
|
||||
- `templateId` - 模板ID
|
||||
- `updates` - 更新内容
|
||||
- **返回值**:更新后的模板对象
|
||||
- **描述**:更新模板信息
|
||||
|
||||
- `deleteTemplate(templateId: string): Promise<boolean>`
|
||||
- **参数**:`templateId` - 模板ID
|
||||
- **返回值**:是否删除成功
|
||||
- **描述**:删除指定模板
|
||||
|
||||
- `applyTemplate(templateId: string, targetDir: string): Promise<boolean>`
|
||||
- **参数**:
|
||||
- `templateId` - 模板ID
|
||||
- `targetDir` - 目标目录
|
||||
- **返回值**:是否应用成功
|
||||
- **描述**:将模板应用到指定目录
|
||||
|
||||
- `exportTemplate(templateId: string, exportPath: string): Promise<boolean>`
|
||||
- **参数**:
|
||||
- `templateId` - 模板ID
|
||||
- `exportPath` - 导出路径
|
||||
- **返回值**:是否导出成功
|
||||
- **描述**:导出模板为文件
|
||||
|
||||
- `importTemplate(templatePath: string): Promise<Template>`
|
||||
- **参数**:`templatePath` - 模板文件路径
|
||||
- **返回值**:导入的模板对象
|
||||
- **描述**:从文件导入模板
|
||||
|
||||
## 工具模块
|
||||
|
||||
### utils/FileExtractor.ts
|
||||
|
||||
**功能**:负责从模组文件中提取信息
|
||||
|
||||
**方法**:
|
||||
|
||||
- `extractModInfo(jarPath: string): Promise<ModInfo>`
|
||||
- **参数**:`jarPath` - 模组JAR文件路径
|
||||
- **返回值**:模组信息对象
|
||||
- **描述**:从JAR文件中提取模组信息
|
||||
|
||||
- `extractManifest(jarPath: string): Promise<any>`
|
||||
- **参数**:`jarPath` - 模组JAR文件路径
|
||||
- **返回值**:模组清单对象
|
||||
- **描述**:从JAR文件中提取模组清单
|
||||
|
||||
### utils/FileOperator.ts
|
||||
|
||||
**功能**:负责文件操作
|
||||
|
||||
**方法**:
|
||||
|
||||
- `copyFile(source: string, destination: string): Promise<boolean>`
|
||||
- **参数**:
|
||||
- `source` - 源文件路径
|
||||
- `destination` - 目标文件路径
|
||||
- **返回值**:是否复制成功
|
||||
- **描述**:复制文件
|
||||
|
||||
- `deleteFile(path: string): Promise<boolean>`
|
||||
- **参数**:`path` - 文件路径
|
||||
- **返回值**:是否删除成功
|
||||
- **描述**:删除文件
|
||||
|
||||
- `createDirectory(path: string): Promise<boolean>`
|
||||
- **参数**:`path` - 目录路径
|
||||
- **返回值**:是否创建成功
|
||||
- **描述**:创建目录
|
||||
|
||||
- `listFiles(path: string): Promise<string[]>`
|
||||
- **参数**:`path` - 目录路径
|
||||
- **返回值**:文件路径数组
|
||||
- **描述**:列出目录中的文件
|
||||
|
||||
### utils/jar-parser.ts
|
||||
|
||||
**功能**:负责解析JAR文件
|
||||
|
||||
**方法**:
|
||||
|
||||
- `parseJar(jarPath: string): Promise<JarContent>`
|
||||
- **参数**:`jarPath` - JAR文件路径
|
||||
- **返回值**:JAR内容对象
|
||||
- **描述**:解析JAR文件内容
|
||||
|
||||
- `extractFile(jarPath: string, filePath: string, destination: string): Promise<boolean>`
|
||||
- **参数**:
|
||||
- `jarPath` - JAR文件路径
|
||||
- `filePath` - JAR内部文件路径
|
||||
- `destination` - 提取目标路径
|
||||
- **返回值**:是否提取成功
|
||||
- **描述**:从JAR文件中提取指定文件
|
||||
|
||||
## 主入口
|
||||
|
||||
### main.ts
|
||||
|
||||
**功能**:后端应用的主入口
|
||||
|
||||
**方法**:
|
||||
|
||||
- `startServer(): Promise<void>`
|
||||
- **参数**:无
|
||||
- **返回值**:无
|
||||
- **描述**:启动后端服务器
|
||||
|
||||
- `stopServer(): Promise<void>`
|
||||
- **参数**:无
|
||||
- **返回值**:无
|
||||
- **描述**:停止后端服务器
|
||||
|
||||
- `getServerStatus(): ServerStatus`
|
||||
- **参数**:无
|
||||
- **返回值**:服务器状态对象
|
||||
- **描述**:获取服务器状态
|
||||
185
word/api/core.md
Normal file
185
word/api/core.md
Normal file
@@ -0,0 +1,185 @@
|
||||
# 核心模块 API
|
||||
|
||||
## 概述
|
||||
|
||||
DeEarthX-CE 的核心模块提供了应用的基础功能,包括模组管理、模板管理、平台集成等。本章节将详细介绍核心模块的 API 接口。
|
||||
|
||||
## 核心类
|
||||
|
||||
### ModCheckService
|
||||
|
||||
**功能**:负责检查模组的有效性和兼容性
|
||||
|
||||
**方法**:
|
||||
|
||||
- `checkMod(modPath: string): Promise<ModInfo>`
|
||||
- **参数**:`modPath` - 模组文件路径
|
||||
- **返回值**:模组信息对象
|
||||
- **描述**:检查模组的基本信息和兼容性
|
||||
|
||||
- `checkModCompatibility(modInfo: ModInfo, gameVersion: string, modloader: string): Promise<boolean>`
|
||||
- **参数**:
|
||||
- `modInfo` - 模组信息对象
|
||||
- `gameVersion` - 游戏版本
|
||||
- `modloader` - 模组加载器
|
||||
- **返回值**:是否兼容
|
||||
- **描述**:检查模组与指定游戏版本和加载器的兼容性
|
||||
|
||||
### ModFilterService
|
||||
|
||||
**功能**:负责根据不同策略过滤模组
|
||||
|
||||
**方法**:
|
||||
|
||||
- `filterMods(mods: ModInfo[], strategy: FilterStrategy): Promise<ModInfo[]>`
|
||||
- **参数**:
|
||||
- `mods` - 模组信息数组
|
||||
- `strategy` - 过滤策略
|
||||
- **返回值**:过滤后的模组数组
|
||||
- **描述**:根据指定策略过滤模组
|
||||
|
||||
- `registerFilterStrategy(name: string, strategy: FilterStrategy): void`
|
||||
- **参数**:
|
||||
- `name` - 策略名称
|
||||
- `strategy` - 过滤策略对象
|
||||
- **返回值**:无
|
||||
- **描述**:注册新的过滤策略
|
||||
|
||||
### TemplateManager
|
||||
|
||||
**功能**:负责模板的创建、管理和应用
|
||||
|
||||
**方法**:
|
||||
|
||||
- `createTemplate(name: string, description: string, mods: ModInfo[]): Promise<Template>`
|
||||
- **参数**:
|
||||
- `name` - 模板名称
|
||||
- `description` - 模板描述
|
||||
- `mods` - 模组信息数组
|
||||
- **返回值**:创建的模板对象
|
||||
- **描述**:创建新的模组包模板
|
||||
|
||||
- `applyTemplate(templateId: string, targetDir: string): Promise<boolean>`
|
||||
- **参数**:
|
||||
- `templateId` - 模板ID
|
||||
- `targetDir` - 目标目录
|
||||
- **返回值**:是否应用成功
|
||||
- **描述**:将模板应用到指定目录
|
||||
|
||||
- `exportTemplate(templateId: string, exportPath: string): Promise<boolean>`
|
||||
- **参数**:
|
||||
- `templateId` - 模板ID
|
||||
- `exportPath` - 导出路径
|
||||
- **返回值**:是否导出成功
|
||||
- **描述**:导出模板为文件
|
||||
|
||||
## 工具类
|
||||
|
||||
### FileExtractor
|
||||
|
||||
**功能**:负责从模组文件中提取信息
|
||||
|
||||
**方法**:
|
||||
|
||||
- `extractModInfo(jarPath: string): Promise<ModInfo>`
|
||||
- **参数**:`jarPath` - 模组JAR文件路径
|
||||
- **返回值**:模组信息对象
|
||||
- **描述**:从JAR文件中提取模组信息
|
||||
|
||||
### FileOperator
|
||||
|
||||
**功能**:负责文件操作
|
||||
|
||||
**方法**:
|
||||
|
||||
- `copyFile(source: string, destination: string): Promise<boolean>`
|
||||
- **参数**:
|
||||
- `source` - 源文件路径
|
||||
- `destination` - 目标文件路径
|
||||
- **返回值**:是否复制成功
|
||||
- **描述**:复制文件
|
||||
|
||||
- `deleteFile(path: string): Promise<boolean>`
|
||||
- **参数**:`path` - 文件路径
|
||||
- **返回值**:是否删除成功
|
||||
- **描述**:删除文件
|
||||
|
||||
## 平台集成
|
||||
|
||||
### CurseForgeClient
|
||||
|
||||
**功能**:与 CurseForge API 交互
|
||||
|
||||
**方法**:
|
||||
|
||||
- `searchMods(query: string, gameVersion: string): Promise<ModInfo[]>`
|
||||
- **参数**:
|
||||
- `query` - 搜索关键词
|
||||
- `gameVersion` - 游戏版本
|
||||
- **返回值**:搜索结果数组
|
||||
- **描述**:在 CurseForge 上搜索模组
|
||||
|
||||
- `getModDetails(modId: string): Promise<ModInfo>`
|
||||
- **参数**:`modId` - 模组ID
|
||||
- **返回值**:模组详细信息
|
||||
- **描述**:获取模组的详细信息
|
||||
|
||||
### ModrinthClient
|
||||
|
||||
**功能**:与 Modrinth API 交互
|
||||
|
||||
**方法**:
|
||||
|
||||
- `searchMods(query: string, gameVersion: string): Promise<ModInfo[]>`
|
||||
- **参数**:
|
||||
- `query` - 搜索关键词
|
||||
- `gameVersion` - 游戏版本
|
||||
- **返回值**:搜索结果数组
|
||||
- **描述**:在 Modrinth 上搜索模组
|
||||
|
||||
- `getModDetails(modId: string): Promise<ModInfo>`
|
||||
- **参数**:`modId` - 模组ID
|
||||
- **返回值**:模组详细信息
|
||||
- **描述**:获取模组的详细信息
|
||||
|
||||
## 类型定义
|
||||
|
||||
### ModInfo
|
||||
|
||||
```typescript
|
||||
interface ModInfo {
|
||||
id: string;
|
||||
name: string;
|
||||
version: string;
|
||||
description: string;
|
||||
authors: string[];
|
||||
gameVersions: string[];
|
||||
modLoaders: string[];
|
||||
dependencies: string[];
|
||||
fileSize: number;
|
||||
hash: string;
|
||||
source: string; // curseforge, modrinth, local
|
||||
}
|
||||
```
|
||||
|
||||
### Template
|
||||
|
||||
```typescript
|
||||
interface Template {
|
||||
id: string;
|
||||
name: string;
|
||||
description: string;
|
||||
mods: ModInfo[];
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
}
|
||||
```
|
||||
|
||||
### FilterStrategy
|
||||
|
||||
```typescript
|
||||
interface FilterStrategy {
|
||||
name: string;
|
||||
filter: (mod: ModInfo) => boolean;
|
||||
}
|
||||
```
|
||||
243
word/api/frontend.md
Normal file
243
word/api/frontend.md
Normal file
@@ -0,0 +1,243 @@
|
||||
# 前端 API
|
||||
|
||||
## 概述
|
||||
|
||||
DeEarthX-CE 的前端模块使用 Vue 3 + Vite 开发,提供了用户界面和与后端的交互功能。本章节将详细介绍前端模块的 API 接口。
|
||||
|
||||
## 项目结构
|
||||
|
||||
前端模块包含以下主要目录:
|
||||
|
||||
- `src/components/` - 组件目录
|
||||
- `src/views/` - 页面视图目录
|
||||
- `src/utils/` - 工具函数目录
|
||||
- `src/assets/` - 资源文件目录
|
||||
- `lang/` - 语言文件目录
|
||||
|
||||
## 组件
|
||||
|
||||
### ModeSelector.vue
|
||||
|
||||
**功能**:模式选择组件,用于选择不同的操作模式
|
||||
|
||||
**属性**:
|
||||
|
||||
- `modes` - 模式数组,包含模式名称和图标
|
||||
- `selectedMode` - 当前选中的模式
|
||||
- `@mode-change` - 模式变更事件
|
||||
|
||||
**方法**:
|
||||
|
||||
- `selectMode(mode: string): void` - 选择指定模式
|
||||
|
||||
### ProgressCard.vue
|
||||
|
||||
**功能**:进度卡片组件,用于显示操作进度
|
||||
|
||||
**属性**:
|
||||
|
||||
- `title` - 卡片标题
|
||||
- `progress` - 进度值(0-100)
|
||||
- `status` - 状态(loading, success, error)
|
||||
- `message` - 状态消息
|
||||
|
||||
**方法**:
|
||||
|
||||
- `updateProgress(progress: number): void` - 更新进度
|
||||
- `setStatus(status: string, message: string): void` - 更新状态
|
||||
|
||||
### StepIndicator.vue
|
||||
|
||||
**功能**:步骤指示器组件,用于显示多步骤操作的进度
|
||||
|
||||
**属性**:
|
||||
|
||||
- `steps` - 步骤数组
|
||||
- `currentStep` - 当前步骤索引
|
||||
|
||||
**方法**:
|
||||
|
||||
- `goToStep(step: number): void` - 跳转到指定步骤
|
||||
|
||||
### WebSocketHandler.vue
|
||||
|
||||
**功能**:WebSocket 处理组件,用于与后端进行实时通信
|
||||
|
||||
**属性**:
|
||||
|
||||
- `url` - WebSocket 服务器 URL
|
||||
- `@message` - 接收消息事件
|
||||
- `@connected` - 连接成功事件
|
||||
- `@disconnected` - 连接断开事件
|
||||
|
||||
**方法**:
|
||||
|
||||
- `sendMessage(data: any): void` - 发送消息
|
||||
- `connect(): void` - 建立连接
|
||||
- `disconnect(): void` - 断开连接
|
||||
|
||||
## 页面视图
|
||||
|
||||
### Main.vue
|
||||
|
||||
**功能**:主页面组件
|
||||
|
||||
**方法**:
|
||||
|
||||
- `initializeApp(): void` - 初始化应用
|
||||
- `loadUserSettings(): void` - 加载用户设置
|
||||
- `handleModeChange(mode: string): void` - 处理模式变更
|
||||
|
||||
### DeEarthView.vue
|
||||
|
||||
**功能**:DeEarth 模式页面
|
||||
|
||||
**方法**:
|
||||
|
||||
- `loadMods(): void` - 加载模组列表
|
||||
- `addMod(): void` - 添加模组
|
||||
- `removeMod(modId: string): void` - 移除模组
|
||||
- `toggleMod(modId: string): void` - 切换模组状态
|
||||
|
||||
### GalaxyView.vue
|
||||
|
||||
**功能**:Galaxy 模式页面
|
||||
|
||||
**方法**:
|
||||
|
||||
- `loadTemplates(): void` - 加载模板列表
|
||||
- `createTemplate(): void` - 创建模板
|
||||
- `applyTemplate(templateId: string): void` - 应用模板
|
||||
- `exportTemplate(templateId: string): void` - 导出模板
|
||||
|
||||
### SettingView.vue
|
||||
|
||||
**功能**:设置页面
|
||||
|
||||
**方法**:
|
||||
|
||||
- `loadSettings(): void` - 加载设置
|
||||
- `saveSettings(): void` - 保存设置
|
||||
- `changeLanguage(language: string): void` - 更改语言
|
||||
|
||||
### AboutView.vue
|
||||
|
||||
**功能**:关于页面
|
||||
|
||||
**方法**:
|
||||
|
||||
- `loadVersionInfo(): void` - 加载版本信息
|
||||
- `checkForUpdates(): void` - 检查更新
|
||||
|
||||
### TemplateView.vue
|
||||
|
||||
**功能**:模板管理页面
|
||||
|
||||
**方法**:
|
||||
|
||||
- `loadTemplates(): void` - 加载模板列表
|
||||
- `createTemplate(): void` - 创建模板
|
||||
- `editTemplate(templateId: string): void` - 编辑模板
|
||||
- `deleteTemplate(templateId: string): void` - 删除模板
|
||||
|
||||
### ErrorView.vue
|
||||
|
||||
**功能**:错误页面
|
||||
|
||||
**属性**:
|
||||
|
||||
- `error` - 错误信息
|
||||
|
||||
**方法**:
|
||||
|
||||
- `retry(): void` - 重试操作
|
||||
- `goHome(): void` - 返回首页
|
||||
|
||||
## 工具函数
|
||||
|
||||
### axios.ts
|
||||
|
||||
**功能**:HTTP 请求工具
|
||||
|
||||
**方法**:
|
||||
|
||||
- `get<T>(url: string, params?: any): Promise<T>` - 发送 GET 请求
|
||||
- `post<T>(url: string, data?: any): Promise<T>` - 发送 POST 请求
|
||||
- `put<T>(url: string, data?: any): Promise<T>` - 发送 PUT 请求
|
||||
- `delete<T>(url: string): Promise<T>` - 发送 DELETE 请求
|
||||
|
||||
### i18n.ts
|
||||
|
||||
**功能**:国际化工具
|
||||
|
||||
**方法**:
|
||||
|
||||
- `loadLanguage(language: string): Promise<void>` - 加载指定语言
|
||||
- `t(key: string): string` - 翻译指定键
|
||||
- `getCurrentLanguage(): string` - 获取当前语言
|
||||
|
||||
### router.ts
|
||||
|
||||
**功能**:路由工具
|
||||
|
||||
**方法**:
|
||||
|
||||
- `navigateTo(path: string): void` - 导航到指定路径
|
||||
- `goBack(): void` - 返回上一页
|
||||
- `getCurrentRoute(): string` - 获取当前路由
|
||||
|
||||
## 状态管理
|
||||
|
||||
前端使用 Vue 的响应式系统进行状态管理,主要状态包括:
|
||||
|
||||
- `mods` - 模组列表
|
||||
- `templates` - 模板列表
|
||||
- `settings` - 用户设置
|
||||
- `currentMode` - 当前模式
|
||||
- `isLoading` - 加载状态
|
||||
- `error` - 错误信息
|
||||
|
||||
## API 调用
|
||||
|
||||
前端通过以下方式与后端进行交互:
|
||||
|
||||
1. **HTTP 请求**:使用 axios 发送 RESTful API 请求
|
||||
2. **WebSocket**:使用 WebSocketHandler 组件进行实时通信
|
||||
3. **本地存储**:使用 localStorage 存储用户设置和缓存数据
|
||||
|
||||
## 语言支持
|
||||
|
||||
前端支持多种语言,语言文件位于 `lang/` 目录:
|
||||
|
||||
- `zh_cn.json` - 简体中文
|
||||
- `zh_tw.json` - 繁体中文
|
||||
- `zh_hk.json` - 香港中文
|
||||
- `en_us.json` - 英文
|
||||
- `ja_jp.json` - 日文
|
||||
- `fr_fr.json` - 法文
|
||||
- `es_es.json` - 西班牙文
|
||||
- `de_de.json` - 德文
|
||||
|
||||
## 主题与样式
|
||||
|
||||
前端使用 Tailwind CSS 进行样式管理,支持响应式布局和主题定制。
|
||||
|
||||
## 构建与部署
|
||||
|
||||
### 开发模式
|
||||
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### 构建生产版本
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
### 预览生产版本
|
||||
|
||||
```bash
|
||||
npm run preview
|
||||
```
|
||||
205
word/contributing.md
Normal file
205
word/contributing.md
Normal file
@@ -0,0 +1,205 @@
|
||||
# 贡献指南
|
||||
|
||||
## 概述
|
||||
|
||||
感谢您对 DeEarthX-CE 项目的关注和支持!我们欢迎来自社区的贡献,包括代码提交、问题报告、功能建议等。本指南将帮助您了解如何参与项目开发。
|
||||
|
||||
## 开发环境设置
|
||||
|
||||
### 前提条件
|
||||
|
||||
在开始贡献之前,请确保您的系统满足以下要求:
|
||||
|
||||
- **Node.js**:v16.0+(推荐使用最新稳定版)
|
||||
- **pnpm**:v8.0+(包管理器)
|
||||
- **Rust**:最新稳定版(用于 Tauri 构建)
|
||||
- **Git**:用于版本控制
|
||||
|
||||
### 克隆仓库
|
||||
|
||||
```bash
|
||||
git clone https://github.com/yourusername/DeEarthX-CE.git
|
||||
cd DeEarthX-CE
|
||||
```
|
||||
|
||||
### 安装依赖
|
||||
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
|
||||
### 启动开发服务器
|
||||
|
||||
```bash
|
||||
# 启动前端开发服务器
|
||||
pnpm run dev
|
||||
|
||||
# 启动后端开发服务器(如果需要)
|
||||
pnpm run backend:dev
|
||||
```
|
||||
|
||||
## 代码规范
|
||||
|
||||
### 代码风格
|
||||
|
||||
- **TypeScript**:使用 TypeScript 官方推荐的代码风格
|
||||
- **Vue**:遵循 Vue 3 风格指南
|
||||
- **Rust**:遵循 Rust 官方代码风格
|
||||
|
||||
### 提交规范
|
||||
|
||||
我们使用 Conventional Commits 规范进行提交信息的编写:
|
||||
|
||||
```
|
||||
<type>(<scope>): <description>
|
||||
|
||||
[optional body]
|
||||
|
||||
[optional footer(s)]
|
||||
```
|
||||
|
||||
**类型**:
|
||||
- `feat`:新功能
|
||||
- `fix`:修复 bug
|
||||
- `docs`:文档更新
|
||||
- `style`:代码风格调整
|
||||
- `refactor`:代码重构
|
||||
- `test`:测试相关
|
||||
- `chore`:构建、依赖等杂项
|
||||
|
||||
## 开发流程
|
||||
|
||||
### 分支管理
|
||||
|
||||
- `main`:主分支,包含稳定版本
|
||||
- `develop`:开发分支,包含最新开发内容
|
||||
- `feature/xxx`:功能分支,用于开发新功能
|
||||
- `fix/xxx`:修复分支,用于修复 bug
|
||||
|
||||
### 开发步骤
|
||||
|
||||
1. **创建分支**:从 `develop` 分支创建新的功能或修复分支
|
||||
2. **开发代码**:实现功能或修复 bug
|
||||
3. **运行测试**:确保代码通过所有测试
|
||||
4. **提交代码**:使用规范的提交信息
|
||||
5. **创建 PR**:向 `develop` 分支提交 Pull Request
|
||||
6. **代码审查**:等待项目维护者的代码审查
|
||||
7. **合并代码**:审查通过后,代码将被合并到 `develop` 分支
|
||||
|
||||
## 测试
|
||||
|
||||
### 运行测试
|
||||
|
||||
```bash
|
||||
# 运行前端测试
|
||||
pnpm run test:frontend
|
||||
|
||||
# 运行后端测试
|
||||
pnpm run test:backend
|
||||
|
||||
# 运行所有测试
|
||||
pnpm run test
|
||||
```
|
||||
|
||||
### 测试规范
|
||||
|
||||
- 为新功能编写单元测试
|
||||
- 为 bug 修复编写回归测试
|
||||
- 确保测试覆盖主要功能和边缘情况
|
||||
|
||||
## 文档
|
||||
|
||||
### 文档更新
|
||||
|
||||
- 更新 API 文档以反映代码变更
|
||||
- 更新用户文档以反映功能变更
|
||||
- 确保文档与代码保持同步
|
||||
|
||||
### 文档规范
|
||||
|
||||
- 使用 Markdown 格式
|
||||
- 保持文档结构清晰
|
||||
- 提供详细的使用示例
|
||||
|
||||
## 问题报告
|
||||
|
||||
如果您发现了 bug 或有功能建议,请在 GitHub Issues 页面提交:
|
||||
|
||||
1. **搜索现有问题**:确保问题尚未被报告
|
||||
2. **创建新问题**:提供详细的问题描述
|
||||
3. **添加标签**:为问题添加适当的标签
|
||||
4. **提供复现步骤**:详细说明如何复现 bug
|
||||
5. **提供环境信息**:包括操作系统、Node.js 版本等
|
||||
|
||||
## 功能请求
|
||||
|
||||
如果您有新功能的想法,请在 GitHub Issues 页面提交功能请求:
|
||||
|
||||
1. **搜索现有请求**:确保功能尚未被请求
|
||||
2. **创建新请求**:提供详细的功能描述
|
||||
3. **添加标签**:为请求添加 `feature` 标签
|
||||
4. **说明功能价值**:解释该功能对用户的价值
|
||||
5. **提供实现建议**:如果有实现思路,欢迎分享
|
||||
|
||||
## 代码审查
|
||||
|
||||
### 审查流程
|
||||
|
||||
1. **接收 PR**:项目维护者接收 Pull Request
|
||||
2. **代码审查**:审查代码质量、风格和功能
|
||||
3. **提供反馈**:提出改进建议
|
||||
4. **修改代码**:根据反馈修改代码
|
||||
5. **合并 PR**:审查通过后合并代码
|
||||
|
||||
### 审查标准
|
||||
|
||||
- **代码质量**:代码是否清晰、高效
|
||||
- **功能完整性**:是否实现了所有需求
|
||||
- **测试覆盖**:是否有足够的测试
|
||||
- **文档更新**:是否更新了相关文档
|
||||
- **兼容性**:是否与现有代码兼容
|
||||
|
||||
## 发布流程
|
||||
|
||||
### 版本号规范
|
||||
|
||||
我们使用语义化版本号(Semantic Versioning):
|
||||
|
||||
```
|
||||
MAJOR.MINOR.PATCH
|
||||
```
|
||||
|
||||
- `MAJOR`:不兼容的 API 变更
|
||||
- `MINOR`:向后兼容的功能添加
|
||||
- `PATCH`:向后兼容的 bug 修复
|
||||
|
||||
### 发布步骤
|
||||
|
||||
1. **更新版本号**:在 `package.json` 和相关文件中更新版本号
|
||||
2. **更新 CHANGELOG**:记录版本变更内容
|
||||
3. **构建项目**:确保项目能够正常构建
|
||||
4. **运行测试**:确保所有测试通过
|
||||
5. **创建发布**:在 GitHub 上创建新的发布
|
||||
6. **部署**:部署到相关平台
|
||||
|
||||
## 行为准则
|
||||
|
||||
我们希望所有参与者能够遵循以下行为准则:
|
||||
|
||||
- **尊重他人**:尊重所有社区成员,无论其背景如何
|
||||
- **建设性沟通**:使用友好、建设性的语言进行沟通
|
||||
- **包容多样性**:欢迎不同背景和观点的贡献者
|
||||
- **专注于项目**:讨论应集中在项目相关的话题上
|
||||
- **解决冲突**:以积极的方式解决冲突
|
||||
|
||||
## 联系方式
|
||||
|
||||
如果您有任何问题或需要帮助,可以通过以下方式联系我们:
|
||||
|
||||
- **GitHub Issues**:用于问题报告和功能请求
|
||||
- **Discord**:用于实时讨论和社区交流
|
||||
- **Email**:用于重要事项的沟通
|
||||
|
||||
## 致谢
|
||||
|
||||
感谢所有为 DeEarthX-CE 项目做出贡献的开发者和社区成员!您的贡献是项目成功的关键。
|
||||
305
word/guide/developer.md
Normal file
305
word/guide/developer.md
Normal file
@@ -0,0 +1,305 @@
|
||||
# 开发者指南
|
||||
|
||||
## 概述
|
||||
|
||||
本指南旨在帮助开发者理解 DeEarthX-CE 项目的架构和开发流程,以便能够顺利地为项目做出贡献。
|
||||
|
||||
## 项目架构
|
||||
|
||||
DeEarthX-CE 采用前后端分离架构:
|
||||
|
||||
- **后端**:使用 TypeScript 开发,提供核心功能和 API
|
||||
- **前端**:使用 Vue 3 + Vite 开发,提供用户界面
|
||||
- **打包工具**:使用 Tauri 打包为桌面应用
|
||||
|
||||
## 目录结构
|
||||
|
||||
### 后端目录结构
|
||||
|
||||
```
|
||||
backend/
|
||||
├── src/
|
||||
│ ├── dearth/ # 核心功能模块
|
||||
│ │ ├── strategies/ # 模组过滤策略
|
||||
│ │ ├── utils/ # 工具函数
|
||||
│ │ ├── ModCheckService.ts # 模组检查服务
|
||||
│ │ ├── ModFilterService.ts # 模组过滤服务
|
||||
│ │ └── index.ts # 核心模块入口
|
||||
│ ├── modloader/ # 模组加载器相关功能
|
||||
│ ├── platform/ # 平台集成模块
|
||||
│ ├── template/ # 模板管理模块
|
||||
│ ├── utils/ # 通用工具函数
|
||||
│ ├── Dex.ts # 核心类
|
||||
│ ├── core.ts # 核心功能
|
||||
│ ├── galaxy.ts # Galaxy 模式功能
|
||||
│ └── main.ts # 主入口
|
||||
├── package.json # 后端依赖
|
||||
└── tsconfig.json # TypeScript 配置
|
||||
```
|
||||
|
||||
### 前端目录结构
|
||||
|
||||
```
|
||||
front/
|
||||
├── src/
|
||||
│ ├── components/ # 组件
|
||||
│ ├── views/ # 页面视图
|
||||
│ ├── utils/ # 工具函数
|
||||
│ ├── assets/ # 资源文件
|
||||
│ ├── App.vue # 根组件
|
||||
│ └── main.ts # 主入口
|
||||
├── lang/ # 语言文件
|
||||
├── public/ # 静态资源
|
||||
├── src-tauri/ # Tauri 配置
|
||||
├── package.json # 前端依赖
|
||||
└── vite.config.ts # Vite 配置
|
||||
```
|
||||
|
||||
## 开发环境设置
|
||||
|
||||
### 前提条件
|
||||
|
||||
- **Node.js**:v16.0+(推荐使用最新稳定版)
|
||||
- **pnpm**:v8.0+(包管理器)
|
||||
- **Rust**:最新稳定版(用于 Tauri 构建)
|
||||
- **Git**:用于版本控制
|
||||
|
||||
### 安装依赖
|
||||
|
||||
```bash
|
||||
# 安装项目依赖
|
||||
pnpm install
|
||||
|
||||
# 安装后端依赖
|
||||
cd backend
|
||||
pnpm install
|
||||
|
||||
# 安装前端依赖
|
||||
cd ../front
|
||||
pnpm install
|
||||
```
|
||||
|
||||
### 启动开发服务器
|
||||
|
||||
```bash
|
||||
# 启动前端开发服务器
|
||||
cd front
|
||||
pnpm run dev
|
||||
|
||||
# 启动后端开发服务器
|
||||
cd ../backend
|
||||
pnpm run dev
|
||||
```
|
||||
|
||||
## 核心模块开发
|
||||
|
||||
### 模组检查服务
|
||||
|
||||
`ModCheckService` 负责检查模组的有效性和兼容性:
|
||||
|
||||
- **主要功能**:检查模组文件、验证模组信息、检测兼容性
|
||||
- **关键方法**:
|
||||
- `checkMod()`:检查模组的基本信息
|
||||
- `checkModCompatibility()`:检查模组与游戏版本的兼容性
|
||||
|
||||
### 模组过滤服务
|
||||
|
||||
`ModFilterService` 负责根据不同策略过滤模组:
|
||||
|
||||
- **主要功能**:注册过滤策略、执行模组过滤
|
||||
- **关键方法**:
|
||||
- `filterMods()`:根据策略过滤模组
|
||||
- `registerFilterStrategy()`:注册新的过滤策略
|
||||
|
||||
### 模板管理服务
|
||||
|
||||
`TemplateManager` 负责模板的创建、管理和应用:
|
||||
|
||||
- **主要功能**:创建模板、应用模板、导出模板
|
||||
- **关键方法**:
|
||||
- `createTemplate()`:创建新模板
|
||||
- `applyTemplate()`:应用模板到指定目录
|
||||
- `exportTemplate()`:导出模板为文件
|
||||
|
||||
## 平台集成开发
|
||||
|
||||
### CurseForge 集成
|
||||
|
||||
- **功能**:与 CurseForge API 交互,搜索和下载模组
|
||||
- **关键方法**:
|
||||
- `searchMods()`:搜索模组
|
||||
- `getModDetails()`:获取模组详情
|
||||
- `downloadMod()`:下载模组文件
|
||||
|
||||
### Modrinth 集成
|
||||
|
||||
- **功能**:与 Modrinth API 交互,搜索和下载模组
|
||||
- **关键方法**:
|
||||
- `searchMods()`:搜索模组
|
||||
- `getModDetails()`:获取模组详情
|
||||
- `downloadMod()`:下载模组文件
|
||||
|
||||
## 前端开发
|
||||
|
||||
### 组件开发
|
||||
|
||||
- **组件结构**:使用 Vue 3 Composition API
|
||||
- **样式管理**:使用 Tailwind CSS
|
||||
- **状态管理**:使用 Vue 的响应式系统
|
||||
|
||||
### 页面开发
|
||||
|
||||
- **Main.vue**:主页面,包含模式选择
|
||||
- **DeEarthView.vue**:DeEarth 模式页面,用于模组管理
|
||||
- **GalaxyView.vue**:Galaxy 模式页面,用于模板管理
|
||||
- **SettingView.vue**:设置页面
|
||||
- **AboutView.vue**:关于页面
|
||||
|
||||
## API 开发
|
||||
|
||||
### 后端 API
|
||||
|
||||
- **RESTful API**:提供模组管理、模板管理等功能
|
||||
- **WebSocket API**:提供实时通信功能
|
||||
|
||||
### 前端 API 调用
|
||||
|
||||
- **HTTP 请求**:使用 axios 发送 API 请求
|
||||
- **WebSocket**:使用 WebSocketHandler 组件进行实时通信
|
||||
|
||||
## 测试
|
||||
|
||||
### 单元测试
|
||||
|
||||
```bash
|
||||
# 运行后端单元测试
|
||||
cd backend
|
||||
pnpm run test
|
||||
|
||||
# 运行前端单元测试
|
||||
cd ../front
|
||||
pnpm run test
|
||||
```
|
||||
|
||||
### 集成测试
|
||||
|
||||
- **API 测试**:测试后端 API 的功能
|
||||
- **端到端测试**:测试完整的用户流程
|
||||
|
||||
## 构建与部署
|
||||
|
||||
### 构建应用
|
||||
|
||||
```bash
|
||||
# 构建前端
|
||||
cd front
|
||||
pnpm run build
|
||||
|
||||
# 构建后端
|
||||
cd ../backend
|
||||
pnpm run build
|
||||
|
||||
# 构建桌面应用
|
||||
cd ..
|
||||
pnpm run tauri build
|
||||
```
|
||||
|
||||
### 部署
|
||||
|
||||
- **桌面应用**:分发构建后的安装包
|
||||
- **文档**:部署到 GitHub Pages 或其他静态网站托管服务
|
||||
|
||||
## 代码规范
|
||||
|
||||
### TypeScript 规范
|
||||
|
||||
- 使用 TypeScript 官方推荐的代码风格
|
||||
- 为所有函数和变量添加类型注解
|
||||
- 使用接口定义复杂类型
|
||||
|
||||
### Vue 规范
|
||||
|
||||
- 遵循 Vue 3 风格指南
|
||||
- 使用 Composition API
|
||||
- 组件命名使用 PascalCase
|
||||
|
||||
### Rust 规范
|
||||
|
||||
- 遵循 Rust 官方代码风格
|
||||
- 使用 `cargo fmt` 格式化代码
|
||||
- 为公共 API 添加文档注释
|
||||
|
||||
## 调试技巧
|
||||
|
||||
### 后端调试
|
||||
|
||||
- 使用 VS Code 的 TypeScript 调试功能
|
||||
- 查看日志输出
|
||||
- 使用 `console.log()` 或 `debugger` 语句
|
||||
|
||||
### 前端调试
|
||||
|
||||
- 使用浏览器的开发者工具
|
||||
- 查看控制台输出
|
||||
- 使用 Vue DevTools 扩展
|
||||
|
||||
### Tauri 调试
|
||||
|
||||
- 使用 `tauri dev` 启动开发模式
|
||||
- 查看 Tauri 日志
|
||||
- 使用 Rust 调试工具
|
||||
|
||||
## 常见问题
|
||||
|
||||
### 依赖冲突
|
||||
|
||||
- 检查 package.json 中的依赖版本
|
||||
- 使用 pnpm 管理依赖
|
||||
- 运行 `pnpm dedupe` 解决依赖冲突
|
||||
|
||||
### 构建失败
|
||||
|
||||
- 检查 Node.js 和 Rust 版本
|
||||
- 确保所有依赖都已正确安装
|
||||
- 查看构建日志获取详细错误信息
|
||||
|
||||
### API 调用失败
|
||||
|
||||
- 检查网络连接
|
||||
- 验证 API 端点是否正确
|
||||
- 查看服务器日志获取详细错误信息
|
||||
|
||||
## 贡献流程
|
||||
|
||||
1. ** Fork 仓库**:在 GitHub 上 fork 项目仓库
|
||||
2. **克隆仓库**:克隆 fork 后的仓库到本地
|
||||
3. **创建分支**:从 develop 分支创建新的功能分支
|
||||
4. **开发代码**:实现功能或修复 bug
|
||||
5. **运行测试**:确保代码通过所有测试
|
||||
6. **提交代码**:使用规范的提交信息
|
||||
7. **创建 PR**:向 develop 分支提交 Pull Request
|
||||
8. **代码审查**:等待项目维护者的代码审查
|
||||
9. **合并代码**:审查通过后,代码将被合并到 develop 分支
|
||||
|
||||
## 技术栈
|
||||
|
||||
- **后端**:TypeScript、Node.js
|
||||
- **前端**:Vue 3、Vite、Tailwind CSS
|
||||
- **打包**:Tauri
|
||||
- **测试**:Jest、Vitest
|
||||
- **版本控制**:Git
|
||||
- **包管理**:pnpm
|
||||
|
||||
## 学习资源
|
||||
|
||||
- **Vue 3 文档**:https://v3.vuejs.org/
|
||||
- **TypeScript 文档**:https://www.typescriptlang.org/docs/
|
||||
- **Tauri 文档**:https://tauri.studio/docs/
|
||||
- **Rust 文档**:https://doc.rust-lang.org/
|
||||
- **Tailwind CSS 文档**:https://tailwindcss.com/docs/
|
||||
|
||||
## 联系方式
|
||||
|
||||
- **GitHub Issues**:用于问题报告和功能请求
|
||||
- **Discord**:用于实时讨论和社区交流
|
||||
- **Email**:用于重要事项的沟通
|
||||
97
word/guide/faq.md
Normal file
97
word/guide/faq.md
Normal file
@@ -0,0 +1,97 @@
|
||||
# 常见问题
|
||||
|
||||
## 基本问题
|
||||
|
||||
### DeEarthX-CE 是什么?
|
||||
|
||||
DeEarthX-CE 是一个功能强大的 Minecraft 模组管理工具,旨在简化模组的安装、更新和管理流程。它支持多个模组平台,提供智能的模组过滤功能,并允许用户创建和管理模组包模板。
|
||||
|
||||
### DeEarthX-CE 支持哪些平台?
|
||||
|
||||
DeEarthX-CE 支持 Windows 10/11、macOS 10.15+ 和 Linux (Ubuntu 20.04+) 操作系统。
|
||||
|
||||
### DeEarthX-CE 是免费的吗?
|
||||
|
||||
是的,DeEarthX-CE 是一个开源项目,完全免费使用。
|
||||
|
||||
## 安装问题
|
||||
|
||||
### 安装过程中出现错误怎么办?
|
||||
|
||||
- 检查是否满足系统要求
|
||||
- 尝试以管理员身份运行安装程序
|
||||
- 查看安装日志获取详细错误信息
|
||||
- 访问 GitHub Issues 页面寻求帮助
|
||||
|
||||
### 安装后无法启动应用怎么办?
|
||||
|
||||
- 检查是否满足系统要求
|
||||
- 尝试以管理员身份运行
|
||||
- 查看应用日志获取详细错误信息
|
||||
- 重新安装应用
|
||||
|
||||
## 模组管理问题
|
||||
|
||||
### 如何添加模组?
|
||||
|
||||
1. 在左侧导航栏点击「模组管理」
|
||||
2. 点击「添加模组」按钮
|
||||
3. 选择模组来源(本地文件、CurseForge 或 Modrinth)
|
||||
4. 选择要安装的模组并点击「安装」
|
||||
|
||||
### 模组安装失败怎么办?
|
||||
|
||||
- 检查网络连接
|
||||
- 确认模组与当前游戏版本兼容
|
||||
- 检查模组是否需要特定的依赖
|
||||
- 查看应用日志获取详细错误信息
|
||||
|
||||
### 如何解决模组冲突?
|
||||
|
||||
1. 在左侧导航栏点击「高级工具」
|
||||
2. 点击「检测冲突」按钮
|
||||
3. 等待检测完成
|
||||
4. 查看检测结果并处理冲突:
|
||||
- 禁用冲突的模组
|
||||
- 更新模组到兼容版本
|
||||
- 寻找替代模组
|
||||
|
||||
## 模板管理问题
|
||||
|
||||
### 如何创建模板?
|
||||
|
||||
1. 在左侧导航栏点击「模板管理」
|
||||
2. 点击「创建模板」按钮
|
||||
3. 输入模板名称和描述
|
||||
4. 选择要包含的模组
|
||||
5. 点击「保存」完成创建
|
||||
|
||||
### 模板应用失败怎么办?
|
||||
|
||||
- 检查目标游戏目录权限
|
||||
- 确认模板与目标游戏版本兼容
|
||||
- 查看应用日志获取详细错误信息
|
||||
|
||||
## 其他问题
|
||||
|
||||
### 如何更改语言?
|
||||
|
||||
1. 在顶部导航栏点击「设置」
|
||||
2. 选择「语言」选项
|
||||
3. 从下拉菜单中选择要使用的语言
|
||||
4. 点击「保存」应用更改
|
||||
|
||||
### 如何更新 DeEarthX-CE?
|
||||
|
||||
- 自动更新:应用会定期检查更新并提示安装
|
||||
- 手动更新:访问 GitHub Releases 页面下载最新版本并安装
|
||||
|
||||
### 如何贡献代码?
|
||||
|
||||
请参考「贡献」部分的文档,了解如何参与项目开发。
|
||||
|
||||
### 遇到其他问题怎么办?
|
||||
|
||||
- 查看应用日志获取详细错误信息
|
||||
- 访问 GitHub Issues 页面提交问题
|
||||
- 加入社区 Discord 服务器寻求帮助
|
||||
82
word/guide/installation.md
Normal file
82
word/guide/installation.md
Normal file
@@ -0,0 +1,82 @@
|
||||
# 安装指南
|
||||
|
||||
## 系统要求
|
||||
|
||||
在安装 DeEarthX-CE 之前,请确保您的系统满足以下要求:
|
||||
|
||||
- **操作系统**:Windows
|
||||
- **内存**:至少 4GB RAM
|
||||
- **存储空间**:至少 1GB 可用空间
|
||||
- **Java**:开服模式需要 Java 环境(上传模式不需要)
|
||||
- **Node.js**:v16.0+(仅开发环境需要)
|
||||
- **Rust**:最新稳定版(仅开发环境需要)
|
||||
|
||||
## 安装方法
|
||||
|
||||
### 从安装包安装
|
||||
|
||||
1. 直接下载安装包
|
||||
2. 运行安装程序并按照提示完成安装
|
||||
3. 启动 DeEarthX-CE 应用
|
||||
|
||||
**注意**:建议不要安装在 C 盘,避免权限问题。
|
||||
|
||||
### 从源代码构建
|
||||
|
||||
如果您需要从源代码构建 DeEarthX-CE,请按照以下步骤操作:
|
||||
|
||||
1. **克隆仓库**
|
||||
```bash
|
||||
git clone https://github.com/yourusername/DeEarthX-CE.git
|
||||
cd DeEarthX-CE
|
||||
```
|
||||
|
||||
2. **安装依赖**
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
|
||||
3. **构建项目**
|
||||
```bash
|
||||
pnpm run build
|
||||
```
|
||||
|
||||
4. **启动开发服务器**(可选)
|
||||
```bash
|
||||
pnpm run dev
|
||||
```
|
||||
|
||||
5. **打包应用**
|
||||
```bash
|
||||
pnpm run tauri build
|
||||
```
|
||||
|
||||
## 首次启动
|
||||
|
||||
首次启动 DeEarthX-CE 时,您会直接进入主界面,可以开始使用以下功能:
|
||||
|
||||
1. 选择工作模式(开服模式或上传模式)
|
||||
2. 上传整合包文件
|
||||
3. 查看和管理模板
|
||||
|
||||
语言设置可以在设置页面中随时更改。
|
||||
|
||||
## 常见安装问题
|
||||
|
||||
### 无法启动应用
|
||||
|
||||
- 检查是否满足系统要求
|
||||
- 尝试以管理员身份运行
|
||||
- 查看应用日志获取详细错误信息
|
||||
|
||||
### 模组平台连接失败
|
||||
|
||||
- 检查网络连接
|
||||
- 确认防火墙未阻止应用访问网络
|
||||
- 尝试更新应用到最新版本
|
||||
|
||||
### 权限错误
|
||||
|
||||
- 确保应用有足够的权限访问 Minecraft 目录
|
||||
- 在 Windows 上尝试以管理员身份运行
|
||||
- 在 macOS 上检查应用权限设置
|
||||
40
word/guide/introduction.md
Normal file
40
word/guide/introduction.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# 项目介绍
|
||||
|
||||
## 什么是 DeEarthX-CE?
|
||||
|
||||
DeEarthX-CE 是一个功能强大的 Minecraft 整合包服务端制作工具,旨在简化客户端整合包到服务端的转换过程,同时提供模组管理和模板系统功能。
|
||||
|
||||
## 核心功能
|
||||
|
||||
- **整合包支持**:支持 CurseForge、Modrinth、MCBBS 等多个平台的整合包
|
||||
- **智能模组处理**:自动区分客户端和服务端模组,保留服务端需要的,剔除客户端专用的(光影、材质包等)
|
||||
- **双工作模式**:
|
||||
- 开服模式:下载服务端和模组加载器,完整生成服务端
|
||||
- 上传模式:只做模组筛选,不下载服务端文件
|
||||
- **多模组加载器支持**:支持 Forge、NeoForge、Fabric
|
||||
- **版本兼容**:支持 Minecraft 1.16.5 到最新版本
|
||||
- **模板管理**:
|
||||
- 创建、编辑、删除本地模板
|
||||
- 导入/导出模板
|
||||
- 模板商店,支持从远程下载模板
|
||||
- 智能下载速度测试,选择最快的下载链接
|
||||
- **多语言支持**:内置多种语言支持,满足不同地区用户的需求
|
||||
- **用户友好界面**:直观的图形界面,降低使用门槛
|
||||
|
||||
## 技术架构
|
||||
|
||||
DeEarthX-CE 采用前后端分离架构:
|
||||
|
||||
- **后端**:使用 TypeScript + Node.js 开发,Express 提供 Web 服务,WebSocket 实时通信,使用 Node.js SEA 打包为独立 exe
|
||||
- **前端**:使用 Vue 3 + TypeScript 开发,Tauri 2 桌面框架,Ant Design Vue UI 组件,Tailwind CSS 样式
|
||||
|
||||
## 适用场景
|
||||
|
||||
- 服务器管理员快速将客户端整合包转换为服务端
|
||||
- 模组开发者测试不同版本的模组兼容性
|
||||
- 模组包制作者创建和分享模组包
|
||||
- 普通玩家管理个人模组集合和模板
|
||||
|
||||
## 项目状态
|
||||
|
||||
DeEarthX-CE 目前处于积极开发阶段,欢迎社区贡献和反馈。
|
||||
743
word/guide/template-tutorial.md
Normal file
743
word/guide/template-tutorial.md
Normal file
@@ -0,0 +1,743 @@
|
||||
# 模板编写教程
|
||||
|
||||
## 什么是模板
|
||||
|
||||
模板是 DeEarthX-CE 中的一种功能,用于快速创建具有特定配置的服务器环境。模板可以包含预设的模组、配置文件、脚本和其他服务器文件,使您能够快速部署标准化的服务器设置,无需每次都手动配置。
|
||||
|
||||
### 模板的优势
|
||||
|
||||
- **快速部署**:使用模板可以在几分钟内搭建好一个完整的服务器环境
|
||||
- **标准化配置**:确保所有服务器都使用相同的配置,减少人为错误
|
||||
- **易于维护**:集中管理模板,更新模板后所有使用该模板的服务器都能受益
|
||||
- **便于分享**:可以轻松导出和分享模板,让其他人快速搭建相同的服务器环境
|
||||
|
||||
## 模板的详细结构
|
||||
|
||||
一个完整的模板包含以下结构:
|
||||
|
||||
```
|
||||
templates/
|
||||
└── template-name/ # 模板目录,名称应简洁明了
|
||||
├── metadata.json # 模板元数据文件
|
||||
└── data/ # 模板文件目录
|
||||
├── mods/ # 模组文件目录
|
||||
├── config/ # 配置文件目录
|
||||
├── scripts/ # 脚本文件目录
|
||||
├── plugins/ # 插件文件目录(如果使用 Bukkit/Spigot 等)
|
||||
├── server.properties # 服务器属性文件
|
||||
├── eula.txt # 最终用户许可协议
|
||||
├── README.txt # 模板说明文件
|
||||
└── ... # 其他服务器相关文件
|
||||
```
|
||||
|
||||
### metadata.json 文件详解
|
||||
|
||||
`metadata.json` 文件包含模板的基本信息,是模板的核心文件,必须存在且格式正确:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "生存服务器模板", # 模板名称,应反映模板的用途
|
||||
"version": "1.0.0", # 版本号,遵循语义化版本规范
|
||||
"description": "适用于生存模式的服务器模板,包含基础模组和优化配置", # 详细描述
|
||||
"author": "DeEarthX-CE", # 作者名称
|
||||
"created": "2026-03-09", # 创建日期,格式为 YYYY-MM-DD
|
||||
"type": "template" # 模板类型,固定为 "template"
|
||||
}
|
||||
```
|
||||
|
||||
**字段说明**:
|
||||
- `name`:模板的显示名称,会在 DeEarthX-CE 界面中显示
|
||||
- `version`:模板的版本号,建议遵循语义化版本规范(MAJOR.MINOR.PATCH)
|
||||
- `description`:模板的详细描述,应说明模板的用途、包含的内容和适用场景
|
||||
- `author`:模板的作者名称
|
||||
- `created`:模板的创建日期,格式为 YYYY-MM-DD
|
||||
- `type`:模板类型,固定为 "template",用于 DeEarthX-CE 识别
|
||||
|
||||
### data 目录详解
|
||||
|
||||
`data` 目录包含服务器的所有文件,是模板的核心内容:
|
||||
|
||||
#### 1. mods 目录
|
||||
|
||||
用于存放模组文件(.jar),根据服务器类型和版本放置相应的模组:
|
||||
|
||||
- **Fabric 服务器**:需要放置 fabric-api 和其他 Fabric 模组
|
||||
- **Forge 服务器**:需要放置 Forge 模组
|
||||
- **NeoForge 服务器**:需要放置 NeoForge 模组
|
||||
|
||||
#### 2. config 目录
|
||||
|
||||
用于存放配置文件,包括:
|
||||
|
||||
- 模组配置文件(.toml, .json, .cfg 等)
|
||||
- 服务器配置文件
|
||||
- 插件配置文件
|
||||
|
||||
#### 3. scripts 目录
|
||||
|
||||
用于存放启动脚本和其他脚本文件:
|
||||
|
||||
- `start.bat`:Windows 启动脚本
|
||||
- `start.sh`:Linux/Mac 启动脚本
|
||||
- 其他自定义脚本
|
||||
|
||||
#### 4. server.properties 文件
|
||||
|
||||
服务器的核心配置文件,包含服务器的基本设置:
|
||||
|
||||
```properties
|
||||
# 服务器基本设置
|
||||
server-name=DeEarthX Server
|
||||
motd=Welcome to DeEarthX Server!
|
||||
gamemode=survival
|
||||
difficulty=normal
|
||||
|
||||
# 服务器网络设置
|
||||
server-port=25565
|
||||
max-players=20
|
||||
|
||||
# 服务器功能设置
|
||||
spawn-protection=16
|
||||
enable-command-block=true
|
||||
pvp=true
|
||||
|
||||
# 世界设置
|
||||
level-name=world
|
||||
seed=
|
||||
generate-structures=true
|
||||
|
||||
# 性能设置
|
||||
view-distance=10
|
||||
max-build-height=256
|
||||
simulation-distance=10
|
||||
|
||||
# 其他设置
|
||||
enable-rcon=false
|
||||
rcon.password=
|
||||
```
|
||||
|
||||
#### 5. eula.txt 文件
|
||||
|
||||
最终用户许可协议,必须设置为 `eula=true` 才能启动服务器:
|
||||
|
||||
```
|
||||
eula=true
|
||||
```
|
||||
|
||||
#### 6. README.txt 文件
|
||||
|
||||
模板的说明文件,建议包含以下内容:
|
||||
|
||||
- 模板的用途和特点
|
||||
- 包含的模组和插件
|
||||
- 使用方法
|
||||
- 注意事项
|
||||
- 更新日志
|
||||
|
||||
## 创建模板的详细方法
|
||||
|
||||
### 方法一:通过 DeEarthX-CE 界面创建
|
||||
|
||||
1. **打开模板管理界面**:
|
||||
- 启动 DeEarthX-CE
|
||||
- 在左侧导航栏点击「模板管理」
|
||||
|
||||
2. **创建新模板**:
|
||||
- 点击「创建模板」按钮
|
||||
- 在弹出的对话框中填写模板信息:
|
||||
- **模板名称**:输入一个简洁明了的名称
|
||||
- **版本号**:输入初始版本号,如 "1.0.0"
|
||||
- **描述**:输入详细的模板描述
|
||||
- **作者**:输入您的名称
|
||||
- 点击「确认」按钮
|
||||
|
||||
3. **编辑模板内容**:
|
||||
- 模板创建完成后,在模板列表中找到新创建的模板
|
||||
- 点击「打开文件夹」按钮
|
||||
- 在打开的文件夹中,将您的服务器文件复制到 `data` 目录
|
||||
- 确保目录结构正确,包含所有必要的文件
|
||||
|
||||
4. **验证模板**:
|
||||
- 关闭文件夹,返回 DeEarthX-CE 界面
|
||||
- 刷新模板列表,确保新模板显示正确
|
||||
- 点击「编辑」按钮,确认模板信息无误
|
||||
|
||||
### 方法二:手动创建模板
|
||||
|
||||
1. **定位 templates 目录**:
|
||||
- 打开文件浏览器
|
||||
- 导航到 DeEarthX-CE 的安装目录
|
||||
- 找到 `templates` 文件夹
|
||||
|
||||
2. **创建模板目录**:
|
||||
- 在 `templates` 目录中创建一个新文件夹,命名为您的模板名称
|
||||
- 文件夹名称应简洁明了,避免使用特殊字符
|
||||
|
||||
3. **创建 metadata.json 文件**:
|
||||
- 在模板目录中创建 `metadata.json` 文件
|
||||
- 填写模板信息,确保格式正确
|
||||
- 保存文件
|
||||
|
||||
4. **创建 data 目录**:
|
||||
- 在模板目录中创建 `data` 目录
|
||||
- 在 `data` 目录中创建必要的子目录(如 `mods`, `config` 等)
|
||||
|
||||
5. **添加服务器文件**:
|
||||
- 将您的服务器文件复制到相应的目录中
|
||||
- 确保包含所有必要的文件,如 `server.properties`, `eula.txt` 等
|
||||
|
||||
6. **验证模板**:
|
||||
- 重启 DeEarthX-CE
|
||||
- 打开模板管理界面,确保新模板显示在列表中
|
||||
- 检查模板信息和文件结构是否正确
|
||||
|
||||
## 编辑模板的详细步骤
|
||||
|
||||
### 修改模板信息
|
||||
|
||||
1. **打开模板管理界面**:
|
||||
- 在左侧导航栏点击「模板管理」
|
||||
|
||||
2. **选择要编辑的模板**:
|
||||
- 在模板列表中找到要编辑的模板
|
||||
- 点击模板卡片
|
||||
|
||||
3. **修改模板信息**:
|
||||
- 点击「编辑」按钮
|
||||
- 在弹出的对话框中修改模板信息:
|
||||
- 可以修改名称、版本号、描述和作者
|
||||
- 点击「保存」按钮应用更改
|
||||
|
||||
### 修改模板文件
|
||||
|
||||
1. **打开模板文件夹**:
|
||||
- 在模板管理界面中找到要编辑的模板
|
||||
- 点击「打开文件夹」按钮
|
||||
|
||||
2. **修改文件**:
|
||||
- 在打开的文件夹中,修改 `data` 目录中的文件
|
||||
- 可以添加、删除或修改任何文件
|
||||
|
||||
3. **保存更改**:
|
||||
- 保存所有修改的文件
|
||||
- 关闭文件夹
|
||||
|
||||
4. **验证更改**:
|
||||
- 返回 DeEarthX-CE 界面
|
||||
- 刷新模板列表
|
||||
- 确认模板文件已更新
|
||||
|
||||
## 模板最佳实践
|
||||
|
||||
### 命名规范
|
||||
|
||||
- **模板名称**:应简洁明了,反映模板的用途,如 "生存服务器模板"、"模组包服务器模板"
|
||||
- **版本号**:应遵循语义化版本规范(MAJOR.MINOR.PATCH):
|
||||
- MAJOR:重大更改,不兼容的 API 变更
|
||||
- MINOR:功能性新增,向后兼容
|
||||
- PATCH:bug 修复,向后兼容
|
||||
- **目录名称**:应使用小写字母,单词之间用连字符或下划线分隔,如 "survival-server"、"modpack-server"
|
||||
|
||||
### 文件组织
|
||||
|
||||
- **保持目录结构一致**:遵循标准 Minecraft 服务器目录结构
|
||||
- **分类存放文件**:
|
||||
- 模组文件放在 `data/mods` 目录
|
||||
- 配置文件放在 `data/config` 目录
|
||||
- 脚本文件放在 `data/scripts` 目录
|
||||
- 插件文件放在 `data/plugins` 目录(如果使用 Bukkit/Spigot 等)
|
||||
- **使用子目录**:对于复杂的模板,可以在 `config` 目录中为不同的模组创建子目录
|
||||
|
||||
### 内容建议
|
||||
|
||||
- **包含必要的文件**:
|
||||
- `server.properties`:服务器基本配置
|
||||
- `eula.txt`:设置为 `eula=true`
|
||||
- `README.txt`:模板说明
|
||||
- 必要的模组和插件
|
||||
- 启动脚本(`start.bat` 和 `start.sh`)
|
||||
|
||||
- **模组管理**:
|
||||
- 选择稳定版本的模组
|
||||
- 确保模组之间兼容
|
||||
- 包含模组的依赖项
|
||||
- 定期更新模组版本
|
||||
|
||||
- **配置优化**:
|
||||
- 优化服务器性能配置
|
||||
- 根据服务器类型和规模调整配置参数
|
||||
- 提供合理的默认配置
|
||||
|
||||
- **文档完善**:
|
||||
- 在 `README.txt` 中详细说明模板的使用方法
|
||||
- 列出模板包含的模组和插件
|
||||
- 提供故障排除指南
|
||||
- 记录更新日志
|
||||
|
||||
### 测试建议
|
||||
|
||||
- **本地测试**:在本地环境中测试模板,确保服务器能够正常启动
|
||||
- **功能测试**:测试模板中的所有功能,确保模组和插件正常工作
|
||||
- **性能测试**:测试服务器在不同负载下的性能
|
||||
- **兼容性测试**:测试模板与不同版本的 Minecraft 客户端的兼容性
|
||||
|
||||
## 详细模板示例
|
||||
|
||||
### 示例一:基础生存服务器模板
|
||||
|
||||
```
|
||||
templates/
|
||||
basic-survival-server/
|
||||
├── metadata.json
|
||||
└── data/
|
||||
├── mods/
|
||||
│ ├── fabric-api-0.90.4+1.20.1.jar # Fabric API
|
||||
│ ├── lithium-0.11.2.jar # 性能优化模组
|
||||
│ ├── phosphor-0.8.2+1.20.1.jar # 照明优化
|
||||
│ └── sodium-0.4.10+build.27.jar # 渲染优化
|
||||
├── config/
|
||||
│ ├── lithium.toml # Lithium 配置
|
||||
│ └── sodium-options.json # Sodium 配置
|
||||
├── scripts/
|
||||
│ ├── start.bat # Windows 启动脚本
|
||||
│ └── start.sh # Linux/Mac 启动脚本
|
||||
├── server.properties # 服务器配置
|
||||
├── eula.txt # 最终用户许可协议
|
||||
└── README.txt # 模板说明
|
||||
```
|
||||
|
||||
**metadata.json**:
|
||||
```json
|
||||
{
|
||||
"name": "基础生存服务器模板",
|
||||
"version": "1.0.0",
|
||||
"description": "适用于生存模式的基础服务器模板,包含性能优化模组和基本配置",
|
||||
"author": "DeEarthX-CE",
|
||||
"created": "2026-03-09",
|
||||
"type": "template"
|
||||
}
|
||||
```
|
||||
|
||||
**README.txt**:
|
||||
```
|
||||
# 基础生存服务器模板
|
||||
|
||||
## 模板说明
|
||||
|
||||
这是一个适用于 Minecraft 1.20.1 版本的基础生存服务器模板,包含以下内容:
|
||||
|
||||
### 包含的模组
|
||||
- Fabric API 0.90.4+1.20.1
|
||||
- Lithium 0.11.2 (性能优化)
|
||||
- Phosphor 0.8.2+1.20.1 (照明优化)
|
||||
- Sodium 0.4.10+build.27 (渲染优化)
|
||||
|
||||
### 使用方法
|
||||
1. 使用 DeEarthX-CE 应用此模板
|
||||
2. 运行 start.bat (Windows) 或 start.sh (Linux/Mac) 启动服务器
|
||||
3. 首次启动会生成世界文件
|
||||
4. 服务器默认端口:25565
|
||||
|
||||
### 配置说明
|
||||
- 服务器模式:生存
|
||||
- 难度:普通
|
||||
- 最大玩家数:20
|
||||
- 查看距离:10
|
||||
- 模拟距离:10
|
||||
|
||||
### 注意事项
|
||||
- 确保已安装 Java 17 或更高版本
|
||||
- 首次启动服务器时会自动生成世界文件
|
||||
- 如需修改服务器配置,请编辑 server.properties 文件
|
||||
|
||||
### 更新日志
|
||||
- v1.0.0:初始版本
|
||||
```
|
||||
|
||||
### 示例二:模组包服务器模板
|
||||
|
||||
```
|
||||
templates/
|
||||
modpack-server/
|
||||
├── metadata.json
|
||||
└── data/
|
||||
├── mods/
|
||||
│ ├── fabric-api-0.90.4+1.20.1.jar # Fabric API
|
||||
│ ├── lithium-0.11.2.jar # 性能优化
|
||||
│ ├── sodium-0.4.10+build.27.jar # 渲染优化
|
||||
│ ├── iris-1.6.4.jar # 光影支持
|
||||
│ ├── create-0.5.1.f.jar # Create 模组
|
||||
│ ├── immersive-engineering-1.20.1-10.2.1-177.jar # 沉浸工程
|
||||
│ └── thermal-foundation-1.20.1-11.1.0.38.jar # 热力基础
|
||||
├── config/
|
||||
│ ├── create.toml # Create 配置
|
||||
│ ├── immersiveengineering.cfg # 沉浸工程配置
|
||||
│ ├── thermalfoundation-common.toml # 热力基础配置
|
||||
│ └── sodium-options.json # Sodium 配置
|
||||
├── scripts/
|
||||
│ ├── start.bat # Windows 启动脚本
|
||||
│ └── start.sh # Linux/Mac 启动脚本
|
||||
├── server.properties # 服务器配置
|
||||
├── eula.txt # 最终用户许可协议
|
||||
└── README.txt # 模板说明
|
||||
```
|
||||
|
||||
**metadata.json**:
|
||||
```json
|
||||
{
|
||||
"name": "模组包服务器模板",
|
||||
"version": "1.0.0",
|
||||
"description": "包含 Create、沉浸工程和热力系列模组的服务器模板,适用于科技向玩法",
|
||||
"author": "DeEarthX-CE",
|
||||
"created": "2026-03-09",
|
||||
"type": "template"
|
||||
}
|
||||
```
|
||||
|
||||
**README.txt**:
|
||||
```
|
||||
# 模组包服务器模板
|
||||
|
||||
## 模板说明
|
||||
|
||||
这是一个适用于 Minecraft 1.20.1 版本的模组包服务器模板,包含以下内容:
|
||||
|
||||
### 包含的模组
|
||||
- Fabric API 0.90.4+1.20.1
|
||||
- Lithium 0.11.2 (性能优化)
|
||||
- Sodium 0.4.10+build.27 (渲染优化)
|
||||
- Iris 1.6.4 (光影支持)
|
||||
- Create 0.5.1.f (机械mod)
|
||||
- Immersive Engineering 1.20.1-10.2.1-177 (工业mod)
|
||||
- Thermal Foundation 1.20.1-11.1.0.38 (热力系列)
|
||||
|
||||
### 使用方法
|
||||
1. 使用 DeEarthX-CE 应用此模板
|
||||
2. 运行 start.bat (Windows) 或 start.sh (Linux/Mac) 启动服务器
|
||||
3. 首次启动会生成世界文件和配置文件
|
||||
4. 服务器默认端口:25565
|
||||
|
||||
### 配置说明
|
||||
- 服务器模式:生存
|
||||
- 难度:普通
|
||||
- 最大玩家数:30
|
||||
- 查看距离:12
|
||||
- 模拟距离:10
|
||||
|
||||
### 注意事项
|
||||
- 确保已安装 Java 17 或更高版本
|
||||
- 首次启动服务器时会自动生成世界文件和配置文件
|
||||
- 如需修改服务器配置,请编辑 server.properties 文件
|
||||
- 如需修改模组配置,请编辑 config 目录中的相应文件
|
||||
|
||||
### 推荐客户端模组
|
||||
- Fabric API
|
||||
- Sodium
|
||||
- Iris
|
||||
- Create
|
||||
- Immersive Engineering
|
||||
- Thermal Foundation
|
||||
|
||||
### 更新日志
|
||||
- v1.0.0:初始版本
|
||||
```
|
||||
|
||||
### 示例三: Bukkit/Spigot 服务器模板
|
||||
|
||||
```
|
||||
templates/
|
||||
bukkit-server/
|
||||
├── metadata.json
|
||||
└── data/
|
||||
├── plugins/
|
||||
│ ├── EssentialsX-2.20.1.jar # 基础插件
|
||||
│ ├── LuckPerms-5.4.108.jar # 权限管理
|
||||
│ ├── WorldEdit-7.2.14.jar # 世界编辑
|
||||
│ └── WorldGuard-7.0.9.jar # 世界保护
|
||||
├── config/
|
||||
│ ├── Essentials/ # Essentials 配置
|
||||
│ ├── LuckPerms/ # LuckPerms 配置
|
||||
│ └── WorldGuard/ # WorldGuard 配置
|
||||
├── scripts/
|
||||
│ ├── start.bat # Windows 启动脚本
|
||||
│ └── start.sh # Linux/Mac 启动脚本
|
||||
├── server.properties # 服务器配置
|
||||
├── eula.txt # 最终用户许可协议
|
||||
└── README.txt # 模板说明
|
||||
```
|
||||
|
||||
**metadata.json**:
|
||||
```json
|
||||
{
|
||||
"name": "Bukkit服务器模板",
|
||||
"version": "1.0.0",
|
||||
"description": "包含基础插件的 Bukkit/Spigot 服务器模板,适用于生存和创造模式",
|
||||
"author": "DeEarthX-CE",
|
||||
"created": "2026-03-09",
|
||||
"type": "template"
|
||||
}
|
||||
```
|
||||
|
||||
**README.txt**:
|
||||
```
|
||||
# Bukkit服务器模板
|
||||
|
||||
## 模板说明
|
||||
|
||||
这是一个适用于 Minecraft 1.20.1 版本的 Bukkit/Spigot 服务器模板,包含以下内容:
|
||||
|
||||
### 包含的插件
|
||||
- EssentialsX 2.20.1 (基础插件)
|
||||
- LuckPerms 5.4.108 (权限管理)
|
||||
- WorldEdit 7.2.14 (世界编辑)
|
||||
- WorldGuard 7.0.9 (世界保护)
|
||||
|
||||
### 使用方法
|
||||
1. 使用 DeEarthX-CE 应用此模板
|
||||
2. 运行 start.bat (Windows) 或 start.sh (Linux/Mac) 启动服务器
|
||||
3. 首次启动会生成世界文件和配置文件
|
||||
4. 服务器默认端口:25565
|
||||
|
||||
### 配置说明
|
||||
- 服务器模式:生存
|
||||
- 难度:普通
|
||||
- 最大玩家数:50
|
||||
- 查看距离:10
|
||||
- 模拟距离:10
|
||||
|
||||
### 注意事项
|
||||
- 确保已安装 Java 17 或更高版本
|
||||
- 首次启动服务器时会自动生成世界文件和配置文件
|
||||
- 如需修改服务器配置,请编辑 server.properties 文件
|
||||
- 如需修改插件配置,请编辑 config 目录中的相应文件
|
||||
|
||||
### 插件说明
|
||||
- EssentialsX:提供基础命令和功能
|
||||
- LuckPerms:管理用户权限
|
||||
- WorldEdit:用于编辑世界
|
||||
- WorldGuard:保护世界区域
|
||||
|
||||
### 更新日志
|
||||
- v1.0.0:初始版本
|
||||
```
|
||||
|
||||
## 常见问题详细解答
|
||||
|
||||
### 模板不显示在列表中
|
||||
|
||||
**可能原因**:
|
||||
- `metadata.json` 文件格式错误
|
||||
- 模板目录结构不符合要求
|
||||
- DeEarthX-CE 未正确加载模板
|
||||
|
||||
**解决方案**:
|
||||
1. **检查 metadata.json 文件**:
|
||||
- 确保文件格式正确,使用有效的 JSON 格式
|
||||
- 确保包含所有必要的字段:name, version, description, author, created, type
|
||||
- 确保字段值格式正确,特别是 created 字段的日期格式
|
||||
|
||||
2. **检查目录结构**:
|
||||
- 确保模板目录包含 metadata.json 文件
|
||||
- 确保模板目录包含 data 子目录
|
||||
- 确保 data 目录结构符合要求
|
||||
|
||||
3. **重启 DeEarthX-CE**:
|
||||
- 关闭 DeEarthX-CE
|
||||
- 重新启动 DeEarthX-CE
|
||||
- 打开模板管理界面,查看模板是否显示
|
||||
|
||||
4. **检查文件权限**:
|
||||
- 确保模板目录和文件具有正确的权限
|
||||
- 确保 DeEarthX-CE 可以读取模板文件
|
||||
|
||||
### 应用模板失败
|
||||
|
||||
**可能原因**:
|
||||
- 模板中的文件不完整
|
||||
- 模板中的模组版本与服务器版本不兼容
|
||||
- 服务器目录权限不足
|
||||
- 磁盘空间不足
|
||||
|
||||
**解决方案**:
|
||||
1. **检查模板文件**:
|
||||
- 确保模板包含所有必要的文件
|
||||
- 确保文件路径正确
|
||||
- 确保文件内容完整
|
||||
|
||||
2. **检查模组兼容性**:
|
||||
- 确保模板中的模组版本与服务器版本兼容
|
||||
- 确保模组之间相互兼容
|
||||
- 确保包含所有必要的依赖模组
|
||||
|
||||
3. **检查服务器目录**:
|
||||
- 确保服务器目录存在
|
||||
- 确保服务器目录具有写入权限
|
||||
- 确保磁盘空间充足
|
||||
|
||||
4. **查看错误日志**:
|
||||
- 查看 DeEarthX-CE 的日志文件
|
||||
- 查看服务器启动日志
|
||||
- 根据错误信息进行排查
|
||||
|
||||
### 如何分享模板
|
||||
|
||||
**步骤**:
|
||||
1. **导出模板**:
|
||||
- 在模板管理界面选择要分享的模板
|
||||
- 点击「导出模板」按钮
|
||||
- 选择保存位置
|
||||
- 等待导出完成
|
||||
|
||||
2. **分享模板**:
|
||||
- 将导出的文件发送给其他用户
|
||||
- 可以通过邮件、云存储或其他方式分享
|
||||
|
||||
3. **导入模板**:
|
||||
- 其他用户打开 DeEarthX-CE
|
||||
- 点击「导入模板」按钮
|
||||
- 选择导出的模板文件
|
||||
- 等待导入完成
|
||||
- 模板将显示在模板列表中
|
||||
|
||||
### 如何更新模板
|
||||
|
||||
**步骤**:
|
||||
1. **修改模板**:
|
||||
- 编辑模板信息(名称、版本号、描述等)
|
||||
- 修改模板文件(添加、删除或更新文件)
|
||||
|
||||
2. **更新版本号**:
|
||||
- 根据修改的程度更新版本号:
|
||||
- 小修改(如配置调整):更新 PATCH 版本(如 1.0.1)
|
||||
- 功能性修改(如添加模组):更新 MINOR 版本(如 1.1.0)
|
||||
- 重大修改(如更改服务器类型):更新 MAJOR 版本(如 2.0.0)
|
||||
|
||||
3. **测试更新**:
|
||||
- 在本地环境中测试更新后的模板
|
||||
- 确保服务器能够正常启动
|
||||
- 确保所有功能正常工作
|
||||
|
||||
4. **分享更新**:
|
||||
- 导出更新后的模板
|
||||
- 分享给其他用户
|
||||
- 提供更新日志,说明更改内容
|
||||
|
||||
### 如何优化模板性能
|
||||
|
||||
**优化建议**:
|
||||
1. **模组选择**:
|
||||
- 选择性能友好的模组
|
||||
- 避免使用过多的模组
|
||||
- 定期更新模组到最新版本
|
||||
|
||||
2. **服务器配置**:
|
||||
- 调整 server.properties 中的性能参数
|
||||
- 合理设置 view-distance 和 simulation-distance
|
||||
- 启用适当的世界生成设置
|
||||
|
||||
3. **JVM 配置**:
|
||||
- 在启动脚本中添加适当的 JVM 参数
|
||||
- 根据服务器硬件配置调整内存分配
|
||||
- 使用垃圾收集器优化参数
|
||||
|
||||
4. **世界管理**:
|
||||
- 定期清理未使用的区块
|
||||
- 限制世界大小
|
||||
- 使用世界预生成工具
|
||||
|
||||
## 模板使用场景
|
||||
|
||||
### 场景一:快速部署服务器
|
||||
|
||||
**适用情况**:
|
||||
- 需要快速搭建一个标准服务器
|
||||
- 避免手动配置的繁琐过程
|
||||
- 确保服务器配置一致
|
||||
|
||||
**使用方法**:
|
||||
1. 选择适合的模板
|
||||
2. 应用模板到目标目录
|
||||
3. 启动服务器
|
||||
|
||||
### 场景二:标准化服务器配置
|
||||
|
||||
**适用情况**:
|
||||
- 管理多个服务器
|
||||
- 确保所有服务器使用相同的配置
|
||||
- 简化服务器维护
|
||||
|
||||
**使用方法**:
|
||||
1. 创建一个标准模板
|
||||
2. 应用模板到所有服务器
|
||||
3. 更新模板后,重新应用到所有服务器
|
||||
|
||||
### 场景三:分享服务器配置
|
||||
|
||||
**适用情况**:
|
||||
- 与朋友分享服务器设置
|
||||
- 发布服务器配置方案
|
||||
- 备份服务器配置
|
||||
|
||||
**使用方法**:
|
||||
1. 创建并测试模板
|
||||
2. 导出模板
|
||||
3. 分享给其他用户
|
||||
|
||||
### 场景四:测试新模组
|
||||
|
||||
**适用情况**:
|
||||
- 测试新模组的兼容性
|
||||
- 测试模组的性能影响
|
||||
- 测试模组的功能
|
||||
|
||||
**使用方法**:
|
||||
1. 创建一个测试模板
|
||||
2. 添加要测试的模组
|
||||
3. 应用模板并启动服务器
|
||||
4. 测试模组功能
|
||||
|
||||
## 模板商店
|
||||
|
||||
### 什么是模板商店
|
||||
|
||||
模板商店是 DeEarthX-CE 提供的一个功能,允许用户浏览、下载和安装由社区或官方提供的预设模板。这些模板经过精心配置,可以直接应用于您的服务器。
|
||||
|
||||
### 访问模板商店
|
||||
|
||||
1. **打开模板管理界面**:
|
||||
- 在导航栏点击「模板管理」
|
||||
- 切换到「模板商店」标签页
|
||||
|
||||
2. **浏览模板**:
|
||||
- 查看可用的模板列表
|
||||
- 每个模板显示名称、大小和描述
|
||||
|
||||
3. **安装模板**:
|
||||
- 点击模板卡片上的「安装」按钮
|
||||
- 系统会自动测试多个下载链接的速度
|
||||
- 选择最快的链接进行下载
|
||||
- 等待下载和安装完成
|
||||
- 安装的模板会出现在本地模板列表中
|
||||
|
||||
### 模板商店的优势
|
||||
|
||||
- **快速获取优质模板**:无需手动创建,直接使用社区或官方提供的模板
|
||||
- **智能下载**:自动测试下载链接速度,选择最快的链接
|
||||
- **定期更新**:模板商店中的模板会定期更新,确保兼容性和安全性
|
||||
- **多样化选择**:提供不同类型和用途的模板,满足各种需求
|
||||
|
||||
## 总结
|
||||
|
||||
模板是 DeEarthX-CE 中非常强大的功能,可以帮助您快速部署标准化的服务器环境。通过本教程,您应该已经了解了:
|
||||
|
||||
- 模板的基本概念和优势
|
||||
- 模板的详细结构和文件格式
|
||||
- 创建模板的两种方法(通过界面和手动)
|
||||
- 编辑模板的详细步骤
|
||||
- 模板的最佳实践和命名规范
|
||||
- 详细的模板示例
|
||||
- 常见问题的解决方案
|
||||
- 模板的使用场景
|
||||
- 模板商店的使用方法和优势
|
||||
|
||||
如果您有任何问题或需要进一步的帮助,请参考常见问题部分或联系技术支持。祝您使用 DeEarthX-CE 创建和管理模板愉快!
|
||||
84
word/guide/usage.md
Normal file
84
word/guide/usage.md
Normal file
@@ -0,0 +1,84 @@
|
||||
# 使用教程
|
||||
|
||||
## 基本操作
|
||||
|
||||
### 启动应用
|
||||
|
||||
1. 双击桌面图标或从开始菜单启动 DeEarthX-CE
|
||||
2. 等待应用加载完成
|
||||
3. 进入主界面
|
||||
|
||||
### 界面介绍
|
||||
|
||||
DeEarthX-CE 主界面包含以下主要部分:
|
||||
|
||||
- **顶部导航栏**:包含不同功能模块的切换按钮
|
||||
- **主内容区**:显示当前功能的详细内容
|
||||
|
||||
## 整合包转换
|
||||
|
||||
### 开服模式
|
||||
|
||||
1. 在主界面选择「开服模式」
|
||||
2. 上传整合包文件
|
||||
3. 等待系统自动处理:
|
||||
- 分析整合包内容
|
||||
- 区分客户端和服务端模组
|
||||
- 下载服务端文件和模组加载器
|
||||
- 生成完整的服务端
|
||||
4. 下载生成的服务端文件
|
||||
|
||||
### 上传模式
|
||||
|
||||
1. 在主界面选择「上传模式」
|
||||
2. 上传整合包文件
|
||||
3. 等待系统自动处理:
|
||||
- 分析整合包内容
|
||||
- 区分客户端和服务端模组
|
||||
4. 下载筛选后的服务端文件
|
||||
|
||||
## 模板管理
|
||||
|
||||
### 本地模板管理
|
||||
|
||||
1. 在导航栏点击「模板管理」
|
||||
2. 在「本地模板」标签页中:
|
||||
- **创建模板**:点击「创建模板」按钮,输入模板名称、版本、描述和作者
|
||||
- **编辑模板**:选择模板,点击「编辑」按钮修改模板信息
|
||||
- **删除模板**:选择模板,点击「删除」按钮移除模板
|
||||
- **导出模板**:选择模板,点击「导出」按钮下载模板文件
|
||||
- **打开模板文件夹**:选择模板,点击「打开文件夹」按钮查看模板文件
|
||||
|
||||
### 导入模板
|
||||
|
||||
1. 在模板管理页面点击「导入模板」按钮
|
||||
2. 选择模板文件(.zip格式)
|
||||
3. 等待导入完成
|
||||
4. 导入的模板会出现在本地模板列表中
|
||||
|
||||
### 模板商店
|
||||
|
||||
1. 在模板管理页面切换到「模板商店」标签页
|
||||
2. 浏览可用的模板
|
||||
3. 点击模板卡片上的「安装」按钮
|
||||
4. 系统会自动测试下载链接速度并选择最快的链接
|
||||
5. 等待下载和安装完成
|
||||
6. 安装的模板会出现在本地模板列表中
|
||||
|
||||
## 多语言设置
|
||||
|
||||
1. 在导航栏点击「设置」
|
||||
2. 从语言下拉菜单中选择要使用的语言
|
||||
3. 系统会立即应用语言更改
|
||||
|
||||
## 高级功能
|
||||
|
||||
### 下载速度测试
|
||||
|
||||
- 当从模板商店下载模板时,系统会自动测试多个下载链接的速度
|
||||
- 选择最快的链接进行下载,确保下载速度最优
|
||||
|
||||
### 实时进度显示
|
||||
|
||||
- 所有操作(上传、处理、下载)都有实时进度显示
|
||||
- 可以查看当前操作的详细进度和状态
|
||||
33
word/index.md
Normal file
33
word/index.md
Normal file
@@ -0,0 +1,33 @@
|
||||
---
|
||||
# https://vitepress.dev/reference/default-theme-home-page
|
||||
layout: home
|
||||
|
||||
hero:
|
||||
name: "DeEarthX-CE"
|
||||
text: "Minecraft 整合包服务端制作工具"
|
||||
tagline: 简单、高效的 Minecraft 整合包到服务端转换解决方案
|
||||
actions:
|
||||
- theme: brand
|
||||
text: 开始使用
|
||||
link: /guide/introduction
|
||||
- theme: alt
|
||||
text: API 文档
|
||||
link: /api/core
|
||||
|
||||
features:
|
||||
- title: 多平台支持
|
||||
details: 支持 CurseForge、Modrinth、MCBBS 等多个模组平台
|
||||
- title: 智能模组处理
|
||||
details: 自动区分客户端和服务端模组,保留服务端需要的
|
||||
- title: 双工作模式
|
||||
details: 开服模式(完整生成服务端)和上传模式(仅筛选模组)
|
||||
- title: 多加载器支持
|
||||
details: 支持 Forge、NeoForge、Fabric 模组加载器
|
||||
- title: 模板管理
|
||||
details: 创建、编辑、导入/导出模板,支持模板商店
|
||||
- title: 智能下载
|
||||
details: 自动测试下载链接速度,选择最快的链接
|
||||
- title: 多语言支持
|
||||
details: 支持中文、英文等多种语言
|
||||
---
|
||||
|
||||
85
word/markdown-examples.md
Normal file
85
word/markdown-examples.md
Normal file
@@ -0,0 +1,85 @@
|
||||
# Markdown Extension Examples
|
||||
|
||||
This page demonstrates some of the built-in markdown extensions provided by VitePress.
|
||||
|
||||
## Syntax Highlighting
|
||||
|
||||
VitePress provides Syntax Highlighting powered by [Shiki](https://github.com/shikijs/shiki), with additional features like line-highlighting:
|
||||
|
||||
**Input**
|
||||
|
||||
````md
|
||||
```js{4}
|
||||
export default {
|
||||
data () {
|
||||
return {
|
||||
msg: 'Highlighted!'
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
````
|
||||
|
||||
**Output**
|
||||
|
||||
```js{4}
|
||||
export default {
|
||||
data () {
|
||||
return {
|
||||
msg: 'Highlighted!'
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Custom Containers
|
||||
|
||||
**Input**
|
||||
|
||||
```md
|
||||
::: info
|
||||
This is an info box.
|
||||
:::
|
||||
|
||||
::: tip
|
||||
This is a tip.
|
||||
:::
|
||||
|
||||
::: warning
|
||||
This is a warning.
|
||||
:::
|
||||
|
||||
::: danger
|
||||
This is a dangerous warning.
|
||||
:::
|
||||
|
||||
::: details
|
||||
This is a details block.
|
||||
:::
|
||||
```
|
||||
|
||||
**Output**
|
||||
|
||||
::: info
|
||||
This is an info box.
|
||||
:::
|
||||
|
||||
::: tip
|
||||
This is a tip.
|
||||
:::
|
||||
|
||||
::: warning
|
||||
This is a warning.
|
||||
:::
|
||||
|
||||
::: danger
|
||||
This is a dangerous warning.
|
||||
:::
|
||||
|
||||
::: details
|
||||
This is a details block.
|
||||
:::
|
||||
|
||||
## More
|
||||
|
||||
Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown).
|
||||
10
word/package.json
Normal file
10
word/package.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"scripts": {
|
||||
"docs:dev": "vitepress dev",
|
||||
"docs:build": "vitepress build",
|
||||
"docs:preview": "vitepress preview"
|
||||
},
|
||||
"devDependencies": {
|
||||
"vitepress": "^1.6.4"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user