1

我运行了很多节点项目,并且经常有二进制文件位于:

.\node_modules\.bin

...相对于项目文件夹。我希望能够PATH始终包含这些目录,如果它们存在的话。我不想包括其他目录,只是相对于当前目录的目录。我熟悉 Add-PathVariablePSCX 和其他 Powershell 基础知识,但是如何在 PATH 中包含相对于当前目录的文件夹?

编辑:正如问题中提到的,我希望路径随着目录的变化而保持更新。这不是简单地询问如何使用pwd.

4

1 回答 1

2

您可以在 Env:PATH 中使用相对路径,找到的二进制文件将动态更新

例如:

$env:PATH += ';.\node_modules\.bin'

或者使用PowerShell 社区扩展(PSCX):

Add-PathVariable '.\node_modules\.bin'

与使用$(pwd).立即解析为绝对路径不同,因此PATH始终相对于当前工作目录。

测试这个:

$ which uuid
C:\Users\username\Documents\myapp\node_modules\.bin\uuid.cmd

然后更改目录,uuid 现在指的是不同目录中的程序:

$ cd ..\blog\
$ which uuid
C:\Users\username\Documents\blog\node_modules\.bin\uuid.cmd

也可以PATH在用户或系统环境中持续更改:

[Environment]::SetEnvironmentVariable(($env:PATH + ';.'), 'User')

或者

[Environment]::SetEnvironmentVariable(($env:PATH + ';.'), 'Machine')

安全说明:当输入命令时,Windows 将自动搜索所有目录中$env:PATH列出的扩展名之一的文件,$env:PATHEXT并执行它找到的第一个匹配项。根据您放置的搜索路径的确切位置.,甚至可能取代系统可执行文件。

您可能想看看如何使用 node_modules 中本地安装的包作为替代方法。

于 2017-07-24T19:29:03.297 回答