Skip to content

Commit 34fddcb

Browse files
committed
确保安装和使用的全局的包,是在指定的 NPM_CONFIG_PREFIX 目录下的
1 parent a0a23b3 commit 34fddcb

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

internal/command/run.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,13 @@ func run(options *RunOptions) error {
6565
command := options.Cmd[0]
6666

6767
oldPath := os.Getenv("PATH")
68+
oldNpmConfigPrefix := os.Getenv("NPM_CONFIG_PREFIX")
6869

6970
defer os.Setenv("PATH", oldPath)
71+
defer os.Setenv("NPM_CONFIG_PREFIX", oldNpmConfigPrefix)
7072

7173
os.Setenv("PATH", util.AppendEnvPath(binaryFileDir))
74+
os.Setenv("NPM_CONFIG_PREFIX", nodeEnvPath)
7275

7376
if len(options.Cmd) == 1 {
7477
process = exec.Command(command)

internal/command/use.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,17 @@ func Use(constraint *string) error {
7373
}
7474

7575
oldPath := os.Getenv("PATH")
76-
defer os.Setenv("PATH", oldPath) // 确保在函数返回时恢复原始的 PATH
76+
oldNpmConfigPrefix := os.Getenv("NPM_CONFIG_PREFIX")
77+
defer os.Setenv("PATH", oldPath) // 确保在函数返回时恢复原始的 PATH
78+
defer os.Setenv("NPM_CONFIG_PREFIX", oldNpmConfigPrefix) // 确保在函数返回时恢复原始的 NPM_CONFIG_PREFIX
7779

7880
// 设置新的 PATH 变量
7981
os.Setenv("PATH", util.AppendEnvPath(binaryFileDir))
82+
os.Setenv("NPM_CONFIG_PREFIX", nodePath)
8083

8184
if err := crosspty.Start(shellPath, map[string]string{
82-
"PATH": os.Getenv("PATH"),
85+
"NPM_CONFIG_PREFIX": os.Getenv("NPM_CONFIG_PREFIX"),
86+
"PATH": os.Getenv("PATH"),
8387
}, fmt.Sprintf("Welcome to the nodapt shell, Currently using node %s!", *version)); err != nil {
8488
return errors.WithStack(err)
8589
}

0 commit comments

Comments
 (0)