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

wip: integrate rolldown dev #66

Draft
wants to merge 66 commits into
base: rolldown-v6
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
4b310b7
feat: use rolldown in the dep optimizer
sapphi-red Sep 11, 2024
82fea72
feat: use rolldown for build
sapphi-red Sep 12, 2024
4803f6c
chore: skip plugin-legacy build
sapphi-red Sep 12, 2024
cae9de7
chore: skip typecheck for now
sapphi-red Sep 12, 2024
15bdbca
chore: 🤖 add justfile for faster dev
IWANABETHATGUY Aug 15, 2024
6a5c12f
feat: add experimental.enableNativePlugin (#41)
IWANABETHATGUY Sep 10, 2024
d2abb2d
feat: clone class plugins correctly
IWANABETHATGUY Sep 13, 2024
83e64f0
feat: native build plugins (#45) (#46)
IWANABETHATGUY Sep 12, 2024
7607377
perf: reduce pre alias plugin in build mode
IWANABETHATGUY Sep 12, 2024
2917b77
feat: 🎸 add an new option to disable build report
IWANABETHATGUY Sep 13, 2024
88ee06e
feat: support native define
sapphi-red Sep 18, 2024
155fe98
feat: use filter for plugins (#49) (#50) (#51) (#52) (#53)
sapphi-red Sep 18, 2024
34772a5
perf: ⚡️ use default resolver (#56)
IWANABETHATGUY Sep 14, 2024
8c2c27f
fix: 🐛 lint (#58)
IWANABETHATGUY Sep 20, 2024
9ad08d1
chore: bump rolldown
sapphi-red Sep 24, 2024
852c221
chore: skip data uri by load fallback plugin for native data uri hand…
sapphi-red Sep 24, 2024
6a4d274
feat: handle non-relative paths by Vite's resolver for enableNativePl…
sapphi-red Sep 19, 2024
866e97d
chore: remove browser field edge case test
sapphi-red Sep 25, 2024
cf3aa12
chore: use advancedChunks instead of manualChunks
sapphi-red Oct 1, 2024
72b6177
feat: convert `optimizeDeps.esbuildOptions` to `optimizeDeps.rollupOp…
sapphi-red Oct 4, 2024
a5ce12c
fix: optimizeDeps test pass on windows
sapphi-red Oct 9, 2024
c1b13da
chore: make some tests passing
sapphi-red Oct 9, 2024
94cf842
chore: make glob-import test pass with workarounds
sapphi-red Oct 9, 2024
a6873b6
chore: run worker-es tests
sapphi-red Oct 9, 2024
9872f25
fix: use preliminaryFileName for chunkMetadata key
sapphi-red Oct 10, 2024
747f26b
feat: oxc tranformer (#60)
underfin Oct 11, 2024
1a228be
feat: use `onlyRemoveTypeImports`
sapphi-red Oct 11, 2024
cce68ef
chore: enable continuous release under rolldown-vite (#61)
yyx990803 Oct 12, 2024
6e3fd69
feat: environment aware native plugins
sapphi-red Oct 15, 2024
bc223cd
feat: export transformWithOxc (#62)
underfin Oct 17, 2024
c967ea7
feat: add oxc jsxInclude and jsxExclude (#63)
underfin Oct 18, 2024
2e134f1
chore: update some tests that relies on rollup's behavior
sapphi-red Oct 24, 2024
e483ce3
chore: skip environment-react-ssr for now
sapphi-red Oct 24, 2024
45288b4
chore: bump rolldown
sapphi-red Oct 24, 2024
e9ae3e2
chore: skip minifySyntax test as it relies on specific esbuild option
sapphi-red Oct 24, 2024
71c744f
chore: fix type errors
sapphi-red Oct 24, 2024
0043810
chore: skip sideeffects set for HTML scripts for now
sapphi-red Nov 6, 2024
aec2b6e
chore: partial revert "refactor: use `originalFileNames`/`names` (#18…
sapphi-red Nov 6, 2024
396d3af
chore: tweak tests
sapphi-red Nov 6, 2024
94cf27f
chore: bump rolldown
sapphi-red Nov 6, 2024
1f825b9
chore: enable backend-integration test
sapphi-red Nov 6, 2024
448f8e0
chore: skip error message test
sapphi-red Nov 13, 2024
03ef4bc
feat: enable lib mode tests (#64)
sapphi-red Nov 13, 2024
0c0a17b
chore: fix LICENSE
sapphi-red Nov 14, 2024
a5ed542
chore: uncomment things implemented on rolldown now
sapphi-red Nov 18, 2024
1c77f54
chore: enable html sideeffects test
sapphi-red Nov 18, 2024
8f8c69d
chore: reduce diff
sapphi-red Nov 18, 2024
59c8b5b
feat: use native Vite resolver (#65)
sapphi-red Nov 19, 2024
04a742c
chore: add workaround and make environment-react-ssr playground pass
sapphi-red Nov 21, 2024
067347d
chore: add comment
sapphi-red Nov 21, 2024
bff6200
chore: fix oxc option convertion and reduce warnings
sapphi-red Nov 22, 2024
64ba053
chore: bump rolldown
sapphi-red Nov 25, 2024
cc6c2e0
chore: update snapshot
sapphi-red Nov 25, 2024
6f6bb59
chore: fix for new vite resolve plugin
sapphi-red Nov 25, 2024
fb67381
feat: use native plugin for create id resolver (#68)
sapphi-red Nov 25, 2024
b392159
chore: bump rolldown
sapphi-red Nov 28, 2024
f4bc379
chore: fix for the latest rolldown
sapphi-red Nov 28, 2024
8f637cf
chore: enable modulepreload unit test
sapphi-red Nov 28, 2024
7c8a9ee
chore: bump rolldown
sapphi-red Nov 29, 2024
68e6581
chore: set platform option and remove workaround in environment-react…
sapphi-red Nov 29, 2024
4753f60
chore: update some tests that relies on rollup's behavior
sapphi-red Nov 29, 2024
48f59ce
feat: use rolldown for config loader (#69)
sapphi-red Nov 29, 2024
5a51f96
feat: use rolldown effectively for the optimizer (#70)
sapphi-red Nov 29, 2024
7440a62
feat: integrate rolldown hmr-poc
hi-ogawa Nov 14, 2024
2a0948c
wip: ssr module runner
hi-ogawa Nov 15, 2024
304d625
chore: use latest build
hi-ogawa Nov 28, 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
2 changes: 1 addition & 1 deletion docs/_data/blog.data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ interface Post {
}

declare const data: Post[]
export { data }
export { type data }

export default createContentLoader('blog/*.md', {
// excerpt: true,
Expand Down
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 @@ -584,38 +580,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 @@ -1298,13 +1262,6 @@ Repository: micromatch/is-glob

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

## 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 @@ -2147,6 +2104,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
1 change: 1 addition & 0 deletions packages/vite/index.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ const asyncFunctions = [
'createServer',
'preview',
'transformWithEsbuild',
'transformWithOxc',
'resolveConfig',
'optimizeDeps',
'formatPostcssSourceMap',
Expand Down
4 changes: 3 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 @@ -87,6 +87,8 @@
"dependencies": {
"esbuild": "^0.24.0",
"postcss": "^8.4.49",
"react-refresh": "^0.14.2",
"rolldown": "file:../../rolldown-0.14.0.tgz",
"rollup": "^4.23.0"
},
"optionalDependencies": {
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({
'rollup/parseAst',
/^tsx\//,
/^#/,
'rolldown/experimental',
...Object.keys(pkg.dependencies),
...Object.keys(pkg.peerDependencies),
],
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),
...Object.keys(pkg.peerDependencies),
...Object.keys(pkg.devDependencies),
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
4 changes: 2 additions & 2 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 @@ -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,43 +1,32 @@
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html

exports[`load > doesn't load modulepreload polyfill when format is cjs 1`] = `
""use strict";
"
`;
exports[`load > doesn't load modulepreload polyfill when format is cjs 1`] = `""`;

exports[`load > loads modulepreload polyfill 1`] = `
"(function polyfill() {
const relList = document.createElement("link").relList;
if (relList && relList.supports && relList.supports("modulepreload")) {
return;
}
for (const link of document.querySelectorAll('link[rel="modulepreload"]')) {
processPreload(link);
}
if (relList && relList.supports && relList.supports("modulepreload")) return;
for (const link of document.querySelectorAll('link[rel="modulepreload"]')) processPreload(link);
new MutationObserver((mutations) => {
for (const mutation of mutations) {
if (mutation.type !== "childList") {
continue;
}
for (const node of mutation.addedNodes) {
if (node.tagName === "LINK" && node.rel === "modulepreload")
processPreload(node);
}
if (mutation.type !== "childList") continue;
for (const node of mutation.addedNodes) if (node.tagName === "LINK" && node.rel === "modulepreload") processPreload(node);
}
}).observe(document, { childList: true, subtree: true });
}).observe(document, {
childList: true,
subtree: true
});
function getFetchOpts(link) {
const fetchOpts = {};
if (link.integrity) fetchOpts.integrity = link.integrity;
if (link.referrerPolicy) fetchOpts.referrerPolicy = link.referrerPolicy;
if (link.crossOrigin === "use-credentials")
fetchOpts.credentials = "include";
if (link.crossOrigin === "use-credentials") fetchOpts.credentials = "include";
else if (link.crossOrigin === "anonymous") fetchOpts.credentials = "omit";
else fetchOpts.credentials = "same-origin";
return fetchOpts;
}
function processPreload(link) {
if (link.ep)
return;
if (link.ep) return;
link.ep = true;
const fetchOpts = getFetchOpts(link);
fetch(link.href, fetchOpts);
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
2 changes: 1 addition & 1 deletion packages/vite/src/node/__tests_dts__/plugin.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
* This is a development only file for testing types.
*/
import type { Plugin as RollupPlugin } from 'rollup'
import type { Plugin as RollupPlugin } from 'rolldown'
import type { Equal, ExpectExtends, ExpectTrue } from '@type-challenges/utils'
import type { Plugin, PluginContextExtension } from '../plugin'
import type { ROLLUP_HOOKS } from '../constants'
Expand Down
Loading
Loading