mkdir -p 在 Windows 上的 package.json 脚本中不起作用

mkdir -p doesn't work in package.json script on Windows

比如说,我们有一个 React 应用程序,package.json 中有一个脚本:

"scripts": {
    "create-images-dir": "mkdir -p distrib/images"
}

如果通过 Linux 上的 npm run create-images-dir 到 运行 这个脚本,它工作正常。但是尝试在 git-bashCygwin 中的 Windows 环境中 运行 它终端,我收到此错误:

The syntax of the command is incorrect.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! Exit status 1

设置 --parents 而不是 -p 时出现同样的错误。没有 -p 参数,它可以工作,所以它偶然发现 -p。但与此同时,如果在终端中手动输入,来自脚本的命令可以正常工作:

mkdir -p distrib/images

对我来说,当命令从脚本转换为执行时,或者 Windows 上嵌套目录的不同处理时,似乎发生了一些符号转义,但我不知道它到底是什么。我做错了什么吗?

这就是 mkdirp 包存在的原因——将其添加为开发依赖项并在脚本中使用二进制 mkdirp 而不是平台特定的 mkdir.

在 Linux 上递归创建目录的正确语法是:

mkdir -p distrib/images

在 Windows 上,您不必指定 -p

您可以使用 mkdirp package as suggested by @dmfay or use ospackage.json 中不包括 -p 当 windows.