我正在编写一个 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
,如所讨论的here或here .
我用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/