NodeJS package.json中的多个命令

rjjhvcjd  于 2023-06-05  发布在  Node.js
关注(0)|答案(5)|浏览(414)

此命令:"start": "node server/server.js"启动了我的服务器,但是在运行这个之前,我还想让一个命令自动运行:'webpack'
我想构建一个可以用npm run someCommand运行的脚本-它应该首先在终端中运行webpack,然后运行node server/server.js
(我知道如何用gulp配置它,但我不想使用它)

c9x0cxw0

c9x0cxw01#

如果我理解正确的话,你需要先运行webpack,然后在编译后运行nodejs。不妨试试这个:

"start": "webpack && node server/server.js"
taor4pac

taor4pac2#

下面的 * 应该 * 工作:
"start": "webpack && node server/server.js"
但是,为了可读性(特别是如果您计划在将来添加其他任务),您可能需要考虑为每个任务创建单独的条目,然后从start调用每个条目。比如说

{
    "init-assets": "webpack",
    "init-server": "node server/server.js",
    "start": "npm run init-assets && npm run init-server"
}
sh7euo9m

sh7euo9m3#

更好理解&&运算符

在我的例子中,&&不能很好地工作,因为我的一个命令有时会以非零的退出代码(错误)退出,并且**&&链接操作符只有在前一个命令成功时才能工作**。
主链接操作符的行为如下:

  • &&仅在第一个成功(AND)时运行下一个命令
  • ||仅在第一个失败时运行下一个命令(OR)

因此,如果您希望第二个命令运行第一个命令输出的任何内容,最好的方法是执行类似(command1 && command2) || command 2的操作

其他OS特定链接操作符

其他分隔符在Unix(linux,macos)和Windows环境中是不同的

  • ; UNIX运行第二个命令,不管第一个命令输出了什么
  • ; WIN单独的命令参数
  • & UNIX在后台并行运行第一个命令和第二个命令
  • & WIN运行第二个命令,不管第一个命令输出了什么

Windows here和unix here的所有链接运算符

h9vpoimq

h9vpoimq4#

您也可以像这样链接命令:

"scripts": {
    "clean": "npm cache clean --force",
    "clean:complete": "npm run clean && npm uninstall -g @angular/cli && rmdir /Q /S node_modules",
    "clean:complete:install": "npm run clean:complete && npm i -g @angular/cli && npm i && npm install --save-dev @angular/cli@latest"
}
w41d8nur

w41d8nur5#

此外,沿着接受的答案和@pdoherty926的答案外,如果你想运行两个命令提示符,你可以在每个命令前添加“start”:

{
    "init-assets": "webpack",
    "init-server": "node server/server.js",
    "start": "start npm run init-assets && start npm run init-server"
}

相关问题