1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
import type Image from "next/image";
import EcosystemIconDark from "../public/images/docs/shared/feature-icons/ecosystem-dark.svg";
import EcosystemIconLight from "../public/images/docs/shared/feature-icons/ecosystem-light.svg";
import LightningIconDark from "../public/images/docs/shared/feature-icons/lightning-dark.svg";
import LightningIconLight from "../public/images/docs/shared/feature-icons/lightning-light.svg";
import BarsIconDark from "../public/images/docs/shared/feature-icons/bars-dark.svg";
import BarsIconLight from "../public/images/docs/shared/feature-icons/bars-light.svg";
import MultiEnvTargetsIconDark from "../public/images/docs/shared/feature-icons/multi-env-targets-dark.svg";
import MultiEnvTargetsIconLight from "../public/images/docs/shared/feature-icons/multi-env-targets-light.svg";
import NextJSIconDark from "../public/images/docs/shared/feature-icons/nextjs-dark.svg";
import NextJSIconLight from "../public/images/docs/shared/feature-icons/nextjs-light.svg";
import ServerComponentsIconDark from "../public/images/docs/shared/feature-icons/server-components-dark.svg";
import ServerComponentsIconLight from "../public/images/docs/shared/feature-icons/server-components-light.svg";
import FingerprintIconDark from "../public/images/docs/shared/feature-icons/fingerprint-dark.svg";
import FingerprintIconLight from "../public/images/docs/shared/feature-icons/fingerprint-light.svg";
import CloudIconDark from "../public/images/docs/shared/feature-icons/cloud-dark.svg";
import CloudIconLight from "../public/images/docs/shared/feature-icons/cloud-light.svg";
import CpuIconDark from "../public/images/docs/shared/feature-icons/cpu-dark.svg";
import CpuIconLight from "../public/images/docs/shared/feature-icons/cpu-light.svg";
import PieconDark from "../public/images/docs/shared/feature-icons/piecon-dark.svg";
import PieconLight from "../public/images/docs/shared/feature-icons/piecon-light.svg";
import RefreshIconDark from "../public/images/docs/shared/feature-icons/refresh-dark.svg";
import RefreshIconLight from "../public/images/docs/shared/feature-icons/refresh-light.svg";
import ArrowsExpandIconDark from "../public/images/docs/shared/feature-icons/arrows-expand-dark.svg";
import ArrowsExpandIconLight from "../public/images/docs/shared/feature-icons/arrows-expand-light.svg";
import BeakerIconDark from "../public/images/docs/shared/feature-icons/beaker-dark.svg";
import BeakerIconLight from "../public/images/docs/shared/feature-icons/beaker-light.svg";
type NextImageSrc = Parameters<typeof Image>[0]["src"];
export type Feature = {
name: string;
description: string;
iconDark: NextImageSrc;
iconLight: NextImageSrc;
page: "all" | "home" | "docs";
};
export type Features = Array<Feature>;
const REPO_FEATURES: Features = [
{
name: "逐步增量的设计",
description: `只需构建一次工作流——一旦HydroRollAI完成一个任务,它就不会再重新执行。`,
iconDark: RefreshIconDark,
iconLight: RefreshIconLight,
page: "all",
},
{
name: "内容感知哈希",
description: `HydroRollAI根据文件内容而不是时间戳来确定需要构建的内容。`,
iconDark: FingerprintIconDark,
iconLight: FingerprintIconLight,
page: "home",
},
{
name: "并行执行",
description: `以最大并行性使用每个核心来执行构建,避免浪费空闲CPU。`,
iconDark: LightningIconDark,
iconLight: LightningIconLight,
page: "all",
},
{
name: "远程缓存",
description: `与团队成员和CI/CD共享远程构建缓存,加快构建速度。`,
iconDark: CloudIconDark,
iconLight: CloudIconLight,
page: "all",
},
{
name: "零运行时开销",
description: `HydroRollAI不会干扰您的运行时代码,也不会修改您的源映射文件。 `,
iconDark: CpuIconDark,
iconLight: CpuIconLight,
page: "all",
},
{
name: "精简子集",
description: `通过生成仅包含构建特定目标所需内容的部分,加快模型的部署速度。`,
iconDark: PieconDark,
iconLight: PieconLight,
page: "all",
},
{
name: "任务流水线",
description: `定义任务之间的关系,然后让HydroRollAI优化构建顺序和时间。`,
iconDark: ArrowsExpandIconDark,
iconLight: ArrowsExpandIconLight,
page: "all",
},
{
name: "满足您的需求",
description: `正在使用Pytorch或者Tensorflow?保持您的包发布工作流程,并使用HydroRollAI加速任务运行。`,
iconDark: BeakerIconDark,
iconLight: BeakerIconLight,
page: "home",
},
{
name: `在浏览器中进行性能分析`,
description: `生成构建分析文件,并在Chrome或Edge中导入,以了解哪些任务耗时最长`,
iconDark: BarsIconDark,
iconLight: BarsIconLight,
page: "home",
},
];
const PACK_FEATURES: Features = [
{
name: "逐步增量设计",
description: `只需构建一次工作流——一旦HydroRollCore完成一个任务,它就不会再重新执行。`,
iconDark: BarsIconDark,
iconLight: BarsIconLight,
page: "all",
},
{
name: "生态系统友好",
description: `可以直接支持Python与TypeScript,也可以通过插件支持其他语言,且官方给出的规则包十分丰富。`,
iconDark: EcosystemIconDark,
iconLight: EcosystemIconLight,
page: "home",
},
{
name: "闪电般快速的HMR",
description: `无论你写的规则包大小如何,热加载(HMR)始终保持快速的读取和运行速度。`,
iconDark: LightningIconDark,
iconLight: LightningIconLight,
page: "all",
},
{
name: "模型与HydroRoll本体组件",
description: `在使用HydroRollCore时,可以获得对AI模型以及水系本体组件的原生支持。`,
iconDark: ServerComponentsIconDark,
iconLight: ServerComponentsIconLight,
page: "all",
},
{
name: "同时多个环境目标",
description: `一起构建并优化多个环境(webui、本地静态wiki站点、服务器接口组件)`,
iconDark: MultiEnvTargetsIconDark,
iconLight: MultiEnvTargetsIconLight,
page: "all",
},
{
name: "站点支持 Next.js",
description: `HydroRollCore将为Next.js的生产构建提供动力,无论是在本地还是在云端。`,
iconDark: NextJSIconDark,
iconLight: NextJSIconLight,
page: "all",
},
];
export const REPO_DOCS_FEATURES = REPO_FEATURES.filter(
(f) => f.page === "docs" || f.page === "all"
);
export const REPO_HOME_FEATURES = REPO_FEATURES.filter(
(f) => f.page === "home" || f.page === "all"
);
export const PACK_HOME_FEATURES = PACK_FEATURES.filter(
(f) => f.page === "home" || f.page === "all"
);
|