@@ -16,15 +16,20 @@ use vite_js_runtime::NodeProvider;
1616use vite_path:: { AbsolutePath , AbsolutePathBuf , current_dir} ;
1717use vite_shared:: { format_path_prepended, output} ;
1818
19- use super :: {
20- bin_config:: BinConfig ,
21- config:: {
22- get_bin_dir, get_node_modules_dir, get_packages_dir, get_tmp_dir, resolve_version,
23- resolve_version_alias,
19+ use crate :: {
20+ commands:: {
21+ env:: {
22+ bin_config:: BinConfig ,
23+ config:: {
24+ get_bin_dir, get_node_modules_dir, get_packages_dir, get_tmp_dir, resolve_version,
25+ resolve_version_alias,
26+ } ,
27+ package_metadata:: PackageMetadata ,
28+ } ,
29+ global:: CORE_SHIMS ,
2430 } ,
25- package_metadata :: PackageMetadata ,
31+ error :: Error ,
2632} ;
27- use crate :: error:: Error ;
2833
2934struct Package < ' a > {
3035 spec : & ' a str ,
@@ -654,9 +659,6 @@ fn is_javascript_binary(path: &AbsolutePath) -> bool {
654659 false
655660}
656661
657- /// Core shims that should not be overwritten by package binaries.
658- pub ( crate ) const CORE_SHIMS : & [ & str ] = & [ "node" , "npm" , "npx" , "vp" ] ;
659-
660662/// Create a shim for a package binary.
661663///
662664/// On Unix: Creates a symlink to ../current/bin/vp
@@ -698,21 +700,25 @@ async fn create_package_shim(
698700
699701 #[ cfg( windows) ]
700702 {
703+ use crate :: commands:: env:: {
704+ cleanup_legacy_windows_shim, get_trampoline_path, remove_or_rename_to_old,
705+ } ;
706+
701707 let shim_path = bin_dir. join ( format ! ( "{}.exe" , bin_name) ) ;
702708
703709 // Delete before overwrite; falls back to rename if the exe is locked.
704- super :: setup :: remove_or_rename_to_old ( & shim_path) . await ;
710+ remove_or_rename_to_old ( & shim_path) . await ;
705711
706712 // Copy the trampoline binary as <bin_name>.exe.
707713 // The trampoline detects the tool name from its own filename and sets
708714 // VP_SHIM_TOOL env var before spawning vp.exe.
709- let trampoline_src = super :: setup :: get_trampoline_path ( ) ?;
715+ let trampoline_src = get_trampoline_path ( ) ?;
710716 tokio:: fs:: copy ( trampoline_src. as_path ( ) , & shim_path) . await ?;
711717
712718 // Remove legacy .cmd and shell script wrappers from previous versions.
713719 // In Git Bash/MSYS, the extensionless script takes precedence over .exe,
714720 // so leftover wrappers would bypass the trampoline.
715- super :: setup :: cleanup_legacy_windows_shim ( bin_dir, bin_name) . await ;
721+ cleanup_legacy_windows_shim ( bin_dir, bin_name) . await ;
716722
717723 tracing:: debug!( "Created package trampoline shim {:?}" , shim_path) ;
718724 }
@@ -759,6 +765,7 @@ async fn remove_package_shim(
759765#[ cfg( test) ]
760766mod tests {
761767 use super :: * ;
768+ use crate :: commands:: global:: is_local_package_spec;
762769
763770 struct CurrentDirGuard ( std:: path:: PathBuf ) ;
764771
@@ -1007,30 +1014,6 @@ mod tests {
10071014 }
10081015 }
10091016
1010- #[ test]
1011- fn test_parse_npm_view_version_json_string ( ) {
1012- let version = parse_npm_view_version ( b"\" 5.9.3\" \n " ) . unwrap ( ) ;
1013- assert_eq ! ( version, "5.9.3" ) ;
1014- }
1015-
1016- #[ test]
1017- fn test_parse_npm_view_version_plain_string ( ) {
1018- let version = parse_npm_view_version ( b"5.9.3\n " ) . unwrap ( ) ;
1019- assert_eq ! ( version, "5.9.3" ) ;
1020- }
1021-
1022- #[ test]
1023- fn test_parse_npm_view_version_json_array_uses_latest_entry ( ) {
1024- let version = parse_npm_view_version ( b"[\" 5.9.2\" , \" 5.9.3\" ]\n " ) . unwrap ( ) ;
1025- assert_eq ! ( version, "5.9.3" ) ;
1026- }
1027-
1028- #[ test]
1029- fn test_parse_npm_view_version_rejects_empty_output ( ) {
1030- let err = parse_npm_view_version ( b"\n " ) . unwrap_err ( ) ;
1031- assert ! ( err. to_string( ) . contains( "empty version" ) ) ;
1032- }
1033-
10341017 #[ test]
10351018 fn test_is_local_package_spec_relative_paths ( ) {
10361019 assert ! ( is_local_package_spec( "." ) ) ;
0 commit comments