Sustie

主页 所有文章 文章检索

PowerShell脚本对于双横线的特殊处理

最近在运行npm create vue@latest -- --help的时候,发现一个有趣的现象:如果用 PowerShell 运行这个命令,会输出npm create的帮助信息,而用 cmd 运行就没有问题。后面经过调查,发现是 PowerShell 脚本对于双横线的特殊处理导致的。

npm 针对 cmd 和 PowerShell 提供了两个不同的脚本,分别是npm.cmdnpm.ps1。在 PowerShell 中运行npm的时候,实际上会执行npm.ps1。在 PowerShell 脚本中,--有特殊含义,因此执行npm create vue@latest -- --help就近似于执行npm create vue@latest --help,因此会输出npm create的帮助信息。

解决方法很简单,只需要将--用引号括起来即可,即npm create vue@latest '--' --help。这样 PowerShell 就不会对--进行特殊处理了。

具体可以参考这个GitHub PR

这里还要补充一点,这个问题只会出现在执行 PowerShell脚本的时候,用 PowerShell 执行普通二进制文件是不会有这个问题的。