在npm脚本中运行批处理文件

时间:2018-05-08 22:44:57

标签: batch-file npm-scripts

是否可以以及如何在npm命令中运行批处理脚本?

我在package.json文件中有一个角度项目,在scripts部分下,我想定义一个npm命令来运行批处理脚本。我知道我可以运行带有关键字bash的shell脚本,例如

"start": "cd mydir && bash ./myscript"

然后我可以在项目目录中运行npm start,这将更改目录并执行myscript.sh脚本。 在npm中运行批处理脚本的等效关键字是什么?

新手在这里。对不起,如果这是一个重复的问题;也许我没有搜索正确的条款,但我无法找到这个问题的答案。

1 个答案:

答案 0 :(得分:14)

为了帮助提供此答案的上下文,我们假设有两个名为say-hello.batsay-hello-cmd的批处理文件。两个批处理文件都具有相同的简单设计内容,如下所示:

echo Hello World

当通过npm-scripts调用两个批处理文件中的任何一个时,我们希望控制台记录:

  

Hello World

项目目录结构:

现在,让我们假设我们的项目目录结构如下:

.
├── a
│   └── b
│       ├── say-hello.bat
│       └── say-hello.cmd
├── package.json
├── say-hello.bat
├── say-hello.cmd
└── ...

如您所见,我们有:

  • say-hello.batsay-hello.cmd存储在项目目录的根目录中。它们与package.json处于同一级别。
  • 我们还将say-hello.batsay-hello.cmd存储在项目目录的子目录中。这些路径的路径为:a/b/

<强> NPM-脚本

为了能够通过npm调用这些批处理文件,scripts的{​​{1}}部分应定义如下:

package.json

如果您现在{ ... "scripts": { "bat": "say-hello.bat", "cmd": "say-hello.cmd", "bat-in-sub-dir": "cd a/b/ && say-hello.bat", "cmd-in-sub-dir": "cd a/b/ && say-hello.cmd" }, ... } 到项目目录并运行以下任何命令:

  • cd
  • npm run bat
  • npm run cmd
  • npm run bat-in-sub-dir

将运行批处理文件,您将成功看到登录到控制台的单词npm run cmd-in-sub-dir

备注

以上这些例子之间的显着差异是:

  • 当批处理文件存储在项目目录的根目录中时,您只需在脚本中提供批处理文件的名称。 E.g。

    Hello World
  • 当批处理文件存储在项目目录的子目录中时(例如"bat": "say-hello.bat" ),您必须首先a/b/到该文件夹​​,然后提供批处理文件的名称跑步。 E.g。

    cd