代码之家  ›  专栏  ›  技术社区  ›  Vasiliy

mkdir-p在包中不工作。Windows上的json脚本

  •  4
  • Vasiliy  · 技术社区  · 8 年前

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

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

    如果要通过运行此脚本 npm run create-images-dir 在Linux上,它运行良好。但尝试在中的Windows环境中运行它 git bash Cygwin公司 terminal,我收到以下错误:

    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 回复  |  直到 8 年前
        1
  •  5
  •   dmfay    8 年前

    这就是为什么 mkdirp 包存在--将其添加为开发人员依赖项并使用二进制文件 mkdirp 在脚本中,而不是特定于平台的 mkdir

        2
  •  1
  •   Arpit Agarwal    8 年前

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

    mkdir -p distrib/images
    

    在Windows上,无需指定 -p

    您可以使用 mkdirp 按照@dmfay的建议包装或使用 os 在您的 package.json 不包括 -p 在windows上时。