package.json中的多个命令

Red*_*nty 20 node.js package.json

"start": "node server/server.js"- 启动我的服务器,在此命令之前我想要自动命令'webpack';

npm run someCommand- 在终端必须使用webpack,比node server/server.js; 知道如何用gulp配置这个,但不要用它))

Vla*_*kov 38

如果我理解正确,你首先需要运行webpack并在编译后运行nodejs.也许试试这个:

"start": "webpack && node server/server.js"
Run Code Online (Sandbox Code Playgroud)


538*_*MEO 27

更好地了解&&运营商

就我而言,&&效果不佳,因为我的一个命令有时会以非零退出代码(错误)退出,并且只有前一个命令成功时&&链接运算符才起作用。

主要的链接运算符的行为如下:

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

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

其他操作系统特定的链接运算符

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

  • ;UNIX 运行第二个命令,无论第一个命令输出什么
  • ;WIN 单独的命令参数
  • &UNIX 在后台与第二个并行运行第一个命令
  • &无论第一个命令输出什么,WIN 运行第二个命令

Windows 的所有链接运算符在这里 ,unix 的所有链接运算符在这里


pdo*_*926 16

以下应该有效:

"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"
}
Run Code Online (Sandbox Code Playgroud)


Web*_*ver 9

另外,除了接受的答案和@pdoherty926的答案之外,如果您想运行两个命令提示符,您可以在每个命令之前添加“start”:

{
    "init-assets": "webpack",
    "init-server": "node server/server.js",
    "start": "start npm run init-assets && start npm run init-server"
}
Run Code Online (Sandbox Code Playgroud)


Nab*_*ada 8

你也可以像这样链接:

 "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"
}
Run Code Online (Sandbox Code Playgroud)

  • 是的。npm run clean / npm run clean:完成。这只是附加同步命令的一种方法。 (2认同)