最近在运行npm create vue@latest -- --help
的时候,发现一个有趣的现象:如果用 PowerShell 运行这个命令,会输出npm create
的帮助信息,而用 cmd 运行就没有问题。后面经过调查,发现是 PowerShell 脚本对于双横线的特殊处理导致的。
npm 针对 cmd 和 PowerShell 提供了两个不同的脚本,分别是npm.cmd
和npm.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 执行普通二进制文件是不会有这个问题的。