Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Using Rolldown with Vite v6 #43

Draft
wants to merge 41 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
a5d5bc3
feat: use rolldown in the dep optimizer
sapphi-red Sep 11, 2024
dee973b
feat: use rolldown for build
sapphi-red Sep 12, 2024
b88882e
chore: skip plugin-legacy build
sapphi-red Sep 12, 2024
b64fe0f
chore: skip typecheck for now
sapphi-red Sep 12, 2024
7997510
chore: 🤖 add justfile for faster dev
IWANABETHATGUY Aug 15, 2024
2ca627d
feat: add experimental.enableNativePlugin (#41)
IWANABETHATGUY Sep 10, 2024
ff77f98
feat: clone class plugins correctly
IWANABETHATGUY Sep 13, 2024
a9e70bc
feat: native build plugins (#45) (#46)
IWANABETHATGUY Sep 12, 2024
feccca3
perf: reduce pre alias plugin in build mode
IWANABETHATGUY Sep 12, 2024
7151a37
feat: 🎸 add an new option to disable build report
IWANABETHATGUY Sep 13, 2024
119754b
feat: support native define
sapphi-red Sep 18, 2024
f6a0470
feat: use filter for plugins (#49) (#50) (#51) (#52) (#53)
sapphi-red Sep 18, 2024
12180d4
perf: ⚡️ use default resolver (#56)
IWANABETHATGUY Sep 14, 2024
8bbfd48
fix: 🐛 lint (#58)
IWANABETHATGUY Sep 20, 2024
b35781f
chore: bump rolldown
sapphi-red Sep 24, 2024
d37571c
chore: skip data uri by load fallback plugin for native data uri hand…
sapphi-red Sep 24, 2024
9986544
feat: handle non-relative paths by Vite's resolver for enableNativePl…
sapphi-red Sep 19, 2024
98453d5
chore: remove browser field edge case test
sapphi-red Sep 25, 2024
e0ab983
chore: use advancedChunks instead of manualChunks
sapphi-red Oct 1, 2024
10a0973
feat: convert `optimizeDeps.esbuildOptions` to `optimizeDeps.rollupOp…
sapphi-red Oct 4, 2024
20266fa
fix: optimizeDeps test pass on windows
sapphi-red Oct 9, 2024
6b549c2
chore: make some tests passing
sapphi-red Oct 9, 2024
f3ece5d
chore: make glob-import test pass with workarounds
sapphi-red Oct 9, 2024
3b387cd
chore: run worker-es tests
sapphi-red Oct 9, 2024
da69fbb
fix: use preliminaryFileName for chunkMetadata key
sapphi-red Oct 10, 2024
0b5cdc6
feat: oxc tranformer (#60)
underfin Oct 11, 2024
38728c1
feat: use `onlyRemoveTypeImports`
sapphi-red Oct 11, 2024
e54514f
chore: enable continuous release under rolldown-vite (#61)
yyx990803 Oct 12, 2024
1c9ed4b
feat: environment aware native plugins
sapphi-red Oct 15, 2024
7cd74ec
feat: export transformWithOxc (#62)
underfin Oct 17, 2024
5e23410
feat: add oxc jsxInclude and jsxExclude (#63)
underfin Oct 18, 2024
3a636b8
chore: update some tests that relies on rollup's behavior
sapphi-red Oct 24, 2024
2c0c2bf
chore: skip environment-react-ssr for now
sapphi-red Oct 24, 2024
1e91dab
chore: bump rolldown
sapphi-red Oct 24, 2024
88e1930
chore: skip minifySyntax test as it relies on specific esbuild option
sapphi-red Oct 24, 2024
fecb020
chore: fix type errors
sapphi-red Oct 24, 2024
df2ddf0
chore: skip sideeffects set for HTML scripts for now
sapphi-red Nov 6, 2024
29911a4
chore: partial revert "refactor: use `originalFileNames`/`names` (#18…
sapphi-red Nov 6, 2024
3d8ada8
chore: tweak tests
sapphi-red Nov 6, 2024
481c342
chore: bump rolldown
sapphi-red Nov 6, 2024
5d478e0
chore: enable backend-integration test
sapphi-red Nov 6, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -173,8 +173,8 @@ jobs:
- name: Check formatting
run: pnpm prettier --write --log-level=warn . && git diff --exit-code

- name: Typecheck
run: pnpm run typecheck
# - name: Typecheck
# run: pnpm run typecheck

- name: Test docs
run: pnpm run test-docs
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/preview-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ permissions:
on:
push:
branches:
- main
- rolldown-v6
pull_request:
types: [opened, synchronize, labeled]

jobs:
preview:
if: >
github.repository == 'vitejs/vite' &&
github.repository == 'rolldown/vite' &&
(github.event_name == 'push' ||
(github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'trigger: preview')))
runs-on: ubuntu-latest
Expand All @@ -35,4 +35,4 @@ jobs:
working-directory: ./packages/vite
run: pnpm build

- run: pnpm dlx [email protected] publish --compact --pnpm ./packages/vite
- run: pnpm dlx [email protected] publish --pnpm ./packages/vite
13 changes: 13 additions & 0 deletions justfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
build-vite:
pnpm --filter vite run build-bundle

test-serve:
pnpm run test-serve

test-build:
pnpm run test-build

test: test-serve test-build

fmt:
pnpm --filter vite run format
1 change: 0 additions & 1 deletion packages/plugin-legacy/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
},
"scripts": {
"dev": "unbuild --stub",
"build": "unbuild && pnpm run patch-cjs",
"patch-cjs": "tsx ../../scripts/patchCJS.ts",
"prepublishOnly": "npm run build"
},
Expand Down
77 changes: 33 additions & 44 deletions packages/vite/LICENSE.md
Original file line number Diff line number Diff line change
Expand Up @@ -360,15 +360,11 @@ Repository: lukeed/polka

---------------------------------------

## @rollup/plugin-alias, @rollup/plugin-commonjs, @rollup/plugin-dynamic-import-vars, @rollup/pluginutils
## @rollup/plugin-alias, @rollup/plugin-dynamic-import-vars, @rollup/pluginutils
License: MIT
By: Johannes Stein
Repository: rollup/plugins

License: MIT
By: Rich Harris
Repository: rollup/plugins

License: MIT
By: LarsDenBakker
Repository: rollup/plugins
Expand Down Expand Up @@ -506,38 +502,6 @@ Repository: git+https://github.com/paulmillr/chokidar.git

---------------------------------------

## commondir, shell-quote
License: MIT
By: James Halliday
Repositories: http://github.com/substack/node-commondir.git, http://github.com/ljharb/shell-quote.git

> The MIT License
>
> Copyright (c) 2013 James Halliday ([email protected])
>
> Permission is hereby granted, free of charge,
> to any person obtaining a copy of this software and
> associated documentation files (the "Software"), to
> deal in the Software without restriction, including
> without limitation the rights to use, copy, modify,
> merge, publish, distribute, sublicense, and/or sell
> copies of the Software, and to permit persons to whom
> the Software is furnished to do so,
> subject to the following conditions:
>
> The above copyright notice and this permission notice
> shall be included in all copies or substantial portions of the Software.
>
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
> OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
> ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
> TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

---------------------------------------

## connect
License: MIT
By: TJ Holowaychuk, Douglas Christopher Wilson, Jonathan Ong, Tim Caswell
Expand Down Expand Up @@ -1122,13 +1086,6 @@ Repository: git+https://github.com/css-modules/icss-utils.git

---------------------------------------

## is-reference
License: MIT
By: Rich Harris
Repository: git+https://github.com/Rich-Harris/is-reference.git

---------------------------------------

## isexe, which
License: ISC
By: Isaac Z. Schlueter
Expand Down Expand Up @@ -1942,6 +1899,38 @@ Repository: kevva/shebang-command

---------------------------------------

## shell-quote
License: MIT
By: James Halliday
Repository: http://github.com/ljharb/shell-quote.git

> The MIT License
>
> Copyright (c) 2013 James Halliday ([email protected])
>
> Permission is hereby granted, free of charge,
> to any person obtaining a copy of this software and
> associated documentation files (the "Software"), to
> deal in the Software without restriction, including
> without limitation the rights to use, copy, modify,
> merge, publish, distribute, sublicense, and/or sell
> copies of the Software, and to permit persons to whom
> the Software is furnished to do so,
> subject to the following conditions:
>
> The above copyright notice and this permission notice
> shall be included in all copies or substantial portions of the Software.
>
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
> OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
> ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
> TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

---------------------------------------

## sirv
License: MIT
By: Luke Edwards
Expand Down
3 changes: 2 additions & 1 deletion packages/vite/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"type": "module",
"license": "MIT",
"author": "Evan You",
"description": "Native-ESM powered web dev build tool",
"description": "Vite on Rolldown preview",
"bin": {
"vite": "bin/vite.js"
},
Expand Down Expand Up @@ -88,6 +88,7 @@
"dependencies": {
"esbuild": "^0.24.0",
"postcss": "^8.4.47",
"rolldown": "https://pkg.pr.new/rolldown@dee08ac",
"rollup": "^4.23.0"
},
"devDependencies": {
Expand Down
1 change: 1 addition & 0 deletions packages/vite/rollup.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ const nodeConfig = defineConfig({
'yaml',
'jiti',
/^tsx(\/|$)/,
'rolldown/experimental',
...Object.keys(pkg.dependencies),
],
plugins: [
Expand Down
15 changes: 10 additions & 5 deletions packages/vite/rollup.dts.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ const external = [
/^node:*/,
/^vite\//,
'rollup/parseAst',
'rolldown/experimental',
...Object.keys(pkg.dependencies),
// lightningcss types are bundled
...Object.keys(pkg.devDependencies).filter((d) => d !== 'lightningcss'),
Expand Down Expand Up @@ -46,11 +47,15 @@ const identifierWithTrailingDollarRE = /\b(\w+)\$\d+\b/g
* the module that imports the identifer as a named import alias
*/
const identifierReplacements: Record<string, Record<string, string>> = {
rollup: {
Plugin$1: 'rollup.Plugin',
PluginContext$1: 'rollup.PluginContext',
TransformPluginContext$1: 'rollup.TransformPluginContext',
TransformResult$2: 'rollup.TransformResult',
rolldown: {
Plugin$1: 'rolldown.Plugin',
PluginContext$1: 'rolldown.PluginContext',
TransformPluginContext$1: 'rolldown.TransformPluginContext',
TransformResult$3: 'rolldown.TransformResult',
},
'rolldown/experimental': {
TransformOptions$2: 'rolldown_experimental_TransformOptions',
TransformResult$2: 'rolldown_experimental_TransformResult',
},
esbuild: {
TransformResult$1: 'esbuild_TransformResult',
Expand Down
28 changes: 14 additions & 14 deletions packages/vite/src/node/__tests__/build.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { basename, resolve } from 'node:path'
import { fileURLToPath } from 'node:url'
import colors from 'picocolors'
import { describe, expect, test, vi } from 'vitest'
import type { OutputChunk, OutputOptions, RollupOutput } from 'rollup'
import type { OutputChunk, OutputOptions, RollupOutput } from 'rolldown'
import type { LibraryFormats, LibraryOptions } from '../build'
import {
build,
Expand Down Expand Up @@ -182,9 +182,9 @@ describe('resolveBuildOutputs', () => {
{
format: 'es',
},
{
format: 'umd',
},
// {
// format: 'umd',
// },
])
})

Expand Down Expand Up @@ -223,7 +223,7 @@ describe('resolveBuildOutputs', () => {
expect(resolveBuild).toThrowError(/Option "build\.lib\.name" is required/)
})

test('throws an error when lib.name is missing on umd format', () => {
test.skip('throws an error when lib.name is missing on umd format', () => {
const logger = createLogger()
const libOptions: LibraryOptions = { ...baseLibOptions, formats: ['umd'] }
const resolveBuild = () => resolveBuildOutputs(void 0, libOptions, logger)
Expand All @@ -242,7 +242,7 @@ describe('resolveBuildOutputs', () => {
)
})

test('throws an error when output.name is missing on umd format', () => {
test.skip('throws an error when output.name is missing on umd format', () => {
const logger = createLogger()
const libOptions: LibraryOptions = { ...baseLibOptions }
const outputs: OutputOptions[] = [{ format: 'umd' }]
Expand Down Expand Up @@ -346,7 +346,7 @@ describe('resolveLibFilename', () => {
test('module package extensions', () => {
const formatsToFilenames: FormatsToFileNames = [
['es', 'my-lib.js'],
['umd', 'my-lib.umd.cjs'],
// ['umd', 'my-lib.umd.cjs'],
['cjs', 'my-lib.cjs'],
['iife', 'my-lib.iife.js'],
]
Expand Down Expand Up @@ -496,13 +496,13 @@ describe('resolveBuildOutputs', () => {

expect(resolveBuildOutputs(undefined, libOptions, {} as Logger)).toEqual([
{ format: 'es' },
{ format: 'umd' },
// { format: 'umd' },
])
expect(
resolveBuildOutputs({ name: 'A' }, libOptions, {} as Logger),
).toEqual([
{ format: 'es', name: 'A' },
{ format: 'umd', name: 'A' },
// { format: 'umd', name: 'A' },
])
expect(
resolveBuildOutputs([{ name: 'A' }], libOptions, {} as Logger),
Expand All @@ -529,7 +529,7 @@ describe('resolveBuildOutputs', () => {
).toEqual([{ name: 'A' }])
})

test('umd or iife: should not support multiple entries', () => {
test.skip('umd or iife: should not support multiple entries', () => {
;['umd', 'iife'].forEach((format) => {
expect(() =>
resolveBuildOutputs(
Expand All @@ -546,7 +546,7 @@ describe('resolveBuildOutputs', () => {
})
})

test('umd or iife: should define build.lib.name', () => {
test.skip('umd or iife: should define build.lib.name', () => {
;['umd', 'iife'].forEach((format) => {
expect(() =>
resolveBuildOutputs(
Expand Down Expand Up @@ -602,7 +602,7 @@ describe('resolveBuildOutputs', () => {
fileName: 'index.mjs',
},
{
fileName: expect.stringMatching(/assets\/index-\w*\.css/),
fileName: expect.stringMatching(/assets\/index-[-\w]*\.css/),
},
],
})
Expand Down Expand Up @@ -633,7 +633,7 @@ describe('resolveBuildOutputs', () => {
fileName: 'index.mjs',
},
{
fileName: expect.stringMatching(/assets\/index-\w*\.css/),
fileName: expect.stringMatching(/assets\/index-[-\w]*\.css/),
},
],
})
Expand Down Expand Up @@ -707,7 +707,7 @@ test('default sharedConfigBuild true on build api', async () => {
expect(counter).toBe(1)
})

test('adjust worker build error for worker.format', async () => {
test.skip('adjust worker build error for worker.format', async () => {
try {
await build({
root: resolve(__dirname, 'fixtures/worker-dynamic'),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ async function createAssetImportMetaurlPluginTransform() {
const environment = new PartialEnvironment('client', config)

return async (code: string) => {
// @ts-expect-error transform should exist
const result = await instance.transform.call(
// @ts-expect-error transform.handler should exist
const result = await instance.transform.handler.call(
{ environment, parse: parseAst },
code,
'foo.ts',
Expand Down
7 changes: 4 additions & 3 deletions packages/vite/src/node/__tests__/plugins/css.spec.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import path from 'node:path'
import { fileURLToPath } from 'node:url'
import { describe, expect, test } from 'vitest'
import type { Plugin } from 'rolldown'
import { resolveConfig } from '../../config'
import type { InlineConfig } from '../../config'
import {
Expand Down Expand Up @@ -210,15 +211,15 @@ async function createCssPluginTransform(inlineConfig: InlineConfig = {}) {
const config = await resolveConfig(inlineConfig, 'serve')
const environment = new PartialEnvironment('client', config)

const { transform, buildStart } = cssPlugin(config)
const { transform, buildStart } = cssPlugin(config) as Plugin

// @ts-expect-error buildStart is function
await buildStart.call({})

return {
async transform(code: string, id: string) {
// @ts-expect-error transform is function
return await transform.call(
// @ts-expect-error transform.handler is function
return await transform.handler.call(
{
addWatchFile() {
return
Expand Down
10 changes: 7 additions & 3 deletions packages/vite/src/node/__tests__/plugins/import.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,13 @@ describe('transformCjsImport', () => {
'',
config,
),
).toBe(
'import __vite__cjsImport0_react from "./node_modules/.vite/deps/react.js"; ' +
`const react = ((m) => m?.__esModule ? m : { ...typeof m === "object" && !Array.isArray(m) || typeof m === "function" ? m : {}, default: m })(__vite__cjsImport0_react)`,
).toMatchInlineSnapshot(
`
"import __vite__cjsImport0_react from "./node_modules/.vite/deps/react.js"; const react = ((m) => m?.__esModule ? m : {
...typeof m === "object" && !Array.isArray(m) || typeof m === "function" ? m : {},
default: m
})(__vite__cjsImport0_react)"
`,
)
})

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { describe, it } from 'vitest'
import type { ModuleFormat, RollupOutput } from 'rollup'
import type { ModuleFormat, RollupOutput } from 'rolldown'
import { build } from '../../../build'
import { modulePreloadPolyfillId } from '../../../plugins/modulePreloadPolyfill'

Expand Down Expand Up @@ -37,7 +37,7 @@ const buildProject = ({ format = 'es' as ModuleFormat } = {}) =>
}) as Promise<RollupOutput>

describe('load', () => {
it('loads modulepreload polyfill', async ({ expect }) => {
it.skip('loads modulepreload polyfill', async ({ expect }) => {
const { output } = await buildProject()
expect(output).toHaveLength(1)
expect(output[0].code).toMatchSnapshot()
Expand Down
Loading
Loading