如果失败,如何继续 package.json 中定义的 运行 脚本?
How to continue running scripts defined in package.json in case one fails?
我在 package.json 文件中有这个:
{
"name": "test demo",
"version": "1.0.0",
"description": "test demo scripts",
"scripts": {
"test:v1": "wdio src/resources/config/wdio.chrome.conf.js --spec test/Tests.spec.ts",
"test:v2": "wdio src/resources/config/wdio.firefox.conf.js --spec test/Tests.spec.ts",
"test": "npm run test:v1 && npm run test:v2"
},
...
}
当运行这个命令时:
npm run test
然后如果 test:v1
失败,则根本不会执行 test:v2
脚本。
有没有办法配置它,以便所有脚本 运行 而不管其中一些是否失败?
编辑:
当我在 package.json 中尝试此操作时:
"test": "npm run test:v1 ; npm run test:v2"
然后我仍然没有执行两个脚本,只是 test:v1
执行错误。
这是我在控制台中得到的:
C:20\demo>npm run test
> demo@1.0.0 test C:20\demo
> npm run test:v1 ; npm run test:v2
> demo@1.0.0 test:v1 C:20\demo
> wdio src/resources/config/wdio.chrome.conf.js --spec test/Tests.spec.ts ";"
"npm" "run" "test:v2"
Execution of 1 spec files started at 2020-06-12T15:16:42.936Z
[0-0] RUNNING in chrome - C:20\demo\Tests.spec.ts
... other log with failing tests ...
Spec Files: 0 passed, 1 failed, 1 total (100% completed) in 00:00:27
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! demo@1.0.0 test:v1: `wdio src/resources/config/wdio.chrome.conf.js --spec test/Tests.spec.ts ";" "npm" "run" "test:v2"`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the demo@1.0.0 test:v1 script.
npm ERR! This is probably not a problem with npm. There is likely additional
logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\<User>\AppData\Roaming\npm-cache\_logs20-06-
12T15_17_10_512Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! demo@1.0.0 test: `npm run test:v1 ; npm run test:v2`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the demo@1.0.0 test script.
npm ERR! This is probably not a problem with npm. There is likely additional
logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\<User>\AppData\Roaming\npm-cache\_logs20-06-
12T15_17_10_548Z-debug.log
如果我在 package.json 中这样尝试:
"test": "npm run test:v1; npm run test:v2"
然后我在控制台中得到这个:
npm ERR! missing script: test:v1;
npm ERR!
npm ERR! Did you mean one of these?
npm ERR! test:v1
npm ERR! test:v2
谢谢!
npm run test:v1; npm run test:v2
;
表示 运行 下一个命令,不管上一个命令是否成功。
&&
表示只有 运行 如果上一个命令成功,则下一个命令。
此解决方案因您使用的 OS 而异,因为 NPM 使用不同的 shell 用于 运行ning npm 脚本。
- 在 *nix、(Linux、macOS 等...)上,npm 使用的默认 shell 运行宁 npm 脚本是
sh
.
- 在 Windows 上,npm 用于 运行ning npm 脚本的默认 shell 是
cmd.exe
。
检查哪个 shell npm 正在使用?
使用 npm config command you need to check the value of the script-shell
设置。为此,您可以 运行 以下命令:
npm config get script-shell
它通常 return/print cmd.exe
或 sh
的路径名 - 取决于您使用的 OS。
解决方案:
如果您运行宁Windows并且默认shell是cmd.exe
然后将 package.json 中的 test
脚本更改为以下内容:
"test": "npm run test:v1 & npm run test:v2"
请注意,双符号 (&&
) 已替换为单符号 (&
)。
或者...
如果你运行宁*nix并且默认shell是sh
然后将 package.json 中的 test
脚本更改为以下内容:
"test": "npm run test:v1; npm run test:v2"
请注意,双符号 (&&
) 已替换为单个分号 (;
)。
我在 package.json 文件中有这个:
{
"name": "test demo",
"version": "1.0.0",
"description": "test demo scripts",
"scripts": {
"test:v1": "wdio src/resources/config/wdio.chrome.conf.js --spec test/Tests.spec.ts",
"test:v2": "wdio src/resources/config/wdio.firefox.conf.js --spec test/Tests.spec.ts",
"test": "npm run test:v1 && npm run test:v2"
},
...
}
当运行这个命令时:
npm run test
然后如果 test:v1
失败,则根本不会执行 test:v2
脚本。
有没有办法配置它,以便所有脚本 运行 而不管其中一些是否失败?
编辑: 当我在 package.json 中尝试此操作时:
"test": "npm run test:v1 ; npm run test:v2"
然后我仍然没有执行两个脚本,只是 test:v1
执行错误。
这是我在控制台中得到的:
C:20\demo>npm run test
> demo@1.0.0 test C:20\demo
> npm run test:v1 ; npm run test:v2
> demo@1.0.0 test:v1 C:20\demo
> wdio src/resources/config/wdio.chrome.conf.js --spec test/Tests.spec.ts ";"
"npm" "run" "test:v2"
Execution of 1 spec files started at 2020-06-12T15:16:42.936Z
[0-0] RUNNING in chrome - C:20\demo\Tests.spec.ts
... other log with failing tests ...
Spec Files: 0 passed, 1 failed, 1 total (100% completed) in 00:00:27
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! demo@1.0.0 test:v1: `wdio src/resources/config/wdio.chrome.conf.js --spec test/Tests.spec.ts ";" "npm" "run" "test:v2"`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the demo@1.0.0 test:v1 script.
npm ERR! This is probably not a problem with npm. There is likely additional
logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\<User>\AppData\Roaming\npm-cache\_logs20-06-
12T15_17_10_512Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! demo@1.0.0 test: `npm run test:v1 ; npm run test:v2`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the demo@1.0.0 test script.
npm ERR! This is probably not a problem with npm. There is likely additional
logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\<User>\AppData\Roaming\npm-cache\_logs20-06-
12T15_17_10_548Z-debug.log
如果我在 package.json 中这样尝试:
"test": "npm run test:v1; npm run test:v2"
然后我在控制台中得到这个:
npm ERR! missing script: test:v1;
npm ERR!
npm ERR! Did you mean one of these?
npm ERR! test:v1
npm ERR! test:v2
谢谢!
npm run test:v1; npm run test:v2
;
表示 运行 下一个命令,不管上一个命令是否成功。
&&
表示只有 运行 如果上一个命令成功,则下一个命令。
此解决方案因您使用的 OS 而异,因为 NPM 使用不同的 shell 用于 运行ning npm 脚本。
- 在 *nix、(Linux、macOS 等...)上,npm 使用的默认 shell 运行宁 npm 脚本是
sh
. - 在 Windows 上,npm 用于 运行ning npm 脚本的默认 shell 是
cmd.exe
。
检查哪个 shell npm 正在使用?
使用 npm config command you need to check the value of the script-shell
设置。为此,您可以 运行 以下命令:
npm config get script-shell
它通常 return/print cmd.exe
或 sh
的路径名 - 取决于您使用的 OS。
解决方案:
如果您运行宁Windows并且默认shell是
cmd.exe
然后将 package.json 中的
test
脚本更改为以下内容:"test": "npm run test:v1 & npm run test:v2"
请注意,双符号 (
&&
) 已替换为单符号 (&
)。
或者...
如果你运行宁*nix并且默认shell是
sh
然后将 package.json 中的
test
脚本更改为以下内容:"test": "npm run test:v1; npm run test:v2"
请注意,双符号 (
&&
) 已替换为单个分号 (;
)。