如何在 Windows 的 package.json 中的 NPM 脚本中关闭终端?

Posted

技术标签:

【中文标题】如何在 Windows 的 package.json 中的 NPM 脚本中关闭终端?【英文标题】:How do you close the terminal in an NPM script in the package.json for Windows? 【发布时间】:2020-05-10 05:35:24 【问题描述】:

在我的 package.json 中,我有一些脚本可以使用“开始”在新终端中打开(仅限 Windows 操作系统):

"automation": "start npm run webdriver:start && npm run timeout"
"webdriver:start": "webdriver-manager start",
"timeout": "timeout 3",

我的问题是,一旦操作完成,我该如何关闭该终端窗口?

我尝试了以下方法,但都没有关闭终端窗口:

"automation": "(start npm run webdriver:start && npm run timeout) && exit"
"automation": "(start npm run webdriver:start && npm run timeout) && exit 1"

当我在 Windows 终端中执行“退出”时,它会关闭窗口,但它似乎在脚本中不起作用。 非常感谢任何帮助。

运行以下命令:

npm run automation

【问题讨论】:

试试这个:cmd.exe /c "npm run webdriver:start && npm run timeout" cmd.exe 是一个 Windows 命令行 shell,从帮助:/C 执行字符串指定的命令然后终止 那是给powershell的吗?我没有在powershell中运行。这在字符串之外也不起作用,因为 package.json 的语法不允许这样做 ***.com/a/15637481/126995 仍然不确定你在做什么。在 package.json 的脚本中,我不能将 cmd.exe /c 放在字符串之外。而且我不确定三个斜杠会有什么帮助。你能给我一个具体的例子来说明如何将它写成 package.json 格式吗? 你需要像这样转义引号:“automation”:“cmd /c \”(start npm run webdriver:start && npm run timeout)&& exit\“”,但是我试过了@Soonts 回答,我没能从 vscode 得到它 【参考方案1】:

VSCode 不允许从脚本中关闭终端(检查this issue),但是您可以“静默”新打开的终端,因为您必须通过添加修改您的tasks.json 文件revealclearshowReuseMessage 给它。

你的tasks.json 文件应该是这样的:


    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        
            "type": "npm",
            "script": "automation",
            "problemMatcher": [],
            "presentation": 
              "reveal": "silent",
              "clear": true,
              "showReuseMessage": false
            
        
    ]

如果您的task.json 文件丢失,请检查this other question。

【讨论】:

以上是关于如何在 Windows 的 package.json 中的 NPM 脚本中关闭终端?的主要内容,如果未能解决你的问题,请参考以下文章

服务端和客户端的 Package.json

NodeJS unsafe-perm 不适用于 package.json

NodeJS unsafe-perm 不适用于 package.json

我们如何通过 npm 安装 fontawesome?

npm

npm install 不应用 package-lock.json 中的内容?