diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f85e6d28e2..171ef7ee86 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -121,6 +121,13 @@ jobs: # Pin Rust tooling paths to avoid $HOME mismatch issues. CARGO_HOME: /root/.cargo RUSTUP_HOME: /root/.rustup + # `-crt-static`: vite-task's `fspy_preload_unix` cdylib (unconditional + # build-dep since voidzero-dev/vite-task#344) can't link against a + # static musl libc. vite+ ships as a NAPI module that links musl libc + # dynamically anyway, so matching here is correct. + # Must mirror `.cargo/config.toml` rustflags — RUSTFLAGS env overrides + # both [build] and [target.*] levels. + RUSTFLAGS: --cfg tokio_unstable -C link-args=-Wl,--warn-unresolved-symbols -C target-feature=-crt-static steps: - name: Install Alpine dependencies shell: sh {0} diff --git a/Cargo.lock b/Cargo.lock index d7a77cb342..707664aa2b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1014,7 +1014,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" dependencies = [ "const_format_proc_macros", - "konst", ] [[package]] @@ -1873,13 +1872,12 @@ dependencies = [ [[package]] name = "fspy" version = "0.1.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=954cd3bead71be4ddc1e3183110d713bbe26286b#954cd3bead71be4ddc1e3183110d713bbe26286b" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=c45e5e72d3a17b850310128480e92d3e332c2d5a#c45e5e72d3a17b850310128480e92d3e332c2d5a" dependencies = [ "allocator-api2", "anyhow", "bstr", "bumpalo", - "const_format", "derive_more", "flate2", "fspy_detours_sys", @@ -1890,10 +1888,12 @@ dependencies = [ "fspy_shared_unix", "futures-util", "libc", + "materialized_artifact", + "materialized_artifact_build", "nix 0.30.1", "ouroboros", - "rand 0.9.2", "rustc-hash", + "sha2", "tar", "tempfile", "thiserror 2.0.18", @@ -1903,13 +1903,12 @@ dependencies = [ "winapi", "wincode", "winsafe", - "xxhash-rust", ] [[package]] name = "fspy_detours_sys" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=954cd3bead71be4ddc1e3183110d713bbe26286b#954cd3bead71be4ddc1e3183110d713bbe26286b" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=c45e5e72d3a17b850310128480e92d3e332c2d5a#c45e5e72d3a17b850310128480e92d3e332c2d5a" dependencies = [ "cc", "winapi", @@ -1918,7 +1917,7 @@ dependencies = [ [[package]] name = "fspy_preload_unix" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=954cd3bead71be4ddc1e3183110d713bbe26286b#954cd3bead71be4ddc1e3183110d713bbe26286b" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=c45e5e72d3a17b850310128480e92d3e332c2d5a#c45e5e72d3a17b850310128480e92d3e332c2d5a" dependencies = [ "anyhow", "bstr", @@ -1933,7 +1932,7 @@ dependencies = [ [[package]] name = "fspy_preload_windows" version = "0.1.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=954cd3bead71be4ddc1e3183110d713bbe26286b#954cd3bead71be4ddc1e3183110d713bbe26286b" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=c45e5e72d3a17b850310128480e92d3e332c2d5a#c45e5e72d3a17b850310128480e92d3e332c2d5a" dependencies = [ "constcat", "fspy_detours_sys", @@ -1949,7 +1948,7 @@ dependencies = [ [[package]] name = "fspy_seccomp_unotify" version = "0.1.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=954cd3bead71be4ddc1e3183110d713bbe26286b#954cd3bead71be4ddc1e3183110d713bbe26286b" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=c45e5e72d3a17b850310128480e92d3e332c2d5a#c45e5e72d3a17b850310128480e92d3e332c2d5a" dependencies = [ "futures-util", "libc", @@ -1966,7 +1965,7 @@ dependencies = [ [[package]] name = "fspy_shared" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=954cd3bead71be4ddc1e3183110d713bbe26286b#954cd3bead71be4ddc1e3183110d713bbe26286b" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=c45e5e72d3a17b850310128480e92d3e332c2d5a#c45e5e72d3a17b850310128480e92d3e332c2d5a" dependencies = [ "allocator-api2", "bitflags 2.11.0", @@ -1985,7 +1984,7 @@ dependencies = [ [[package]] name = "fspy_shared_unix" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=954cd3bead71be4ddc1e3183110d713bbe26286b#954cd3bead71be4ddc1e3183110d713bbe26286b" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=c45e5e72d3a17b850310128480e92d3e332c2d5a#c45e5e72d3a17b850310128480e92d3e332c2d5a" dependencies = [ "anyhow", "base64 0.22.1", @@ -2923,21 +2922,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "konst" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330f0e13e6483b8c34885f7e6c9f19b1a7bd449c673fbb948a51c99d66ef74f4" -dependencies = [ - "konst_macro_rules", -] - -[[package]] -name = "konst_macro_rules" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4933f3f57a8e9d9da04db23fb153356ecaf00cbd14aee46279c33dc80925c37" - [[package]] name = "kqueue" version = "1.1.1" @@ -3137,6 +3121,22 @@ dependencies = [ "regex-automata", ] +[[package]] +name = "materialized_artifact" +version = "0.0.0" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=c45e5e72d3a17b850310128480e92d3e332c2d5a#c45e5e72d3a17b850310128480e92d3e332c2d5a" +dependencies = [ + "tempfile", +] + +[[package]] +name = "materialized_artifact_build" +version = "0.0.0" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=c45e5e72d3a17b850310128480e92d3e332c2d5a#c45e5e72d3a17b850310128480e92d3e332c2d5a" +dependencies = [ + "xxhash-rust", +] + [[package]] name = "memchr" version = "2.8.0" @@ -3346,7 +3346,7 @@ dependencies = [ [[package]] name = "native_str" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=954cd3bead71be4ddc1e3183110d713bbe26286b#954cd3bead71be4ddc1e3183110d713bbe26286b" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=c45e5e72d3a17b850310128480e92d3e332c2d5a#c45e5e72d3a17b850310128480e92d3e332c2d5a" dependencies = [ "allocator-api2", "bytemuck", @@ -4821,7 +4821,7 @@ dependencies = [ [[package]] name = "pty_terminal_test_client" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=954cd3bead71be4ddc1e3183110d713bbe26286b#954cd3bead71be4ddc1e3183110d713bbe26286b" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=c45e5e72d3a17b850310128480e92d3e332c2d5a#c45e5e72d3a17b850310128480e92d3e332c2d5a" [[package]] name = "quote" @@ -7477,7 +7477,7 @@ dependencies = [ [[package]] name = "vite_glob" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=954cd3bead71be4ddc1e3183110d713bbe26286b#954cd3bead71be4ddc1e3183110d713bbe26286b" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=c45e5e72d3a17b850310128480e92d3e332c2d5a#c45e5e72d3a17b850310128480e92d3e332c2d5a" dependencies = [ "thiserror 2.0.18", "vite_path", @@ -7517,7 +7517,7 @@ dependencies = [ [[package]] name = "vite_graph_ser" version = "0.1.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=954cd3bead71be4ddc1e3183110d713bbe26286b#954cd3bead71be4ddc1e3183110d713bbe26286b" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=c45e5e72d3a17b850310128480e92d3e332c2d5a#c45e5e72d3a17b850310128480e92d3e332c2d5a" dependencies = [ "petgraph 0.8.3", "serde", @@ -7616,7 +7616,7 @@ dependencies = [ [[package]] name = "vite_path" version = "0.1.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=954cd3bead71be4ddc1e3183110d713bbe26286b#954cd3bead71be4ddc1e3183110d713bbe26286b" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=c45e5e72d3a17b850310128480e92d3e332c2d5a#c45e5e72d3a17b850310128480e92d3e332c2d5a" dependencies = [ "diff-struct", "path-clean", @@ -7630,7 +7630,7 @@ dependencies = [ [[package]] name = "vite_select" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=954cd3bead71be4ddc1e3183110d713bbe26286b#954cd3bead71be4ddc1e3183110d713bbe26286b" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=c45e5e72d3a17b850310128480e92d3e332c2d5a#c45e5e72d3a17b850310128480e92d3e332c2d5a" dependencies = [ "anyhow", "crossterm", @@ -7680,7 +7680,7 @@ dependencies = [ [[package]] name = "vite_shell" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=954cd3bead71be4ddc1e3183110d713bbe26286b#954cd3bead71be4ddc1e3183110d713bbe26286b" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=c45e5e72d3a17b850310128480e92d3e332c2d5a#c45e5e72d3a17b850310128480e92d3e332c2d5a" dependencies = [ "brush-parser 0.3.0 (git+https://github.com/reubeno/brush?rev=dcb760933b10ee0433d7b740a5709b06f5c67c6b)", "diff-struct", @@ -7707,7 +7707,7 @@ dependencies = [ [[package]] name = "vite_str" version = "0.1.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=954cd3bead71be4ddc1e3183110d713bbe26286b#954cd3bead71be4ddc1e3183110d713bbe26286b" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=c45e5e72d3a17b850310128480e92d3e332c2d5a#c45e5e72d3a17b850310128480e92d3e332c2d5a" dependencies = [ "compact_str", "diff-struct", @@ -7718,7 +7718,7 @@ dependencies = [ [[package]] name = "vite_task" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=954cd3bead71be4ddc1e3183110d713bbe26286b#954cd3bead71be4ddc1e3183110d713bbe26286b" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=c45e5e72d3a17b850310128480e92d3e332c2d5a#c45e5e72d3a17b850310128480e92d3e332c2d5a" dependencies = [ "anyhow", "async-trait", @@ -7756,7 +7756,7 @@ dependencies = [ [[package]] name = "vite_task_graph" version = "0.1.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=954cd3bead71be4ddc1e3183110d713bbe26286b#954cd3bead71be4ddc1e3183110d713bbe26286b" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=c45e5e72d3a17b850310128480e92d3e332c2d5a#c45e5e72d3a17b850310128480e92d3e332c2d5a" dependencies = [ "anyhow", "async-trait", @@ -7778,11 +7778,13 @@ dependencies = [ [[package]] name = "vite_task_plan" version = "0.1.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=954cd3bead71be4ddc1e3183110d713bbe26286b#954cd3bead71be4ddc1e3183110d713bbe26286b" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=c45e5e72d3a17b850310128480e92d3e332c2d5a#c45e5e72d3a17b850310128480e92d3e332c2d5a" dependencies = [ "anyhow", "async-trait", + "cow-utils", "futures-util", + "pathdiff", "petgraph 0.8.3", "rustc-hash", "serde", @@ -7808,7 +7810,7 @@ version = "0.0.0" [[package]] name = "vite_workspace" version = "0.0.0" -source = "git+https://github.com/voidzero-dev/vite-task.git?rev=954cd3bead71be4ddc1e3183110d713bbe26286b#954cd3bead71be4ddc1e3183110d713bbe26286b" +source = "git+https://github.com/voidzero-dev/vite-task.git?rev=c45e5e72d3a17b850310128480e92d3e332c2d5a#c45e5e72d3a17b850310128480e92d3e332c2d5a" dependencies = [ "clap", "petgraph 0.8.3", diff --git a/Cargo.toml b/Cargo.toml index c8b80ab5d6..a39654685a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -89,7 +89,7 @@ dunce = "1.0.5" fast-glob = "1.0.0" flate2 = { version = "=1.1.9", features = ["zlib-rs"] } form_urlencoded = "1.2.1" -fspy = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "954cd3bead71be4ddc1e3183110d713bbe26286b" } +fspy = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "c45e5e72d3a17b850310128480e92d3e332c2d5a" } futures = "0.3.31" futures-util = "0.3.31" glob = "0.3.2" @@ -194,16 +194,16 @@ vfs = "0.13.0" vite_command = { path = "crates/vite_command" } vite_error = { path = "crates/vite_error" } vite_js_runtime = { path = "crates/vite_js_runtime" } -vite_glob = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "954cd3bead71be4ddc1e3183110d713bbe26286b" } +vite_glob = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "c45e5e72d3a17b850310128480e92d3e332c2d5a" } vite_install = { path = "crates/vite_install" } vite_migration = { path = "crates/vite_migration" } vite_setup = { path = "crates/vite_setup" } vite_shared = { path = "crates/vite_shared" } vite_static_config = { path = "crates/vite_static_config" } -vite_path = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "954cd3bead71be4ddc1e3183110d713bbe26286b" } -vite_str = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "954cd3bead71be4ddc1e3183110d713bbe26286b" } -vite_task = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "954cd3bead71be4ddc1e3183110d713bbe26286b" } -vite_workspace = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "954cd3bead71be4ddc1e3183110d713bbe26286b" } +vite_path = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "c45e5e72d3a17b850310128480e92d3e332c2d5a" } +vite_str = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "c45e5e72d3a17b850310128480e92d3e332c2d5a" } +vite_task = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "c45e5e72d3a17b850310128480e92d3e332c2d5a" } +vite_workspace = { git = "https://github.com/voidzero-dev/vite-task.git", rev = "c45e5e72d3a17b850310128480e92d3e332c2d5a" } walkdir = "2.5.0" wax = "0.6.0" which = "8.0.0" diff --git a/packages/cli/snap-tests/npm-install-with-options/snap.txt b/packages/cli/snap-tests/npm-install-with-options/snap.txt index ecc7269de4..e8ee1c0267 100644 --- a/packages/cli/snap-tests/npm-install-with-options/snap.txt +++ b/packages/cli/snap-tests/npm-install-with-options/snap.txt @@ -23,15 +23,28 @@ Run "npm help install" for more info > vp run install # https://docs.npmjs.com/cli/v10/commands/npm-install $ vp install --production --silent ---- -vp run: npm-install-with-options#install not cached because it modified its input. (Run `vp run --last-details` for full details) > ls node_modules @oxlint tslib > vp run install # install again hit cache -$ vp install --production --silent +$ vp install --production --silent ◉ cache hit, replaying --- -vp run: npm-install-with-options#install not cached because it modified its input. (Run `vp run --last-details` for full details) +vp run: cache hit, ms saved. + +> vp run --last-details + +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + Vite+ Task Runner • Execution Summary +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +Statistics: 1 tasks • 1 cache hits • 0 cache misses +Performance: 100% cache hit rate, ms saved in total + +Task Details: +──────────────────────────────────────────────── + [1] npm-install-with-options#install: $ vp install --production --silent ✓ + → Cache hit - output replayed - ms saved +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ diff --git a/packages/cli/snap-tests/npm-install-with-options/steps.json b/packages/cli/snap-tests/npm-install-with-options/steps.json index e443ea4b23..8b20093d1c 100644 --- a/packages/cli/snap-tests/npm-install-with-options/steps.json +++ b/packages/cli/snap-tests/npm-install-with-options/steps.json @@ -3,6 +3,7 @@ "vp install --help # print help message", "vp run install # https://docs.npmjs.com/cli/v10/commands/npm-install", "ls node_modules", - "vp run install # install again hit cache" + "vp run install # install again hit cache", + "vp run --last-details" ] } diff --git a/packages/cli/snap-tests/npm-install-with-options/vite.config.ts b/packages/cli/snap-tests/npm-install-with-options/vite.config.ts index 68655185f7..f4c86f2d1b 100644 --- a/packages/cli/snap-tests/npm-install-with-options/vite.config.ts +++ b/packages/cli/snap-tests/npm-install-with-options/vite.config.ts @@ -4,6 +4,7 @@ export default { tasks: { install: { command: 'vp install --production --silent', + input: [{ auto: true }, '!node_modules/**', '!package-lock.json'], }, }, },