@voidzero-dev/vitepress-theme 3.0.2 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config.js +11 -2
- package/package.json +1 -1
- package/src/assets/vite/vite-featurepanel-2-terminal.png +0 -0
- package/src/components/oss/Sponsors.vue +145 -265
- package/src/components/oss/TrustedBy.vue +8 -33
- package/src/components/oxc/FeatureFormatter.vue +30 -0
- package/src/components/oxc/FeatureLinter.vue +5 -8
- package/src/components/oxc/FeatureMinifier.vue +26 -0
- package/src/components/oxc/FeatureParser.vue +22 -21
- package/src/components/oxc/FeatureResolver.vue +9 -4
- package/src/components/oxc/FeatureToolbar.vue +17 -19
- package/src/components/oxc/FeatureTransformer.vue +8 -7
- package/src/components/oxc/Hero.vue +10 -17
- package/src/components/rolldown/FeatureGrid.vue +35 -39
- package/src/components/rolldown/Hero.vue +6 -6
- package/src/components/vite/Community.vue +1 -1
- package/src/components/vite/FeatureGrid1.vue +12 -9
- package/src/components/vite/FeatureGrid2.vue +7 -4
- package/src/components/vite/Hero.vue +5 -4
- package/src/components/vitest/FeatureGrid.vue +5 -3
- package/src/components/vitest/Hero.vue +3 -3
- package/src/components/vitest/Intro.vue +15 -14
- package/src/oxc.ts +22 -0
- package/src/rolldown.ts +22 -0
- package/src/types/sponsors.ts +14 -0
- package/src/vite.ts +22 -0
- package/src/vitest.ts +22 -0
- package/src/components/oxc/FeatureMinifierFormatter.vue +0 -35
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import RiveAnimation from "@components/shared/RiveAnimation.vue";
|
|
3
|
+
import minifierAnimation from '@assets/oxc/animations/560_x_260_minifier.riv'
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
<template>
|
|
7
|
+
<section id="feature-minifier" class="wrapper border-t grid md:grid-cols-2">
|
|
8
|
+
<div class="px-5 py-6 md:p-10 flex flex-col justify-center gap-15">
|
|
9
|
+
<div class="flex flex-col gap-5">
|
|
10
|
+
<span class="text-grey text-xs font-mono uppercase tracking-wide">Minifier <span class="text-aqua">(Alpha)</span></span>
|
|
11
|
+
<h4 class="text-white">oxc-minify</h4>
|
|
12
|
+
<p class="text-white/70 text-base max-w-[25rem] text-pretty">Compress and optimize</p>
|
|
13
|
+
<ul class="checkmark-list">
|
|
14
|
+
<li>Dead code elimination</li>
|
|
15
|
+
<li>Syntax shortening & whitespace removal</li>
|
|
16
|
+
<li>Variable name mangling</li>
|
|
17
|
+
</ul>
|
|
18
|
+
<a href="/docs/guide/usage/minifier" class="button w-fit mt-6">Usage Guide</a>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
<div class="flex flex-col py-10">
|
|
22
|
+
<RiveAnimation :desktop-src="minifierAnimation" :desktop-width="560" :desktop-height="260"
|
|
23
|
+
canvas-class="w-full" />
|
|
24
|
+
</div>
|
|
25
|
+
</section>
|
|
26
|
+
</template>
|
|
@@ -5,52 +5,53 @@ import parserBenchmarkBg from '@assets/oxc/oxc-feature-background.jpg';
|
|
|
5
5
|
const performanceData = [
|
|
6
6
|
{
|
|
7
7
|
name: 'OXC',
|
|
8
|
-
percentage:
|
|
9
|
-
time: '
|
|
8
|
+
percentage: 20,
|
|
9
|
+
time: '26.3ms',
|
|
10
10
|
isPrimary: true
|
|
11
11
|
},
|
|
12
12
|
{
|
|
13
13
|
name: 'SWC',
|
|
14
14
|
percentage: 65,
|
|
15
|
-
time: '
|
|
15
|
+
time: '84.1ms'
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
name: 'Biome',
|
|
19
19
|
percentage: 100,
|
|
20
|
-
time: '
|
|
20
|
+
time: '130.1ms'
|
|
21
21
|
}
|
|
22
22
|
]
|
|
23
23
|
</script>
|
|
24
24
|
|
|
25
25
|
<template>
|
|
26
|
-
<section id="feature-parser" class="wrapper grid md:grid-cols-2">
|
|
27
|
-
<div class="px-5 py-6 md:p-10 flex flex-col justify-center gap-15">
|
|
26
|
+
<section id="feature-parser" class="wrapper grid border-t md:grid-cols-2">
|
|
27
|
+
<div class="px-5 py-6 md:p-10 md:py-15 flex flex-col justify-center gap-15">
|
|
28
28
|
<div class="flex flex-col gap-5">
|
|
29
29
|
<span class="text-grey text-xs font-mono uppercase tracking-wide">Parser</span>
|
|
30
|
-
<h4 class="text-white">
|
|
31
|
-
<p class="text-white/70 text-base max-w-
|
|
30
|
+
<h4 class="text-white">oxc-parser</h4>
|
|
31
|
+
<p class="text-white/70 text-base max-w-100 text-pretty">The foundation for advanced transformations and
|
|
32
|
+
compilations</p>
|
|
32
33
|
<ul class="checkmark-list">
|
|
33
34
|
<li>3x faster than <code class="mx-1 outline-none bg-nickel/50 text-aqua">SWC</code></li>
|
|
34
|
-
<li>
|
|
35
|
+
<li>Parses <code class="mx-1 outline-none bg-nickel/50 text-aqua">.js(x)</code> and <code class="mx-1 outline-none bg-nickel/50 text-aqua">.ts(x)</code></li>
|
|
36
|
+
<li>Passes all Test262 stage4 tests</li>
|
|
35
37
|
</ul>
|
|
36
38
|
<a href="/docs/guide/usage/parser" class="button w-fit mt-6">Usage Guide</a>
|
|
37
39
|
</div>
|
|
38
40
|
</div>
|
|
39
|
-
<div class="flex flex-col justify-center px-5 md:px-10 py-5 md:pb-10 md:py-
|
|
40
|
-
<p class="text-white font-medium mb-10">
|
|
41
|
+
<div class="flex flex-col justify-center px-5 md:px-10 py-5 md:pb-10 md:py-10">
|
|
42
|
+
<p class="text-white font-medium mb-10">
|
|
43
|
+
Parser Benchmark for Oxc, Swc and Biome
|
|
44
|
+
</p>
|
|
41
45
|
<div class="flex flex-col gap-6">
|
|
42
|
-
<PerformanceBar
|
|
43
|
-
|
|
44
|
-
:key="item.name"
|
|
45
|
-
:data="item"
|
|
46
|
-
:background-image="parserBenchmarkBg"
|
|
47
|
-
large
|
|
48
|
-
/>
|
|
46
|
+
<PerformanceBar v-for="item in performanceData" :key="item.name" :data="item"
|
|
47
|
+
:background-image="parserBenchmarkBg" large />
|
|
49
48
|
</div>
|
|
49
|
+
<p class="text-xs mt-10">
|
|
50
|
+
Parsing typescript.js on Macbook Pro M3 Max |
|
|
51
|
+
<a href="https://github.com/oxc-project/bench-javascript-parser-written-in-rust" target="_blank">Source</a>
|
|
52
|
+
</p>
|
|
50
53
|
</div>
|
|
51
54
|
</section>
|
|
52
55
|
</template>
|
|
53
56
|
|
|
54
|
-
<style scoped>
|
|
55
|
-
|
|
56
|
-
</style>
|
|
57
|
+
<style scoped></style>
|
|
@@ -7,10 +7,15 @@
|
|
|
7
7
|
<div class="px-5 py-6 md:p-10 flex flex-col justify-center gap-15">
|
|
8
8
|
<div class="flex flex-col gap-5">
|
|
9
9
|
<span class="text-grey text-xs font-mono uppercase tracking-wide">Resolver</span>
|
|
10
|
-
<h4 class="text-white">
|
|
11
|
-
<p class="text-white/70 text-base max-w-[25rem] text-pretty">
|
|
10
|
+
<h4 class="text-white">oxc-resolver</h4>
|
|
11
|
+
<p class="text-white/70 text-base max-w-[25rem] text-pretty">Node.js-compatible CJS and ESM module resolution
|
|
12
|
+
</p>
|
|
12
13
|
<ul class="checkmark-list">
|
|
13
|
-
<li>
|
|
14
|
+
<li>Behavior alignment with <code
|
|
15
|
+
class="mx-1 outline-none bg-nickel/50 text-aqua">enhanced-resolve</code></li>
|
|
16
|
+
<li>28x faster than <code class="mx-1 outline-none bg-nickel/50 text-aqua">enhanced-resolve</code>
|
|
17
|
+
<li>Highly customizable</li>
|
|
18
|
+
</li>
|
|
14
19
|
</ul>
|
|
15
20
|
<a href="/docs/guide/usage/resolver" class="button w-fit mt-6">Usage Guide</a>
|
|
16
21
|
</div>
|
|
@@ -21,4 +26,4 @@
|
|
|
21
26
|
</div>
|
|
22
27
|
</div>
|
|
23
28
|
</section>
|
|
24
|
-
</template>
|
|
29
|
+
</template>
|
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
import { ref, onMounted, onUnmounted } from 'vue'
|
|
3
3
|
|
|
4
4
|
const features = [
|
|
5
|
-
{ id: 'feature-parser', label: 'parser' },
|
|
6
5
|
{ id: 'feature-linter', label: 'linter' },
|
|
7
|
-
{ id: 'feature-
|
|
6
|
+
{ id: 'feature-formatter', label: 'formatter' },
|
|
7
|
+
{ id: 'feature-parser', label: 'parser' },
|
|
8
8
|
{ id: 'feature-transformer', label: 'transformer' },
|
|
9
|
-
{ id: 'feature-
|
|
9
|
+
{ id: 'feature-resolver', label: 'resolver' },
|
|
10
|
+
{ id: 'feature-minifier', label: 'minifier' },
|
|
10
11
|
]
|
|
11
12
|
|
|
12
13
|
const activeSection = ref('feature-parser')
|
|
@@ -42,8 +43,8 @@ const scrollToSection = (e: Event, id: string) => {
|
|
|
42
43
|
|
|
43
44
|
// Easing function (easeInOutCubic)
|
|
44
45
|
const ease = progress < 0.5
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
? 4 * progress * progress * progress
|
|
47
|
+
: 1 - Math.pow(-2 * progress + 2, 3) / 2
|
|
47
48
|
|
|
48
49
|
window.scrollTo(0, startPosition + distance * ease)
|
|
49
50
|
|
|
@@ -164,18 +165,13 @@ onUnmounted(() => {
|
|
|
164
165
|
<template>
|
|
165
166
|
<div class="wrapper wrapper wrapper--ticks border-t w-full relative z-20"></div>
|
|
166
167
|
<section class="wrapper sticky top-0 border-b bg-primary z-10 overflow-hidden">
|
|
167
|
-
<ul
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
:style="underlineStyle"
|
|
171
|
-
/>
|
|
168
|
+
<ul
|
|
169
|
+
class="w-full sm:grid sm:grid-cols-6 flex items-center divide-x divide-nickel relative overflow-x-auto scrollbar-hide touch-none sm:touch-auto select-none sm:select-auto">
|
|
170
|
+
<div class="absolute bottom-0 h-0.5 bg-white transition-all duration-300 ease-out" :style="underlineStyle" />
|
|
172
171
|
<li v-for="(feature, _index) in features" :key="feature.id" ref="listItems" class="flex-shrink-0">
|
|
173
|
-
<a
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
class="h-full text-sm font-mono tracking-tight py-4 px-6 sm:px-0 flex justify-center gap-1.5 transition-colors duration-200 whitespace-nowrap"
|
|
177
|
-
:class="activeSection === feature.id ? 'text-white' : 'text-grey'"
|
|
178
|
-
>
|
|
172
|
+
<a :href="`#${feature.id}`" @click="scrollToSection($event, feature.id)"
|
|
173
|
+
class="h-full text-sm font-mono tracking-tight py-4 px-6 sm:px-0 flex justify-center gap-1.5 transition-colors duration-200 whitespace-nowrap"
|
|
174
|
+
:class="activeSection === feature.id ? 'text-white' : 'text-grey'">
|
|
179
175
|
<span>{{ feature.label }}</span>
|
|
180
176
|
</a>
|
|
181
177
|
</li>
|
|
@@ -191,7 +187,9 @@ onUnmounted(() => {
|
|
|
191
187
|
|
|
192
188
|
/* Hide scrollbar for IE, Edge and Firefox */
|
|
193
189
|
.scrollbar-hide {
|
|
194
|
-
-ms-overflow-style: none;
|
|
195
|
-
|
|
190
|
+
-ms-overflow-style: none;
|
|
191
|
+
/* IE and Edge */
|
|
192
|
+
scrollbar-width: none;
|
|
193
|
+
/* Firefox */
|
|
196
194
|
}
|
|
197
|
-
</style>
|
|
195
|
+
</style>
|
|
@@ -7,19 +7,20 @@
|
|
|
7
7
|
<div class="px-5 py-6 md:p-10 flex flex-col justify-center gap-15">
|
|
8
8
|
<div class="flex flex-col gap-5">
|
|
9
9
|
<span class="text-grey text-xs font-mono uppercase tracking-wide">Transformer</span>
|
|
10
|
-
<h4 class="text-white">
|
|
11
|
-
<p class="text-white/70 text-base max-w-[25rem] text-pretty">Transpile
|
|
10
|
+
<h4 class="text-white">oxc-transform</h4>
|
|
11
|
+
<p class="text-white/70 text-base max-w-[25rem] text-pretty">Transpile source code at the speed of thought</p>
|
|
12
12
|
<ul class="checkmark-list">
|
|
13
|
-
<li><code class="mx-1 outline-none bg-nickel/50 text-aqua">
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
<li><code class="mx-1 outline-none bg-nickel/50 text-aqua">TypeScript</code> & <code
|
|
14
|
+
class="mx-1 outline-none bg-nickel/50 text-aqua">JSX</code></li>
|
|
15
|
+
<li>Syntax lowering to ES2015</li>
|
|
16
16
|
<li>Isolated Declarations DTS Emit</li>
|
|
17
|
+
<li>React Fast Refresh, styled-components, and more</li>
|
|
17
18
|
</ul>
|
|
18
19
|
<a href="/docs/guide/usage/transformer" class="button w-fit mt-6">Usage Guide</a>
|
|
19
20
|
</div>
|
|
20
21
|
</div>
|
|
21
22
|
<div class="flex flex-col">
|
|
22
|
-
<div class="card-bg h-full overflow-clip flex justify-end items-center py-
|
|
23
|
+
<div class="card-bg h-full overflow-clip flex justify-end items-center py-5 md:py-10 px-5 md:px-25">
|
|
23
24
|
<img loading="lazy" src="@assets/oxc/oxc-transformer-terminal.png" alt="Transformer" class="w-full md:w-auto">
|
|
24
25
|
</div>
|
|
25
26
|
</div>
|
|
@@ -32,4 +33,4 @@
|
|
|
32
33
|
background-size: cover;
|
|
33
34
|
background-position: center;
|
|
34
35
|
}
|
|
35
|
-
</style>
|
|
36
|
+
</style>
|
|
@@ -7,38 +7,31 @@ import oxcAnimation from '@assets/oxc/animations/640_x_630_oxc masthead_.riv'
|
|
|
7
7
|
<div class="wrapper wrapper--ticks grid md:grid-cols-2 w-full border-nickel divide-x">
|
|
8
8
|
<div class="flex flex-col p-10 justify-center items-center md:items-start">
|
|
9
9
|
<div class="flex flex-col gap-5 max-w-[30rem] text-center md:text-left items-center md:items-start">
|
|
10
|
-
<
|
|
10
|
+
<a class="flex items-center gap-2" href="https://voidzero.dev" target="_blank">
|
|
11
11
|
<span class="text-grey text-xs font-mono uppercase tracking-wide">By</span>
|
|
12
12
|
<img src="@assets/logos/voidzero-light.svg" alt="VoidZero" class="h-2.5">
|
|
13
|
-
</
|
|
13
|
+
</a>
|
|
14
14
|
<h1 class="text-white text-pretty">The JavaScript Oxidation Compiler</h1>
|
|
15
|
-
<p class="text-white/70 text-lg max-w-[25rem] text-pretty">A collection of JavaScript tools
|
|
15
|
+
<p class="text-white/70 text-lg max-w-[25rem] text-pretty">A collection of high-performance JavaScript tools
|
|
16
|
+
written in Rust</p>
|
|
16
17
|
<div class="flex items-center gap-5 mt-8">
|
|
17
18
|
<a href="/docs/guide/introduction" class="button button--primary inline-block w-fit">
|
|
18
19
|
Get Started
|
|
19
20
|
</a>
|
|
20
|
-
<a href="https://github.com/oxc-project/oxc" target="_blank" rel="noopener noreferrer"
|
|
21
|
+
<a href="https://github.com/oxc-project/oxc" target="_blank" rel="noopener noreferrer"
|
|
22
|
+
class="button inline-block w-fit">
|
|
21
23
|
View on GitHub
|
|
22
24
|
</a>
|
|
23
25
|
</div>
|
|
24
26
|
</div>
|
|
25
27
|
</div>
|
|
26
28
|
<div class="flex flex-col min-h-[22rem] sm:min-h-[30rem]">
|
|
27
|
-
<div class="relative px-10 h-full flex flex-col justify-center overflow-clip
|
|
28
|
-
<RiveAnimation
|
|
29
|
-
|
|
30
|
-
:mobile-src="oxcAnimation"
|
|
31
|
-
:desktop-width="640"
|
|
32
|
-
:desktop-height="630"
|
|
33
|
-
:mobile-width="640"
|
|
34
|
-
:mobile-height="630"
|
|
35
|
-
canvas-class="w-full"
|
|
36
|
-
/>
|
|
29
|
+
<div class="relative px-10 h-full flex flex-col justify-center overflow-clip pb-10 sm:pb-0">
|
|
30
|
+
<RiveAnimation :desktop-src="oxcAnimation" :mobile-src="oxcAnimation" :desktop-width="640" :desktop-height="630"
|
|
31
|
+
:mobile-width="640" :mobile-height="630" canvas-class="w-full" />
|
|
37
32
|
</div>
|
|
38
33
|
</div>
|
|
39
34
|
</div>
|
|
40
35
|
</template>
|
|
41
36
|
|
|
42
|
-
<style scoped>
|
|
43
|
-
|
|
44
|
-
</style>
|
|
37
|
+
<style scoped></style>
|
|
@@ -7,29 +7,24 @@ import performanceBarBg from '@assets/rolldown/rolldown-rollup-background.jpg';
|
|
|
7
7
|
const performanceData = [
|
|
8
8
|
{
|
|
9
9
|
name: 'Rolldown',
|
|
10
|
-
percentage:
|
|
11
|
-
time: '
|
|
10
|
+
percentage: 4.01,
|
|
11
|
+
time: '1.61s',
|
|
12
12
|
isPrimary: true
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
name: 'esbuild',
|
|
16
|
-
percentage:
|
|
17
|
-
time: '1.
|
|
16
|
+
percentage: 4.24,
|
|
17
|
+
time: '1.70s'
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
|
-
name: '
|
|
21
|
-
percentage:
|
|
22
|
-
time: '
|
|
20
|
+
name: 'rspack',
|
|
21
|
+
percentage: 10.15,
|
|
22
|
+
time: '4.07s',
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
|
-
name: '
|
|
26
|
-
percentage: 66,
|
|
27
|
-
time: '2.08s'
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
name: 'Rsbuild',
|
|
25
|
+
name: 'Rollup + esbuild',
|
|
31
26
|
percentage: 100,
|
|
32
|
-
time: '
|
|
27
|
+
time: '40.10s'
|
|
33
28
|
}
|
|
34
29
|
]
|
|
35
30
|
</script>
|
|
@@ -37,54 +32,55 @@ const performanceData = [
|
|
|
37
32
|
<template>
|
|
38
33
|
<section class="wrapper wrapper--ticks border-t grid lg:grid-cols-2 divide-x divide-y divide-nickel">
|
|
39
34
|
<div class="flex flex-col gap-3 justify-between">
|
|
40
|
-
<div class="p-5 sm:p-
|
|
35
|
+
<div class="p-5 sm:p-15 pb-0 sm:pb-0 flex flex-col gap-3">
|
|
41
36
|
<h5 class="text-balance sm:text-pretty text-white">Speed of Rust</h5>
|
|
42
|
-
<p class="sm:max-w-[
|
|
37
|
+
<p class="sm:max-w-[30rem] text-pretty">Rolldown handles tens of thousands of modules without breaking a sweat
|
|
38
|
+
</p>
|
|
43
39
|
</div>
|
|
44
|
-
<div class="p-5 sm:p-
|
|
40
|
+
<div class="p-5 sm:p-15 flex flex-col gap-10">
|
|
45
41
|
<div class="flex flex-col gap-4">
|
|
46
|
-
<PerformanceBar
|
|
47
|
-
|
|
48
|
-
:key="item.name"
|
|
49
|
-
:data="item"
|
|
50
|
-
:background-image="performanceBarBg"
|
|
51
|
-
/>
|
|
42
|
+
<PerformanceBar v-for="item in performanceData" :key="item.name" :data="item"
|
|
43
|
+
:background-image="performanceBarBg" />
|
|
52
44
|
</div>
|
|
53
45
|
<div>
|
|
54
|
-
<p class="text-sm"><
|
|
55
|
-
|
|
46
|
+
<p class="text-sm"><a
|
|
47
|
+
href="https://github.com/rolldown/benchmarks/tree/f3997c801b7d261e8aaa15d4affbf6730cc19884?tab=readme-ov-file#ubuntu-latest-updated-2025-12-21"
|
|
48
|
+
target="_blank" class="text-white font-medium">Benchmark</a> bundling <span
|
|
49
|
+
class="text-white font-medium">19k</span>
|
|
50
|
+
modules.</p>
|
|
51
|
+
<p class="text-xs">10k React JSX components + 9k iconify JS files, with minification and source maps.</p>
|
|
56
52
|
</div>
|
|
57
53
|
</div>
|
|
58
54
|
</div>
|
|
59
|
-
|
|
60
|
-
|
|
55
|
+
|
|
56
|
+
<div class="flex flex-col gap-3 border-r-0 justify-between overflow-hidden">
|
|
57
|
+
<div class="p-5 sm:p-15 sm:pb-10 flex flex-col gap-3">
|
|
61
58
|
<h5 class="text-white">Rollup Compatible</h5>
|
|
62
|
-
<p class="max-w-[
|
|
59
|
+
<p class="max-w-[30rem] text-pretty">Familiar API & options with a rich plugin ecosystem</p>
|
|
63
60
|
</div>
|
|
64
61
|
<div class="card-bg px-5 sm:px-20 pt-5 sm:pt-10 flex justify-center">
|
|
65
|
-
<img src="@assets/rolldown/rolldown-rollup.png" inert loading="lazy" alt="rollup compatible">
|
|
62
|
+
<img src="@assets/rolldown/rolldown-rollup.png" class="-mb-[60px]" inert loading="lazy" alt="rollup compatible">
|
|
66
63
|
</div>
|
|
67
64
|
</div>
|
|
65
|
+
|
|
68
66
|
<div class="flex flex-col gap-3 justify-between">
|
|
69
|
-
<div class="p-5 sm:p-
|
|
67
|
+
<div class="p-5 sm:p-15 pb-0 sm:pb-0 flex flex-col gap-3">
|
|
70
68
|
<h5 class="text-white">Esbuild Feature Parity</h5>
|
|
71
69
|
<p class="max-w-[26rem] text-pretty">Built-in transforms, define, inject, minify, CSS bundling & more...</p>
|
|
72
70
|
</div>
|
|
73
|
-
<div class="flex-1 flex items-center justify-center p-
|
|
74
|
-
<img src="@assets/rolldown/rolldown-esbuild-parity.png" inert loading="lazy" alt="jest compatible"
|
|
71
|
+
<div class="flex-1 flex items-center justify-center p-8 sm:p-15 sm:pt-10">
|
|
72
|
+
<img src="@assets/rolldown/rolldown-esbuild-parity.png" inert loading="lazy" alt="jest compatible"
|
|
73
|
+
class="w-full max-h-60 object-contain">
|
|
75
74
|
</div>
|
|
76
75
|
</div>
|
|
76
|
+
|
|
77
77
|
<div class="flex flex-col gap-3 justify-between">
|
|
78
|
-
<div class="p-5 sm:p-
|
|
78
|
+
<div class="p-5 sm:p-15 pb-0 sm:pb-0 flex flex-col gap-3">
|
|
79
79
|
<h5 class="text-white">Designed for Vite</h5>
|
|
80
80
|
<p class="max-w-[25rem] text-pretty">The unified bundler powering Vite 8+</p>
|
|
81
81
|
</div>
|
|
82
|
-
<RiveAnimation
|
|
83
|
-
|
|
84
|
-
:desktop-width="640"
|
|
85
|
-
:desktop-height="300"
|
|
86
|
-
canvas-class="w-full mb-10"
|
|
87
|
-
/>
|
|
82
|
+
<RiveAnimation :desktop-src="vitePoweredAnimation" :desktop-width="640" :desktop-height="300"
|
|
83
|
+
canvas-class="w-full mb-10" />
|
|
88
84
|
</div>
|
|
89
85
|
</section>
|
|
90
86
|
</template>
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="wrapper wrapper--ticks grid md:grid-cols-2 w-full border-nickel divide-x">
|
|
3
3
|
<div class="flex flex-col p-10 justify-between items-center md:items-start">
|
|
4
|
-
<div class="flex flex-col gap-5
|
|
5
|
-
<
|
|
4
|
+
<div class="flex flex-col gap-5 text-center md:text-left items-center md:items-start">
|
|
5
|
+
<a class="flex items-center gap-2" href="https://voidzero.dev" target="_blank">
|
|
6
6
|
<span class="text-grey text-xs font-mono uppercase tracking-wide">By</span>
|
|
7
7
|
<img src="@assets/logos/voidzero-light.svg" alt="VoidZero" class="h-2.5">
|
|
8
|
-
</
|
|
9
|
-
<h1 class="text-white text-pretty">Fast
|
|
10
|
-
<p class="text-white/70 text-lg max-w-[
|
|
8
|
+
</a>
|
|
9
|
+
<h1 class="text-white text-pretty max-w-[35rem]">Blazing Fast<br>Rust-based bundler for JavaScript</h1>
|
|
10
|
+
<p class="text-white/70 text-lg max-w-[30rem] text-pretty">with Rollup-compatible API and esbuild feature parity</p>
|
|
11
11
|
<div class="flex items-center gap-5 mt-6">
|
|
12
12
|
<a href="/guide/" class="button button--primary inline-block w-fit">
|
|
13
13
|
<span>Get Started</span>
|
|
@@ -54,4 +54,4 @@
|
|
|
54
54
|
}
|
|
55
55
|
</style>
|
|
56
56
|
<script setup lang="ts">
|
|
57
|
-
</script>
|
|
57
|
+
</script>
|
|
@@ -122,7 +122,7 @@ const testimonials: Testimonial[] = [
|
|
|
122
122
|
>
|
|
123
123
|
<!-- Comment -->
|
|
124
124
|
<div class="relative z-[2] flex flex-col gap-4">
|
|
125
|
-
<p v-for="(paragraph, pIndex) in testimonial.comment" :key="pIndex" class="text-white/70 leading-relaxed">
|
|
125
|
+
<p v-for="(paragraph, pIndex) in testimonial.comment" :key="pIndex" class="text-white/70 leading-relaxed text-sm sm:text-base">
|
|
126
126
|
{{ paragraph }}
|
|
127
127
|
</p>
|
|
128
128
|
</div>
|
|
@@ -8,7 +8,8 @@ import viteAnimation from '@assets/vite/animations/563_x_420_rich_features.riv'
|
|
|
8
8
|
<div class="flex flex-col gap-3 justify-between">
|
|
9
9
|
<div class="p-5 sm:p-10 flex flex-col gap-3">
|
|
10
10
|
<h5 class="text-balance sm:text-pretty text-white">Instant Server Start</h5>
|
|
11
|
-
<p class="sm:max-w-[28rem] text-pretty">On demand source file serving over
|
|
11
|
+
<p class="sm:max-w-[28rem] text-pretty">On demand source file serving over
|
|
12
|
+
native ESM, with blazing fast
|
|
12
13
|
dependency pre-bundling.</p>
|
|
13
14
|
</div>
|
|
14
15
|
<div class="card-bg1 p-10 sm:p-15 flex justify-center">
|
|
@@ -19,18 +20,19 @@ import viteAnimation from '@assets/vite/animations/563_x_420_rich_features.riv'
|
|
|
19
20
|
<div class="flex flex-col gap-3 justify-between border-r-0">
|
|
20
21
|
<div class="p-5 sm:p-10 flex flex-col gap-3">
|
|
21
22
|
<h5 class="text-white">Lightning Fast HMR</h5>
|
|
22
|
-
<p class="max-w-[26rem] text-pretty">
|
|
23
|
-
|
|
23
|
+
<p class="max-w-[26rem] text-pretty">Instantly reflect changes as you save, no matter how
|
|
24
|
+
big your app is.</p>
|
|
24
25
|
</div>
|
|
25
|
-
<div class="
|
|
26
|
-
<img src="@assets/vite/vite-featurepanel-2-terminal.png" inert loading="lazy"
|
|
27
|
-
|
|
26
|
+
<div class="flex justify-end">
|
|
27
|
+
<img src="@assets/vite/vite-featurepanel-2-terminal.png" class="md:max-w-[80%]" inert loading="lazy"
|
|
28
|
+
alt="lightning fast hot module replacement">
|
|
28
29
|
</div>
|
|
29
30
|
</div>
|
|
30
31
|
|
|
31
|
-
<div class="p-5 sm:p-10 pb-0 sm:pb-0 flex flex-col gap-3 border-b-0">
|
|
32
|
+
<div class="p-5 sm:p-10 pb-0 sm:pb-0 flex flex-col gap-3 lg:border-b-0">
|
|
32
33
|
<h5 class="text-white">Rich Features Out of the Box</h5>
|
|
33
|
-
<p class="sm:max-w-[28rem] text-pretty">TypeScript, JSX, CSS, Workers, Web
|
|
34
|
+
<p class="sm:max-w-[28rem] text-pretty">TypeScript, JSX, CSS, Workers, Web
|
|
35
|
+
Assembly... and more with just a plugin away.</p>
|
|
34
36
|
<RiveAnimation :desktop-src="viteAnimation" :mobile-src="viteAnimation" :desktop-width="563" :desktop-height="300"
|
|
35
37
|
:mobile-width="563" :mobile-height="420" canvas-class="w-full" />
|
|
36
38
|
</div>
|
|
@@ -38,7 +40,8 @@ import viteAnimation from '@assets/vite/animations/563_x_420_rich_features.riv'
|
|
|
38
40
|
<div class="flex flex-col gap-3 justify-between border-r-0 border-b-0">
|
|
39
41
|
<div class="p-5 sm:p-10 flex flex-col gap-3">
|
|
40
42
|
<h5 class="text-white">Optimized Build</h5>
|
|
41
|
-
<p class="max-w-[25rem] text-pretty">Advanced tree-shaking, built-in
|
|
43
|
+
<p class="max-w-[25rem] text-pretty">Advanced tree-shaking, built-in
|
|
44
|
+
minification, fine-grained chunking control
|
|
42
45
|
powered by Rolldown.</p>
|
|
43
46
|
</div>
|
|
44
47
|
<div class="card-bg p-10 sm:p-15 flex justify-center">
|
|
@@ -7,7 +7,8 @@ import flexiblePluginAnimation from '@assets/vite/animations/640_x_300_flexible_
|
|
|
7
7
|
<section class="wrapper wrapper--ticks border-t grid lg:grid-cols-2 divide-x divide-y divide-nickel">
|
|
8
8
|
<div class="p-5 sm:p-10 flex flex-col gap-3">
|
|
9
9
|
<h5 class="text-balance sm:text-pretty text-white">Flexible Plugin System</h5>
|
|
10
|
-
<p class="sm:max-w-[28rem] text-pretty">Vite plugins extends Rollup's
|
|
10
|
+
<p class="sm:max-w-[28rem] text-pretty">Vite plugins extends Rollup's
|
|
11
|
+
well-designed plugin interface with a few
|
|
11
12
|
extra Vite-specific options.</p>
|
|
12
13
|
<RiveAnimation :desktop-src="flexiblePluginAnimation" :desktop-width="640" :desktop-height="300"
|
|
13
14
|
canvas-class="w-[calc(100%_+_2.5rem)] mt-5 -mx-5" />
|
|
@@ -23,9 +24,10 @@ import flexiblePluginAnimation from '@assets/vite/animations/640_x_300_flexible_
|
|
|
23
24
|
</div>
|
|
24
25
|
</div>
|
|
25
26
|
|
|
26
|
-
<div class="p-5 sm:p-10 flex flex-col gap-3 border-b-0">
|
|
27
|
+
<div class="p-5 sm:p-10 flex flex-col gap-3 lg:border-b-0">
|
|
27
28
|
<h5 class="text-white">First class SSR Support</h5>
|
|
28
|
-
<p class="sm:max-w-[28rem] text-pretty mb-12 sm:mb-16">It's never been easier to
|
|
29
|
+
<p class="sm:max-w-[28rem] text-pretty mb-12 sm:mb-16">It's never been easier to
|
|
30
|
+
setup custom SSR (Server-Side
|
|
29
31
|
Rendering), or build your own SSR framework.</p>
|
|
30
32
|
<img src="@assets/vite/vite-ssr-support.png" alt="SSR Support" loading="lazy" class="w-full px-5">
|
|
31
33
|
</div>
|
|
@@ -33,7 +35,8 @@ import flexiblePluginAnimation from '@assets/vite/animations/640_x_300_flexible_
|
|
|
33
35
|
<div class="flex flex-col gap-3 justify-between">
|
|
34
36
|
<div class="p-5 sm:p-10 flex flex-col gap-3">
|
|
35
37
|
<h5 class="text-white">Continuous ecosystem integration</h5>
|
|
36
|
-
<p class="max-w-[25rem] text-pretty">Our CI continuously tests Vite changes
|
|
38
|
+
<p class="max-w-[25rem] text-pretty">Our CI continuously tests Vite changes
|
|
39
|
+
against downstream projects,
|
|
37
40
|
allowing us to improve Vite with stability and confidence.</p>
|
|
38
41
|
</div>
|
|
39
42
|
<div class="px-5 sm:px-10 flex justify-center">
|
|
@@ -17,12 +17,13 @@ const installTabs = [
|
|
|
17
17
|
<div class="wrapper wrapper--ticks grid md:grid-cols-2 w-full border-nickel md:divide-x">
|
|
18
18
|
<div class="flex flex-col p-10 justify-between gap-20 items-center md:items-start">
|
|
19
19
|
<div class="flex flex-col gap-5 items-center md:items-start text-center md:text-left">
|
|
20
|
-
<
|
|
20
|
+
<a class="flex items-center gap-2" href="https://voidzero.dev" target="_blank">
|
|
21
21
|
<span class="text-grey text-xs font-mono uppercase tracking-wide">By</span>
|
|
22
|
-
<img src="
|
|
23
|
-
</
|
|
22
|
+
<img src="@assets/logos/voidzero-light.svg" alt="VoidZero" class="h-2.5">
|
|
23
|
+
</a>
|
|
24
24
|
<h1 class="text-white text-pretty max-w-[25rem]">The Build Tool for the Web</h1>
|
|
25
|
-
<p class="text-white/70 md:text-lg max-w-[27rem] text-pretty">Vite is a blazing fast frontend build tool
|
|
25
|
+
<p class="text-white/70 md:text-lg max-w-[27rem] text-pretty">Vite is a blazing fast frontend build tool
|
|
26
|
+
powering
|
|
26
27
|
the next generation of web applications.</p>
|
|
27
28
|
<div class="flex items-center gap-5 mt-8">
|
|
28
29
|
<a href="/guide/" class="button button--primary inline-block w-fit">
|
|
@@ -9,7 +9,8 @@ import esmAnimation from '@assets/vitest/animations/640_x_300_esm.riv'
|
|
|
9
9
|
<div class="flex flex-col gap-3">
|
|
10
10
|
<div class="p-5 sm:p-10 pb-0 sm:pb-0 flex flex-col gap-3">
|
|
11
11
|
<h5 class="text-balance sm:text-pretty text-white">Vite Powered</h5>
|
|
12
|
-
<p class="sm:max-w-[
|
|
12
|
+
<p class="sm:max-w-[30rem] text-pretty">Reuse <code
|
|
13
|
+
class="mr-1 outline-none bg-nickel/50 text-vite">Vite</code>'s config and plugins - consistent across your app and tests.
|
|
13
14
|
But it's not required to use Vitest!</p>
|
|
14
15
|
</div>
|
|
15
16
|
<RiveAnimation
|
|
@@ -22,7 +23,8 @@ import esmAnimation from '@assets/vitest/animations/640_x_300_esm.riv'
|
|
|
22
23
|
<div class="flex flex-col gap-3 border-r-0 justify-between">
|
|
23
24
|
<div class="p-5 sm:p-10 pb-0 sm:pb-0 flex flex-col gap-3">
|
|
24
25
|
<h5 class="text-white">Jest Compatible</h5>
|
|
25
|
-
<p class="max-w-[
|
|
26
|
+
<p class="max-w-[28rem] text-pretty">Expect, snapshot, coverage, and more - migrating from <code
|
|
27
|
+
class="mr-1 outline-none bg-nickel/50 text-zest">Jest</code> is
|
|
26
28
|
straightforward.</p>
|
|
27
29
|
</div>
|
|
28
30
|
<div class="flex-1 flex items-center justify-center p-5 sm:p-10">
|
|
@@ -32,7 +34,7 @@ import esmAnimation from '@assets/vitest/animations/640_x_300_esm.riv'
|
|
|
32
34
|
<div class="flex flex-col gap-3 justify-between">
|
|
33
35
|
<div class="p-5 sm:p-10 flex flex-col gap-3">
|
|
34
36
|
<h5 class="text-white">Smart & instant watch mode</h5>
|
|
35
|
-
<p class="max-w-[
|
|
37
|
+
<p class="max-w-[23rem] text-pretty">Only rerun the related changes, just like HMR for tests!</p>
|
|
36
38
|
</div>
|
|
37
39
|
<div class="card-bg px-5 sm:px-10 pt-5 sm:pt-10 flex justify-center">
|
|
38
40
|
<img src="@assets/vitest/vitest-watcher.png" inert loading="lazy" alt="typed api">
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
<div class="wrapper wrapper--ticks grid md:grid-cols-2 w-full border-nickel divide-x">
|
|
3
3
|
<div class="flex flex-col p-10 justify-center items-center md:items-start">
|
|
4
4
|
<div class="flex flex-col gap-5 max-w-[30rem] text-center md:text-left items-center md:items-start">
|
|
5
|
-
<
|
|
5
|
+
<a class="flex items-center gap-2" href="https://voidzero.dev" target="_blank">
|
|
6
6
|
<span class="text-grey text-xs font-mono uppercase tracking-wide">By</span>
|
|
7
7
|
<img src="@assets/logos/voidzero-light.svg" alt="VoidZero" class="h-2.5">
|
|
8
|
-
</
|
|
8
|
+
</a>
|
|
9
9
|
<h1 class="text-white text-pretty">Next Generation Testing Framework</h1>
|
|
10
10
|
<p class="text-white/70 text-lg max-w-[25rem] text-pretty">A Vite-native testing framework. It's fast!</p>
|
|
11
11
|
<div class="flex items-center gap-5 mt-8">
|
|
@@ -34,4 +34,4 @@
|
|
|
34
34
|
}
|
|
35
35
|
</style>
|
|
36
36
|
<script setup lang="ts">
|
|
37
|
-
</script>
|
|
37
|
+
</script>
|