簡體   English   中英

package.json 中的多個命令

[英]Multiple commands in package.json

這個命令: "start": "node server/server.js"啟動我的服務器,但在運行它之前,我還希望一個命令自動運行: 'webpack'

我想構建一個可以使用npm run someCommand的腳本 - 它應該首先在終端中運行webpack ,然后是node server/server.js

(我知道如何使用 gulp 進行配置,但我不想使用它)

如果我理解正確,您首先要運行 webpack,然后編譯運行 nodejs。 也許試試這個:

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

以下應該有效:

"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"
}

您還可以像這樣鏈接命令:

"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"
}

更好地理解&&運算符

在我的情況下, &&效果不佳,因為我的一個命令根據情況以 1(錯誤)或 0(成功)退出,並且&&鏈接運算符僅在前一個命令成功時才有效

因此,為了添加其他答案,您可以使用以下選項來分隔命令:

  • &&僅在第一個成功時運行第二個命令
  • || 僅在第一個失敗時運行第二個命令

因此,如果您希望第二個命令運行第一個輸出的任何命令,最好的方法是執行類似(command1 && command2) || command 2之類的操作。 (command1 && command2) || command 2

操作系統特定的鏈接運算符

其他選項在 unix(linux、macos)和 windows 環境中有所不同

  • ; UNIX 運行第二個命令,無論第一個命令輸出什么
  • ; WIN 單獨的命令參數
  • & UNIX 在后台並行運行第一個命令與第二個命令
  • & WIN 無論第一個輸出的是什么,都運行第二個命令

此處為 windows 和此處為 unix 的所有鏈接運算符

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

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

您可以使用腳本啟動器之類的工具來擴展package.json文件的功能。

使用腳本啟動器,您可以將數組用作腳本,並引用具有不同參數的其他腳本,等等。

使用腳本數組的示例

{
  "scripts": {
    "init": [
      "webpack",
      "node server/server.js"
    ]
  }
}

使用目錄中的示例來了解如何實現此目的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM