node.js - Windows 上的 Git bash 或 NPM 正在将参数转换为路径

标签 node.js bash git mingw

我正在编写一个 node.js 脚本来修补服务器文件。我们的开发机器是Windows,但服务器是Linux。

当我执行时运行以下脚本:

npm run patch-file --source-file "/path/to/file" --destination "/path/to/file"

在 Git bash 或 NPM 之间的某个位置,参数会转换为 Windows 路径。我不想在这里发生这种情况。我正在根据脚本本身的源/目的地处理路径转换。

实际输出:

node ./scripts/patch-file.js "--source-file" "C:/Git/path/to/file" "--destination" "C:/Git/path/to/file"

预期输出:

node ./scripts/patch-file.js "--source-file" "/path/to/file" "--destination" "/path/to/file"

注释

这似乎与 Git bash 隔离,我无法使用 Windows 命令提示符或 powershell 复制它。我仍然想弄清楚这一点,因为我希望它能够在命令终端之间无缝工作。

最佳答案

我相信您正在寻找环境变量MSYS_NO_PATHCONV=1,如所讨论的herehere .

我用notepad.exe进行了测试。虽然这有效并从 Git for Windows 安装的根目录打开文本文件

notepad.exe /LICENSE.txt

表明发生了路径转换,但失败,notepad.exe 提示找不到文件/LICENSE.txt

MSYS_NO_PATHCONV=1 notepad.exe /LICENSE.txt

所以,我认为后一种形式就是您所需要的。

请注意,MSYS_NO_PATHCONV 似乎确实特定于 Git for Windows,并且在其他基于 MSYS2 的终端中不可用。

关于node.js - Windows 上的 Git bash 或 NPM 正在将参数转换为路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58032552/

相关文章:

node.js - docker-compose 启动两个 Node 应用程序

linux - bash 中的 If then elif then else 语句

git - 可以从即将删除的分支中剪切一个 git 分支吗?

node.js - 在mongodb中保持原子性

android - GCMParameterSpec 或类似的 Android API 16 到 18

javascript - 断言 "expect" Jest 调用了 X 次

git - 如何从 Git 中的远程存储库中删除已删除的文件夹?

linux - 列出文件大小都在一个范围内的目录

bash - 为什么 `cat` 在这里列出文件而不是文件内容?

git - diff 返回相同文件的整个文件