node.js - 我可以在 Powershell 的 PATH 中包含相对于当前目录的文件夹吗?

标签 node.js powershell path pscx

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

.\node_modules\.bin

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

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

最佳答案

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

例如:

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

或者使用PowerShell Community Extensions (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 中列出的扩展名之一的文件,并执行找到的第一个匹配项。根据您在搜索路径中放置 . 的具体位置,它甚至可能会取代系统可执行文件。

您可能想看看 how to use package installed locally in node_modules寻找替代方法。

关于node.js - 我可以在 Powershell 的 PATH 中包含相对于当前目录的文件夹吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45280752/

相关文章:

macos - "config"脚本存在于系统或 Homebrew 目录之外

node.js - 使用 chai 和 mocha 在 nodejs 中对 Observable 结果进行简单测试

ide - 使用 IDE 时从 Powershell 调用第 3 方可执行文件时出错

sql - 将数据库从服务器复制到本地数据库(我只需要复制结构,没有数据)

ios - 如何从Titanium移动项目资源文件夹下的iOS Titanium模块访问pdf文件?

java - WebDriver:我无法设置可运行 Jar 中的 IEDriverServer.exe 的路径

node.js - 如何修复错误无法在 Angular 2 cli ckeditor 中找到名称 'object'

node.js - NodeJS cookie 不适用于 Express 4 中的 session

node.js - 如何使用 MongoDB 和 Node.js 根据用户输入从多级文档中过滤记录?

powershell - 如何通过 powershell cmdlet 更新 Azure 角色中的设置?