不能在Windows的NPM脚本中使用mkdir

sam*_*ime 15 node.js npm npm-install

我正在尝试使用如下所示的脚本:

{
    "scripts":
        "setup": "mkdir -p ./my-dir"
}
Run Code Online (Sandbox Code Playgroud)

它失败了,至少在Windows上,即使我从Git Bash提示符运行它也是如此.即使尝试只是mkdir ./my-dir不起作用.我无法弄清楚它应该失败的原因.

它给出的错误是"语法不正确"错误:

> my-app@0.0.1 stage C:\my-app
> mkdir ./my-dir

The syntax of the command is incorrect.

npm ERR! Windows_NT 6.1.7601
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "stage"
npm ERR! node v6.4.0
npm ERR! npm  v3.10.3
npm ERR! code ELIFECYCLE
npm ERR! my-app@0.0.1 stage: `mkdir ./my-dir`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the my-app@0.0.1 stage script 'mkdir ./my-dir'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the my-app package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     mkdir ./my-dir
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs my-app
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls my-app
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     C:\my-app\npm-debug.log
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,是否有一种跨平台友好的方式来初始化一个空目录?

Kyl*_*Mit 11

您可以使用NPX mkdirp对于没有安装全球比较轻巧,便携的解决方案

将此添加到package.json

"scripts": {
  "create-dir": "npx mkdirp _site/assets",
}
Run Code Online (Sandbox Code Playgroud)

然后像这样使用:

$ npm run create-dir
Run Code Online (Sandbox Code Playgroud)


sta*_*kas 10

该模块可能会解决您的问题:https: //www.npmjs.com/package/mkdirp

  • 只需要抬头,就可以在本地安装它,你只需要从本地安装的文件夹中使用`./ node_modules/.bin/mkdirp`而不只是`mkdirp`.几乎所有NPM命令都适用. (2认同)
  • 您不必为 `./node_modules/.bin/` 加上前缀,因为 `npm` 已经将此路径添加到 PATH。参考:[NPM](https://docs.npmjs.com/cli/run-script) (2认同)

abe*_*tan 6

Npm 使用的是 windows mkdir 命令,而不是 linux。用

"setup": "mkdir .\\my-dir"
Run Code Online (Sandbox Code Playgroud)

使用反斜杠。

您还可以安装 cygwin 并运行:

/cygwin64/bin/mkdir -p mydir
Run Code Online (Sandbox Code Playgroud)

  • 这适用于在 bash 终端上运行 npm 命令的 Windows 计算机,但不适用于 `-p` (2认同)