Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
42 changes: 42 additions & 0 deletions .github/actions/build-upstream/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: 'Build with Upstream Repositories'
description: 'Builds Vite+ with the upstream repositories'
inputs:
target:
description: 'The target platform'
required: true
runs:
using: 'composite'
steps:
- name: Build
shell: bash
if: ${{ inputs.target == 'x86_64-unknown-linux-gnu' }}
run: |
pnpm --filter @rolldown/pluginutils build
pnpm --filter rolldown build-binding:release --target ${{ inputs.target }} --use-napi-cross
pnpm --filter rolldown build-node
pnpm --filter rolldown-vite build-types
CC="x86_64-unknown-linux-gnu-cc" pnpm --filter=@voidzero-dev/vite-plus build --target ${{ inputs.target }} --use-napi-cross
env:
TARGET_CC: clang

- name: Build
shell: bash
if: ${{ inputs.target == 'aarch64-unknown-linux-gnu' }}
run: |
pnpm --filter @rolldown/pluginutils build
pnpm --filter rolldown build-binding:release --target ${{ inputs.target }} --use-napi-cross
pnpm --filter rolldown build-node
pnpm --filter rolldown-vite build-types
pnpm --filter=@voidzero-dev/vite-plus build --target ${{ inputs.target }} --use-napi-cross
env:
TARGET_CC: clang

- name: Build
shell: bash
if: ${{ !contains(inputs.target, 'linux') }}
run: |
pnpm --filter @rolldown/pluginutils build
pnpm --filter rolldown build-binding:release --target ${{ inputs.target }}
pnpm --filter rolldown build-node
pnpm --filter rolldown-vite build-types
pnpm --filter=@voidzero-dev/vite-plus build --target ${{ inputs.target }}
23 changes: 23 additions & 0 deletions .github/actions/clone/action.yml
Comment thread
Brooooooklyn marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: 'Clone Repositories'
description: 'Clone self and upstream repositories'
runs:
using: 'composite'
steps:
- name: Output rolldown and rolldown-vite hash
shell: bash
id: upstream-versions
run: |
node -e "console.log('ROLLDOWN_HASH=' + require('./packages/tools/.upstream-versions.json').rolldown.hash)" >> $GITHUB_OUTPUT
node -e "console.log('ROLLDOWN_VITE_HASH=' + require('./packages/tools/.upstream-versions.json')['rolldown-vite'].hash)" >> $GITHUB_OUTPUT

- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
repository: rolldown/rolldown
path: rolldown
ref: ${{ steps.upstream-versions.outputs.ROLLDOWN_HASH }}

- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
repository: vitejs/rolldown-vite
path: rolldown-vite
ref: ${{ steps.upstream-versions.outputs.ROLLDOWN_VITE_HASH }}
33 changes: 15 additions & 18 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,7 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
submodules: true
- uses: ./.github/actions/clone

- uses: oxc-project/setup-rust@d286d43bc1f606abbd98096666ff8be68c8d5f57 # v1.0.0
with:
Expand All @@ -66,9 +64,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
submodules: true
- uses: ./.github/actions/clone

- name: Configure Git for access to vite-task
run: git config --global url."https://x-access-token:${{ secrets.VITE_TASK_TOKEN }}@github.com/".insteadOf "https://github.com/"
Expand Down Expand Up @@ -101,9 +97,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
submodules: true
- uses: ./.github/actions/clone

- name: Configure Git for access to vite-task
run: git config --global url."https://x-access-token:${{ secrets.VITE_TASK_TOKEN }}@github.com/".insteadOf "https://github.com/"
Expand All @@ -115,12 +109,14 @@ jobs:

- uses: oxc-project/setup-node@fdbf0dfd334c4e6d56ceeb77d91c76339c2a0885 # v1.0.4

- name: build
uses: ./.github/actions/build-upstream
with:
target: x86_64-unknown-linux-gnu

- name: Build self
run: pnpm bootstrap-cli

- name: Run self
run: vite run -r build

- name: Print help for built-in commands
run: |
vite -h
Expand All @@ -142,9 +138,7 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
submodules: true
- uses: ./.github/actions/clone

- name: Configure Git for access to vite-task
run: git config --global url."https://x-access-token:${{ secrets.VITE_TASK_TOKEN }}@github.com/".insteadOf "https://github.com/"
Expand All @@ -162,6 +156,11 @@ jobs:

- uses: oxc-project/setup-node@fdbf0dfd334c4e6d56ceeb77d91c76339c2a0885 # v1.0.4

- name: Build with upstream
uses: ./.github/actions/build-upstream
with:
target: ${{ matrix.os == 'ubuntu-latest' && 'x86_64-unknown-linux-gnu' || matrix.os == 'windows-latest' && 'x86_64-pc-windows-msvc' || 'aarch64-apple-darwin' }}

- name: Build CLI
run: pnpm run bootstrap-cli

Expand Down Expand Up @@ -192,9 +191,7 @@ jobs:
if: ${{ github.ref_name == 'main' }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
submodules: true
- uses: ./.github/actions/clone

- name: Configure Git for access to vite-task
run: git config --global url."https://x-access-token:${{ secrets.VITE_TASK_TOKEN }}@github.com/".insteadOf "https://github.com/"
Expand Down
66 changes: 38 additions & 28 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,8 @@ jobs:
# - aarch64-pc-windows-msvc
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
submodules: true

- uses: ./.github/actions/clone
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
Comment thread
Brooooooklyn marked this conversation as resolved.
- uses: oxc-project/setup-rust@d286d43bc1f606abbd98096666ff8be68c8d5f57 # v1.0.2
with:
save-cache: ${{ github.ref_name == 'main' }}
Expand All @@ -37,6 +35,10 @@ jobs:
- name: Rustup Adds Target
run: rustup target add ${{ matrix.settings.target }}

- name: Rustup Adds Target for rolldown
working-directory: rolldown
run: rustup target add ${{ matrix.settings.target }}

- name: Add musl target (x86_64)
if: ${{ matrix.settings.target == 'x86_64-unknown-linux-gnu' }}
run: rustup target add x86_64-unknown-linux-musl
Expand All @@ -45,38 +47,45 @@ jobs:
if: ${{ matrix.settings.target == 'aarch64-unknown-linux-gnu' }}
run: rustup target add aarch64-unknown-linux-musl

- name: Add rolldown host target
if: ${{ matrix.settings.target == 'aarch64-unknown-linux-gnu' }}
working-directory: rolldown
run: rustup target add x86_64-unknown-linux-gnu
Comment thread
fengmk2 marked this conversation as resolved.

- uses: oxc-project/setup-node@fdbf0dfd334c4e6d56ceeb77d91c76339c2a0885 # v1.0.4

- name: Build host rolldown
if: ${{ matrix.settings.target == 'aarch64-unknown-linux-gnu' }}
run: pnpm --filter rolldown build-binding:release --target x86_64-unknown-linux-gnu

- name: Set binding version
run: pnpm exec tool replace-file-content packages/cli/binding/Cargo.toml 'version = "0.0.0"' 'version = "0.0.0-${{ github.sha }}"'

- name: Configure Git for access to vite-task
run: git config --global url."https://x-access-token:${{ secrets.VITE_TASK_TOKEN }}@github.com/".insteadOf "https://github.com/"

- name: Build
if: ${{ matrix.settings.target == 'x86_64-unknown-linux-gnu' }}
run: pnpm --filter=@voidzero-dev/vite-plus build --target ${{ matrix.settings.target }} --use-napi-cross
env:
CC: x86_64-unknown-linux-gnu-cc
TARGET_CC: clang

- name: Build
if: ${{ matrix.settings.target == 'aarch64-unknown-linux-gnu' }}
run: pnpm --filter=@voidzero-dev/vite-plus build --target ${{ matrix.settings.target }} --use-napi-cross
env:
TARGET_CC: clang

- name: Build
if: ${{ !contains(matrix.settings.target, 'linux') }}
run: pnpm --filter=@voidzero-dev/vite-plus build --target ${{ matrix.settings.target }}
uses: ./.github/actions/build-upstream
with:
target: ${{ matrix.settings.target }}

- name: Upload artifact
- name: Upload Vite+ artifact
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: bindings-${{ matrix.settings.target }}
name: vite-plus-native-${{ matrix.settings.target }}
path: ./packages/cli/binding/*.node
if-no-files-found: error

- name: Upload rolldown artifact
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: rolldown-native-${{ matrix.settings.target }}
path: ./rolldown/packages/rolldown/src/*.node
if-no-files-found: error
- name: Remove .node files before upload dist
if: ${{ matrix.settings.target == 'x86_64-unknown-linux-gnu' }}
run: rm ./packages/cli/dist/**/*.node
Comment thread
Brooooooklyn marked this conversation as resolved.

- name: Upload cli dist
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
if: ${{ matrix.settings.target == 'x86_64-unknown-linux-gnu' }}
Expand All @@ -93,18 +102,13 @@ jobs:
packages: write
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
submodules: true
- uses: ./.github/actions/clone

- uses: oxc-project/setup-node@fdbf0dfd334c4e6d56ceeb77d91c76339c2a0885 # v1.0.4

- name: Configure Git for access to vite-task
run: git config --global url."https://x-access-token:${{ secrets.VITE_TASK_TOKEN }}@github.com/".insteadOf "https://github.com/"

- name: Bootstrap
run: pnpm bootstrap-cli:ci

- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
path: packages/cli/dist
Expand All @@ -114,7 +118,13 @@ jobs:
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
path: packages/cli/dist
pattern: bindings-*
pattern: vite-plus-native-*
merge-multiple: true

- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
path: packages/cli/dist/vite
pattern: rolldown-native-*
merge-multiple: true

- name: Set npm packages version
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,5 @@ dist
.claude/settings.local.json
*.tsbuildinfo
.DS_Store
rolldown
rolldown-vite
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,17 @@
# Vite+

## Pull upstream dependencies

```
pnpm tools sync-remote
```

## Build Vite+ and upstream dependencies

```
just build
```

## Install internal global cli

Add the following lines to your `~/.npmrc` file:
Expand Down
7 changes: 7 additions & 0 deletions justfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,13 @@ init:
cargo binstall watchexec-cli cargo-insta typos-cli cargo-shear dprint taplo-cli -y
pnpm run bootstrap-cli

build:
pnpm --filter @rolldown/pluginutils build
pnpm --filter rolldown build-binding:release
pnpm --filter rolldown build-node
pnpm --filter rolldown-vite build-types
pnpm --filter=@voidzero-dev/vite-plus build

ready:
git diff --exit-code --quiet
typos
Expand Down
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "vite-plus-monorepo",
"license": "BUSL-1.1",
"private": true,
"packageManager": "pnpm@10.17.1",
"packageManager": "pnpm@10.19.0",
"engines": {
"node": "^20.19.0 || >=22.12.0"
},
Expand All @@ -13,8 +13,8 @@
"copy-bindings": "cp -r ./packages/cli/binding/*.node ./packages/cli/dist && cp -r ./packages/cli/binding/*.node ./packages/global/dist",
"install-global-cli": "npm install -g ./packages/global",
"typecheck": "tsc -b tsconfig.json",
"lint": "vite lint && vite run typecheck",
Comment thread
fengmk2 marked this conversation as resolved.
"test": "vite test run && pnpm -r snap-test",
"lint": "vite lint",
"test": "vite test run --config vite.config.ts && pnpm -r snap-test",
"prepare": "husky"
},
"devDependencies": {
Expand Down
15 changes: 11 additions & 4 deletions packages/cli/binding/src/commands/doc.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use std::future::Future;
use std::{future::Future, iter::once};

use petgraph::stable_graph::StableGraph;
use vite_error::Error as ViteError;
Expand All @@ -14,10 +14,17 @@ pub async fn doc<
workspace: &Workspace,
args: &Vec<String>,
) -> Result<ExecutionSummary, Error> {
let ResolveCommandResult { bin_path, envs } =
resolve_doc_command().await.map_err(|e| Error::Anyhow(e.into()))?;
let wrapped_command =
|| async { resolve_doc_command().await.map_err(|e| Error::Anyhow(e.into())) };
let resolved_task =
ResolvedTask::resolve_from_builtin(workspace, wrapped_command, "doc", args.iter()).await?;
|| async { Ok(ResolveCommandResult { bin_path: "node".into(), envs: envs.clone() }) };
Comment thread
Brooooooklyn marked this conversation as resolved.
let resolved_task = ResolvedTask::resolve_from_builtin(
workspace,
wrapped_command,
"doc",
once(&bin_path).chain(args.iter()),
)
.await?;
let mut task_graph: StableGraph<ResolvedTask, ()> = Default::default();
task_graph.add_node(resolved_task);
ExecutionPlan::plan(task_graph, false)?.execute(workspace).await
Expand Down
15 changes: 11 additions & 4 deletions packages/cli/binding/src/commands/fmt.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use std::{collections::HashMap, future::Future};
use std::{collections::HashMap, future::Future, iter::once};

use petgraph::stable_graph::StableGraph;
use serde::{Deserialize, Serialize};
Expand All @@ -22,10 +22,17 @@ pub async fn fmt<
workspace: &Workspace,
args: &Vec<String>,
) -> Result<ExecutionSummary, Error> {
let ResolveCommandResult { bin_path, envs } =
resolve_fmt_command().await.map_err(|e| Error::Anyhow(e.into()))?;
let wrapped_command =
|| async { resolve_fmt_command().await.map_err(|e| Error::Anyhow(e.into())) };
let resolved_task =
ResolvedTask::resolve_from_builtin(workspace, wrapped_command, "fmt", args.iter()).await?;
|| async { Ok(ResolveCommandResult { bin_path: "node".into(), envs: envs.clone() }) };
Comment thread
Brooooooklyn marked this conversation as resolved.
let resolved_task = ResolvedTask::resolve_from_builtin(
workspace,
wrapped_command,
"fmt",
once(&bin_path).chain(args.iter()),
)
.await?;
let mut task_graph: StableGraph<ResolvedTask, ()> = Default::default();
task_graph.add_node(resolved_task);
ExecutionPlan::plan(task_graph, false)?.execute(workspace).await
Expand Down
Loading
Loading