Ann*_*ing 12 batch-file npm-scripts
是否可以以及如何在npm命令中运行批处理脚本?
我有一个角度项目,在package.json文件中,在scripts节下,我想定义一个npm命令来运行批处理脚本.我知道我可以用关键字运行shell脚本,bash例如
"start": "cd mydir && bash ./myscript"
Run Code Online (Sandbox Code Playgroud)
然后我可以npm start在我的项目目录中运行,该目录将更改目录并执行myscript.sh脚本.在npm中运行批处理脚本的等效关键字是什么?
新手在这里.对不起,如果这是一个重复的问题; 也许我没有搜索正确的术语,但我无法找到这个问题的答案.
Rob*_*obC 20
为了帮助提供这个答案的上下文,让我们说两个名为say-hello.bat和的批处理文件say-hello-cmd.两个批处理文件都具有相同的简单设计内容,如下所示:
echo Hello World
Run Code Online (Sandbox Code Playgroud)
通过调用两个批处理文件中的任何一个时npm-scripts,我们希望控制台记录:
Hello World
项目目录结构:
现在,让我们假设我们的项目目录结构如下:
.
??? a
? ??? b
? ??? say-hello.bat
? ??? say-hello.cmd
??? package.json
??? say-hello.bat
??? say-hello.cmd
??? ...
Run Code Online (Sandbox Code Playgroud)
如您所见,我们有:
say-hello.bat并say-hello.cmd存储在项目目录的根目录中.他们和他们处于同一水平package.json.say-hello.bat并say-hello.cmd存储在项目目录的子目录中.这些目录的路径是:a/b/NPM-脚本
为了能够通过调用这些批处理文件npm,该scripts部分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"
},
...
}
Run Code Online (Sandbox Code Playgroud)
如果您现在cd到项目目录并运行以下任何命令:
npm run batnpm run cmdnpm run bat-in-sub-dirnpm run cmd-in-sub-dir将运行批处理文件,您将成功查看Hello World记录到控制台的单词.
笔记
上述这些例子之间的显着差异是:
当批处理文件存储在项目目录的根目录中时,您只需在脚本中提供批处理文件的名称.例如
"bat": "say-hello.bat"
Run Code Online (Sandbox Code Playgroud)当批处理文件存储在项目目录的子目录中时(例如a/b/),您必须首先cd访问该文件夹,然后提供要运行的批处理文件的名称.例如
"bat-in-sub-dir": "cd a/b/ && say-hello.bat"
Run Code Online (Sandbox Code Playgroud)