Skip to content

Commit 902e40d

Browse files
committed
feat: use vite8
1 parent cff4bc6 commit 902e40d

File tree

7 files changed

+101
-171
lines changed

7 files changed

+101
-171
lines changed

build/utils/tsToJs.ts

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,16 @@
1-
import { transformSync } from 'esbuild'
1+
import { transformSync } from 'oxc-transform'
22

33
export function tsToJs(content: string | null): string {
44
if (!content) {
55
return ''
66
}
7-
// esbuild will remove blank line
8-
const beforeTransformContent = content.replace(
9-
/\n(\s)*\n/g,
10-
'\n__blankline\n'
11-
)
12-
const { code } = transformSync(beforeTransformContent, {
13-
loader: 'ts',
14-
minify: false,
15-
minifyWhitespace: false,
16-
charset: 'utf8'
7+
const { code, errors } = transformSync('file.ts', content, {
8+
typescript: {
9+
onlyRemoveTypeImports: true
10+
}
1711
})
18-
return code.trim().replace(/__blankline;/g, '')
12+
if (errors.length > 0) {
13+
console.error('oxc-transform errors:', errors)
14+
}
15+
return code.trim()
1916
}

build/vite-plugin-demo.ts

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ import { demoIndexTransFormPlugin } from './vite-plugin-index-tranform'
66

77
const fileRegex = /\.(md|vue)$/
88

9-
const vuePlugin = vue({
10-
include: [/\.vue$/, /\.md$/]
11-
})
12-
139
export function createDemoPlugin(): Plugin[] {
10+
const vuePlugin = vue({
11+
include: [/\.vue$/, /\.md$/]
12+
})
13+
1414
const naiveDemoVitePlugin: Plugin = {
1515
name: 'demo-vite',
1616
async transform(_, id) {
@@ -23,22 +23,8 @@ export function createDemoPlugin(): Plugin[] {
2323
if (fileRegex.test(file)) {
2424
const code = await getTransformedVueSrc(file)
2525
if (code === undefined)
26-
return []
27-
28-
const { handleHotUpdate } = vuePlugin
29-
if (typeof handleHotUpdate === 'function') {
30-
return handleHotUpdate({
31-
...ctx,
32-
read: () => code
33-
})
34-
}
35-
else if (handleHotUpdate?.handler) {
36-
return handleHotUpdate.handler({
37-
...ctx,
38-
read: () => code
39-
})
40-
}
41-
return []
26+
return
27+
ctx.read = () => code
4228
}
4329
}
4430
}

package.json

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@
3535
"scripts": {
3636
"start": "pnpm run dev",
3737
"dev": "pnpm run clean && pnpm run gen-version && pnpm run gen-volar-dts && NODE_ENV=development vite",
38-
"build:package": "pnpm run gen-version && pnpm run clean && pnpm run gen-volar-dts && tsc -b --force tsconfig.esm.json && tsx scripts/pre-build/pre-cjs-build.ts && tsc -b --force tsconfig.cjs.json && rollup -c && pnpm run test:umd && pnpm run test:esm && pnpm run post-build && rimraf {es,lib}/*.tsbuildinfo",
38+
"build:package": "pnpm run gen-version && pnpm run clean && pnpm run gen-volar-dts && tsc -b --force tsconfig.esm.json && tsx scripts/pre-build/pre-cjs-build.ts && tsc -b --force tsconfig.cjs.json && pnpm run build:dist && pnpm run test:umd && pnpm run test:esm && pnpm run post-build && rimraf {es,lib}/*.tsbuildinfo",
39+
"build:dist": "BUILD_ENV=development vite build -c vite.build.mts && BUILD_ENV=production vite build -c vite.build.mts",
3940
"build:themes": "tsc -b --force themes/tusimple/tsconfig.esm.json && tsc -b --force themes/tusimple/tsconfig.cjs.json",
4041
"build:site": "bash ./scripts/pre-build-site/pre-build-site.sh && NODE_ENV=production NODE_OPTIONS=--max-old-space-size=4096 vite build && bash ./scripts/post-build-site/post-build-site.sh",
4142
"clean": "rimraf site lib es dist node_modules/naive-ui themes/tusimple/es themes/tusimple/lib",
@@ -98,10 +99,6 @@
9899
"@babel/traverse": "^7.28.0",
99100
"@lylajs/web": "^2.1.0",
100101
"@rollup/plugin-babel": "^6.0.4",
101-
"@rollup/plugin-commonjs": "^28.0.6",
102-
"@rollup/plugin-node-resolve": "^16.0.1",
103-
"@rollup/plugin-replace": "^6.0.2",
104-
"@rollup/plugin-terser": "^0.4.4",
105102
"@types/babel__core": "^7.20.5",
106103
"@types/babel__generator": "^7.27.0",
107104
"@types/babel__traverse": "^7.28.0",
@@ -112,16 +109,15 @@
112109
"@vicons/fluent": "^0.13.0",
113110
"@vicons/ionicons4": "^0.13.0",
114111
"@vicons/ionicons5": "^0.13.0",
115-
"@vitejs/plugin-vue": "^6.0.0",
116-
"@vitest/coverage-v8": "^3.2.4",
112+
"@vitejs/plugin-vue": "^6.0.2",
113+
"@vitest/coverage-v8": "^4.0.15",
117114
"@vue/compiler-sfc": "^3.5.21",
118115
"@vue/server-renderer": "^3.5.21",
119116
"@vue/test-utils": "^2.4.6",
120117
"autoprefixer": "^10.4.21",
121118
"codesandbox": "^2.2.3",
122119
"cssnano": "^7.1.0",
123120
"deepmerge": "^4.3.1",
124-
"esbuild": "0.25.10",
125121
"eslint": "^9.6.0",
126122
"express": "^5.1.0",
127123
"fast-glob": "^3.3.1",
@@ -134,22 +130,22 @@
134130
"katex": "^0.16.22",
135131
"lint-staged": "^16.1.6",
136132
"marked": "^12.0.2",
133+
"oxc-transform": "^0.101.0",
137134
"prettier": "^3.6.2",
138135
"rimraf": "^6.0.1",
139-
"rollup": "^4.45.1",
140-
"rollup-plugin-esbuild": "^6.2.1",
141136
"superagent": "^10.2.2",
142137
"tsx": "^4.20.3",
143138
"typescript": "^5.9.2",
144139
"vfonts": "^0.0.3",
145-
"vite": "^7.0.4",
146-
"vitest": "^3.2.4",
140+
"vite": "8.0.0-beta.0",
141+
"vitest": "^4.0.15",
147142
"vue": "^3.5.21",
148143
"vue-router": "^4.5.1",
149144
"vue-tsc": "^3.0.7"
150145
},
151146
"pnpm": {
152147
"overrides": {
148+
"vite": "8.0.0-beta.0",
153149
"cssstyle": "5.2.1"
154150
},
155151
"peerDependencyRules": {

rollup.config.mjs

Lines changed: 0 additions & 110 deletions
This file was deleted.

tsconfig.esbuild.json

Lines changed: 0 additions & 8 deletions
This file was deleted.

vite.build.mts

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import path from 'node:path'
2+
import process from 'node:process'
3+
import { babel } from '@rollup/plugin-babel'
4+
import { defineConfig } from 'vite'
5+
6+
const extensions = ['.mjs', '.js', '.json', '.ts', '.tsx']
7+
8+
const isDev = process.env.BUILD_ENV === 'development'
9+
10+
export default defineConfig({
11+
build: {
12+
emptyOutDir: false,
13+
lib: {
14+
entry: path.resolve(__dirname, 'src/index.ts'),
15+
name: 'naive',
16+
formats: ['es', 'umd'],
17+
fileName: (format) => {
18+
if (format === 'umd') {
19+
return isDev ? 'index.js' : 'index.prod.js'
20+
}
21+
return isDev ? 'index.mjs' : 'index.prod.mjs'
22+
}
23+
},
24+
outDir: 'dist',
25+
sourcemap: true,
26+
minify: !isDev,
27+
rolldownOptions: {
28+
external: ['vue'],
29+
output: {
30+
globals: {
31+
vue: 'Vue'
32+
},
33+
exports: 'named'
34+
},
35+
plugins: [
36+
babel({
37+
extensions,
38+
babelHelpers: 'bundled'
39+
})
40+
]
41+
}
42+
},
43+
oxc: {
44+
jsx: {
45+
runtime: 'classic',
46+
pragma: 'h',
47+
pragmaFrag: 'Fragment',
48+
development: false
49+
}
50+
},
51+
define: {
52+
__DEV__: JSON.stringify(isDev),
53+
'process.env.NODE_ENV': JSON.stringify(isDev ? 'development' : 'production')
54+
}
55+
})

vite.config.mts

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ const testExclude = isBuildTimeTest
1717

1818
export default defineConfig({
1919
root: __dirname,
20-
plugins: createDemoPlugin(),
20+
plugins: [
21+
...createDemoPlugin()
22+
],
2123
resolve: {
2224
// In production site build, we want to import naive-ui from node_modules
2325
alias:
@@ -73,11 +75,19 @@ export default defineConfig({
7375
},
7476
build: {
7577
outDir: 'site',
76-
rollupOptions: {
78+
rolldownOptions: {
7779
output: {
78-
manualChunks: {
79-
'grapheme-splitter': ['grapheme-splitter'],
80-
katex: ['katex']
80+
advancedChunks: {
81+
groups: [
82+
{
83+
name: 'grapheme-splitter',
84+
test: /grapheme-splitter/
85+
},
86+
{
87+
name: 'katex',
88+
test: /katex/
89+
}
90+
]
8191
}
8292
},
8393
plugins: [
@@ -87,10 +97,14 @@ export default defineConfig({
8797
]
8898
}
8999
},
90-
esbuild: {
91-
jsx: 'transform',
92-
jsxFactory: 'h',
93-
jsxFragment: 'Fragment'
100+
oxc: {
101+
jsx: {
102+
runtime: 'classic',
103+
pragma: 'h',
104+
pragmaFrag: 'Fragment',
105+
// Disable React-specific development features that add __source and __self props
106+
development: false
107+
}
94108
},
95109
test: {
96110
globals: true,

0 commit comments

Comments
 (0)