Skip to content

Commit 4f144dc

Browse files
committed
feat: commit split codes
1 parent 2a1c341 commit 4f144dc

File tree

10 files changed

+1034
-26
lines changed

10 files changed

+1034
-26
lines changed

apps/vite-vue/src/App.vue

Lines changed: 73 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,78 @@
11
<script setup lang="ts">
2-
import HelloWorld from './components/HelloWorld.vue'
2+
33
</script>
44

55
<template>
6-
<div class="flex justify-between">
7-
<a href="https://vitejs.dev" target="_blank">
8-
<img src="/vite.svg" class="logo" alt="Vite logo" />
9-
</a>
10-
<a href="https://vuejs.org/" target="_blank">
11-
<img src="./assets/vue.svg" class="logo vue" alt="Vue logo" />
12-
</a>
13-
</div>
14-
<HelloWorld msg="Vite + Vue" />
6+
<main class="flex min-h-screen flex-col items-center justify-between p-24">
7+
<div class="z-10 w-full max-w-5xl items-center justify-between font-mono text-sm lg:flex">
8+
<p
9+
class="fixed left-0 top-0 flex w-full justify-center border-b border-gray-300 bg-gradient-to-b from-zinc-200 pb-6 pt-8 backdrop-blur-2xl dark:border-neutral-800 dark:bg-zinc-800/30 dark:from-inherit lg:static lg:w-auto lg:rounded-xl lg:border lg:bg-gray-200 lg:p-4 lg:dark:bg-zinc-800/30">
10+
Get started by editing&nbsp;
11+
<code class="font-mono font-bold">pages/index.tsx</code>
12+
</p>
13+
<div
14+
class="fixed bottom-0 left-0 flex h-48 w-full items-end justify-center bg-gradient-to-t from-white via-white dark:from-black dark:via-black lg:static lg:h-auto lg:w-auto lg:bg-none">
15+
<a class="pointer-events-none flex place-items-center gap-2 p-8 lg:pointer-events-auto lg:p-0"
16+
href="https://vercel.com?utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app"
17+
target="_blank" rel="noopener noreferrer">
18+
By
19+
<img src="/vite.svg" alt="Vercel Logo" class="dark:invert" priority />
20+
</a>
21+
</div>
22+
</div>
23+
24+
<div
25+
class="relative flex place-items-center before:absolute before:h-[300px] before:w-[480px] before:-translate-x-1/2 before:rounded-full before:bg-gradient-radial before:from-white before:to-transparent before:blur-2xl before:content-[''] after:absolute after:-z-20 after:h-[180px] after:w-[240px] after:translate-x-1/3 after:bg-gradient-conic after:from-sky-200 after:via-blue-200 after:blur-2xl after:content-[''] before:dark:bg-gradient-to-br before:dark:from-transparent before:dark:to-blue-700/10 after:dark:from-sky-900 after:dark:via-[#0141ff]/40 before:lg:h-[360px]">
26+
<img class="relative dark:drop-shadow-[0_0_0.3rem_#ffffff70] dark:invert" src="./assets/vue.svg" alt="Next.js Logo"
27+
priority />
28+
</div>
29+
30+
<div class="mb-32 grid text-center lg:mb-0 lg:grid-cols-4 lg:text-left">
31+
<a href="https://nextjs.org/docs?utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app"
32+
class="group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30"
33+
target="_blank" rel="noopener noreferrer">
34+
<h2 class="mb-3 text-2xl font-semibold">
35+
Docs <span
36+
class="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none">-&gt;</span>
37+
</h2>
38+
<p class="m-0 max-w-[30ch] text-sm opacity-50">Find in-depth information about Next.js
39+
features and API.</p>
40+
</a>
41+
42+
<a href="https://nextjs.org/learn?utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app"
43+
class="group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30"
44+
target="_blank" rel="noopener noreferrer">
45+
<h2 class="mb-3 text-2xl font-semibold">
46+
Learn <span
47+
class="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none">-&gt;</span>
48+
</h2>
49+
<p class="m-0 max-w-[30ch] text-sm opacity-50">Learn about Next.js in an interactive
50+
course with&nbsp;quizzes!</p>
51+
</a>
52+
53+
<a href="https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app"
54+
class="group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30"
55+
target="_blank" rel="noopener noreferrer">
56+
<h2 class="mb-3 text-2xl font-semibold">
57+
Templates <span
58+
class="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none">-&gt;</span>
59+
</h2>
60+
<p class="m-0 max-w-[30ch] text-sm opacity-50">Discover and deploy boilerplate example
61+
Next.js&nbsp;projects.</p>
62+
</a>
63+
64+
<a href="https://vercel.com/new?utm_source=create-next-app&utm_medium=default-template-tw&utm_campaign=create-next-app"
65+
class="group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30"
66+
target="_blank" rel="noopener noreferrer">
67+
<h2 class="mb-3 text-2xl font-semibold">
68+
Deploy <span
69+
class="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none">-&gt;</span>
70+
</h2>
71+
<p class="m-0 max-w-[30ch] text-sm opacity-50">Instantly deploy your Next.js site to a
72+
shareable URL with Vercel.</p>
73+
</a>
74+
</div>
75+
</main>
1576
</template>
1677

1778
<style scoped>
@@ -21,9 +82,11 @@ import HelloWorld from './components/HelloWorld.vue'
2182
will-change: filter;
2283
transition: filter 300ms;
2384
}
85+
2486
.logo:hover {
2587
filter: drop-shadow(0 0 2em #646cffaa);
2688
}
89+
2790
.logo.vue:hover {
2891
filter: drop-shadow(0 0 2em #42b883aa);
2992
}

packages/unplugin-tailwindcss-mangle/src/classGenerator.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// import chalk from 'chalk'
22
import type { IMangleOptions, IMangleContextClass, IClassGenerator } from './types'
33

4-
import { acceptChars, acceptPrefix, stripEscapeSequence, regExpTest } from './utils'
4+
import { acceptChars, stripEscapeSequence, regExpTest } from './utils'
55

66
class ClassGenerator implements IClassGenerator {
77
public newClassMap: Record<string, IMangleContextClass>
@@ -19,7 +19,7 @@ class ClassGenerator implements IClassGenerator {
1919

2020
defaultClassGenerator() {
2121
const chars = []
22-
let rest = (this.newClassSize - (this.newClassSize % acceptPrefix.length)) / acceptPrefix.length
22+
let rest = (this.newClassSize - (this.newClassSize % acceptChars.length)) / acceptChars.length
2323
if (rest > 0) {
2424
while (true) {
2525
rest -= 1
@@ -33,9 +33,9 @@ class ClassGenerator implements IClassGenerator {
3333
rest /= acceptChars.length
3434
}
3535
}
36-
const prefixIndex = this.newClassSize % acceptPrefix.length
36+
const prefixIndex = this.newClassSize % acceptChars.length
3737

38-
const newClassName = `${this.classPrefix}${acceptPrefix[prefixIndex]}${chars.join('')}`
38+
const newClassName = `${this.classPrefix}${acceptChars[prefixIndex]}${chars.join('')}`
3939
return newClassName
4040
}
4141

packages/unplugin-tailwindcss-mangle/src/index.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,26 +15,27 @@ const unplugin = createUnplugin((options: Options | undefined = {}, meta) => {
1515
// ignore className like 'filter','container'
1616
// it may be dangerous to mangle/rename all StringLiteral , so use /-/ test for only those with /-/ like:
1717
// bg-[#123456] w-1 etc...
18-
return /-/.test(className)
18+
return /[-:]/.test(className)
1919
}
2020
let classSet: Set<string>
21-
let cached: boolean
21+
// let cached: boolean
2222
const classGenerator = new ClassGenerator()
2323
function getCachedClassSet() {
24-
if (cached) {
25-
return classSet
26-
}
24+
// if (cached) {
25+
// return classSet
26+
// }
2727
const set = getClassCacheSet()
2828
set.forEach((c) => {
2929
if (!mangleClass(c)) {
3030
set.delete(c)
31+
// console.log(c)
3132
}
3233
})
3334
// preserveClass.forEach((c) => {
3435
// set.delete(c)
3536
// })
3637
classSet = set
37-
cached = true
38+
// cached = true
3839
return classSet
3940
}
4041
return {

packages/unplugin-tailwindcss-mangle/src/js/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ export function jsHandler(rawSource: string, options: IHandlerOptions) {
1717
const ast = parse(rawSource)
1818
const set = options.runtimeSet
1919
const clsGen = options.classGenerator
20-
// 这样搞会把原先所有的 children 含有相关的 也都转义了
20+
2121
const topt: TraverseOptions<Node> = {
2222
StringLiteral: {
2323
enter(p) {
2424
const n = p.node
25-
const arr = splitCode(n.value) // .split(/\s/).filter((x) => x)
25+
const arr = splitCode(n.value)
2626
let rawStr = n.value
2727
for (let i = 0; i < arr.length; i++) {
2828
const v = arr[i]

packages/unplugin-tailwindcss-mangle/src/js/split.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ export function isValidSelector(selector = ''): selector is string {
66

77
// export const splitCode = (code: string) => [...new Set(code.split(/\\?[\s'"`;={}]+/g))].filter(isValidSelector)
88

9-
export const splitCode = (code: string) => code.split(/\s+/).filter(isValidSelector)
9+
export const splitCode = (code: string) => code.split(/[\s"]+/).filter(isValidSelector)

packages/unplugin-tailwindcss-mangle/src/utils.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,7 @@ export function getGroupedEntries<T>(
5454
return groupedEntries as Record<'css' | 'html' | 'js' | 'other', [string, T][]>
5555
}
5656

57-
export const acceptPrefix = 'abcdefghijklmnopqrstuvwxyz_'.split('')
58-
59-
export const acceptChars = 'abcdefghijklmnopqrstuvwxyz_-0123456789'.split('')
57+
export const acceptChars = 'abcdefghijklmnopqrstuvwxyz'.split('')
6058

6159
export function stripEscapeSequence(words: string) {
6260
return words.replace(/\\/g, '')

0 commit comments

Comments
 (0)