mkdir -p не работает в сценарии package.json в Windows - PullRequest
0 голосов
/ 10 мая 2018

Скажем, у нас есть приложение React, и в package.json есть скрипт:

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

Если запустить этот скрипт через npm run create-images-dir в Linux, он работает нормально.Но при попытке запустить его в среде Windows в терминале git-bash или Cygwin я получаю эту ошибку:

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, но я понятия не имею, что именно.Я что-то не так делаю?

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

В Linux правильный рекурсивный синтаксис для создания каталога:

mkdir -p distrib/images

В Windows вам не нужно указывать -p.

Вы можете использовать пакет mkdirp в соответствии с предложением @dmfay или использовать os в вашем package.json, чтобы не включать -p в Windows.

0 голосов
/ 10 мая 2018

Именно поэтому существует пакет mkdirp - добавьте его как зависимость dev и используйте двоичный файл mkdirp в своем скрипте вместо платформы mkdir.

...