Skip to content

Commit ecc5731

Browse files
committed
feat: init
1 parent 23711ec commit ecc5731

File tree

9 files changed

+632
-398
lines changed

9 files changed

+632
-398
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
"picocolors": "^1.1.1",
6666
"playwright-chromium": "^1.56.1",
6767
"prettier": "3.6.2",
68-
"rolldown": "1.0.0-beta.46",
68+
"rolldown": "https://pkg.pr.new/rolldown@7233edd",
6969
"rollup": "^4.43.0",
7070
"simple-git-hooks": "^2.13.1",
7171
"tsx": "^4.20.6",

packages/vite/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@
8787
"lightningcss": "^1.30.2",
8888
"picomatch": "^4.0.3",
8989
"postcss": "^8.5.6",
90-
"rolldown": "1.0.0-beta.46",
90+
"rolldown": "https://pkg.pr.new/rolldown@7233edd",
9191
"tinyglobby": "^0.2.15"
9292
},
9393
"optionalDependencies": {
@@ -99,7 +99,7 @@
9999
"@jridgewell/trace-mapping": "^0.3.31",
100100
"@oxc-project/types": "0.96.0",
101101
"@polka/compression": "^1.0.0-next.25",
102-
"@rolldown/pluginutils": "^1.0.0-beta.46",
102+
"@rolldown/pluginutils": "https://pkg.pr.new/@rolldown/pluginutils@7233edd",
103103
"@rollup/plugin-alias": "^5.1.1",
104104
"@rollup/plugin-commonjs": "28.0.6",
105105
"@rollup/plugin-dynamic-import-vars": "2.1.4",

packages/vite/src/node/plugins/asset.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import path from 'node:path'
22
import fsp from 'node:fs/promises'
33
import { Buffer } from 'node:buffer'
44
import * as mrmime from 'mrmime'
5+
import { assetPlugin as nativeAssetPlugin } from 'rolldown/experimental'
56
import type {
67
NormalizedOutputOptions,
78
PluginContext,
@@ -15,7 +16,7 @@ import {
1516
createToImportMetaURLBasedRelativeRuntime,
1617
toOutputFilePathInJS,
1718
} from '../build'
18-
import type { Plugin } from '../plugin'
19+
import { type Plugin, perEnvironmentPlugin } from '../plugin'
1920
import type { ResolvedConfig } from '../config'
2021
import { checkPublicFile } from '../publicDir'
2122
import {
@@ -148,6 +149,22 @@ export function renderAssetUrlInJS(
148149
* Also supports loading plain strings with import text from './foo.txt?raw'
149150
*/
150151
export function assetPlugin(config: ResolvedConfig): Plugin {
152+
if (config.command === 'build' && config.nativePluginEnabledLevel >= 1) {
153+
return perEnvironmentPlugin('native:asset', (env) => {
154+
return nativeAssetPlugin({
155+
isLib: !!env.config.build.lib,
156+
isSsr: !!env.config.build.ssr,
157+
isWorker: env.config.isWorker,
158+
urlBase: env.config.base,
159+
publicDir: env.config.publicDir,
160+
decodedBase: env.config.decodedBase,
161+
isSkipAssets: !env.config.build.emitAssets,
162+
assetInlineLimit: env.config.build.assetsInlineLimit,
163+
assetsInclude: env.config.rawAssetsInclude,
164+
})
165+
})
166+
}
167+
151168
registerCustomMime()
152169

153170
return {

packages/vite/src/node/plugins/css.ts

Lines changed: 83 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import type {
2727
TransformAttributeResult as LightningCssTransformAttributeResult,
2828
TransformResult as LightningCssTransformResult,
2929
} from 'lightningcss'
30+
import { viteCSSPlugin, viteCSSPostPlugin } from 'rolldown/experimental'
3031
import type { LightningCSSOptions } from '#types/internal/lightningcssOptions'
3132
import type {
3233
LessPreprocessorBaseOptions,
@@ -89,7 +90,7 @@ import type { ResolveIdFn } from '../idResolver'
8990
import { PartialEnvironment } from '../baseEnvironment'
9091
import type { TransformPluginContext } from '../server/pluginContainer'
9192
import { searchForWorkspaceRoot } from '../server/searchRoot'
92-
import { type DevEnvironment } from '..'
93+
import { type DevEnvironment, perEnvironmentPlugin } from '..'
9394
import type { PackageCache } from '../packages'
9495
import { findNearestMainPackageData } from '../packages'
9596
import { nodeResolveWithVite } from '../nodeResolve'
@@ -311,6 +312,48 @@ export function cssPlugin(config: ResolvedConfig): Plugin {
311312
})
312313
}
313314

315+
if (isBuild && config.nativePluginEnabledLevel >= 1) {
316+
return perEnvironmentPlugin('vite:native-css', (env) => {
317+
return [
318+
{
319+
name: 'vite:css-compat',
320+
buildStart() {
321+
preprocessorWorkerController = createPreprocessorWorkerController(
322+
normalizeMaxWorkers(config.css.preprocessorMaxWorkers),
323+
)
324+
preprocessorWorkerControllerCache.set(
325+
config,
326+
preprocessorWorkerController,
327+
)
328+
},
329+
330+
buildEnd() {
331+
preprocessorWorkerController?.close()
332+
},
333+
},
334+
viteCSSPlugin({
335+
isLib: !!env.config.build.lib,
336+
publicDir: env.config.publicDir,
337+
async compileCSS(url, importer, resolver) {
338+
return compileCSS(
339+
env,
340+
url,
341+
importer,
342+
preprocessorWorkerController!,
343+
(url, importer) => {
344+
return resolver.call(url, importer)
345+
},
346+
)
347+
},
348+
resolveUrl(url, importer) {
349+
return idResolver(env, url, importer)
350+
},
351+
assetInlineLimit: env.config.build.assetsInlineLimit,
352+
}),
353+
]
354+
})
355+
}
356+
314357
return {
315358
name: 'vite:css',
316359

@@ -506,6 +549,45 @@ export function cssPostPlugin(config: ResolvedConfig): Plugin {
506549
return cssBundleName
507550
}
508551

552+
if (config.command === 'build' && config.nativePluginEnabledLevel >= 1) {
553+
const isLegacySet = new Set<string>()
554+
return perEnvironmentPlugin('native:css-post', (env) => {
555+
return [
556+
{
557+
name: 'native:css-post-compat',
558+
...(config.isOutputOptionsForLegacyChunks
559+
? {
560+
renderChunk(_, __, opts) {
561+
const isLegacy =
562+
env.config.isOutputOptionsForLegacyChunks?.(opts) ?? false
563+
if (isLegacy) {
564+
isLegacySet.add(env.name)
565+
} else {
566+
isLegacySet.delete(env.name)
567+
}
568+
},
569+
}
570+
: {}),
571+
},
572+
viteCSSPostPlugin({
573+
isLib: !!env.config.build.lib,
574+
isSsr: !!env.config.build.ssr,
575+
isWorker: env.config.isWorker,
576+
isLegacy: env.config.isOutputOptionsForLegacyChunks
577+
? () => isLegacySet.has(env.name)
578+
: undefined,
579+
isClient: env.config.consumer === 'client',
580+
cssCodeSplit: env.config.build.cssCodeSplit,
581+
sourcemap: !!env.config.build.sourcemap,
582+
assetsDir: env.config.build.assetsDir,
583+
urlBase: env.config.base,
584+
decodedBase: env.config.decodedBase,
585+
renderBuiltUrl: env.config.experimental.renderBuiltUrl,
586+
}),
587+
]
588+
})
589+
}
590+
509591
return {
510592
name: 'vite:css-post',
511593

packages/vite/src/node/plugins/html.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,12 @@ import type {
1717
} from 'parse5'
1818
import { stripLiteral } from 'strip-literal'
1919
import escapeHtml from 'escape-html'
20-
import type { MinimalPluginContextWithoutEnvironment, Plugin } from '../plugin'
20+
import { viteHtmlPlugin } from 'rolldown/experimental'
21+
import {
22+
type MinimalPluginContextWithoutEnvironment,
23+
type Plugin,
24+
perEnvironmentPlugin,
25+
} from '../plugin'
2126
import type { ViteDevServer } from '../server'
2227
import {
2328
decodeURIIfPossible,
@@ -366,6 +371,21 @@ export function buildHtmlPlugin(config: ResolvedConfig): Plugin {
366371
// Same reason with `htmlInlineProxyPlugin`
367372
isAsyncScriptMap.set(config, new Map())
368373

374+
if (config.command === 'build' && config.nativePluginEnabledLevel >= 1) {
375+
return perEnvironmentPlugin('native:vite-html', (env) => {
376+
return viteHtmlPlugin({
377+
isLib: !!env.config.build.lib,
378+
isSsr: !!env.config.build.ssr,
379+
urlBase: env.config.base,
380+
publicDir: env.config.publicDir,
381+
decodedBase: env.config.decodedBase,
382+
modulePreload: env.config.build.modulePreload,
383+
cssCodeSplit: env.config.build.cssCodeSplit,
384+
assetInlineLimit: env.config.build.assetsInlineLimit,
385+
})
386+
})
387+
}
388+
369389
return {
370390
name: 'vite:build-html',
371391

packages/vite/src/node/plugins/importAnalysisBuild.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -754,24 +754,27 @@ export function buildImportAnalysisPlugin(config: ResolvedConfig): Plugin[] {
754754
}
755755

756756
if (config.nativePluginEnabledLevel >= 1) {
757-
delete plugin.transform
758-
delete plugin.resolveId
759-
delete plugin.load
760757
return [
761-
plugin,
762-
perEnvironmentPlugin('native:import-analysis-build', (environment) => {
758+
perEnvironmentPlugin('native:import-analysis-build', (env) => {
763759
const preloadCode = getPreloadCode(
764-
environment,
760+
env,
765761
!!renderBuiltUrl,
766762
isRelativeBase,
767763
)
768764
return nativeBuildImportAnalysisPlugin({
769765
preloadCode,
770-
insertPreload: getInsertPreload(environment),
766+
insertPreload: getInsertPreload(env),
771767
// this field looks redundant, put a dummy value for now
772768
optimizeModulePreloadRelativePaths: false,
773769
renderBuiltUrl: !!renderBuiltUrl,
774770
isRelativeBase,
771+
v2: {
772+
isSsr: !!env.config.build.ssr,
773+
urlBase: env.config.base,
774+
decodedBase: env.config.decodedBase,
775+
modulePreload: env.config.build.modulePreload,
776+
renderBuiltUrl: env.config.experimental.renderBuiltUrl,
777+
},
775778
})
776779
}),
777780
]

0 commit comments

Comments
 (0)