npm的scripts在Windows下無法並行或串行執行多命令的解決

我用MacOS開發,這個npm的scripts是可以很好的執行並行或者串行的腳本的,比如我們來看下我這個在MacOS下的正常執行的scripts代碼段:

  "scripts": {
    "dev": "webpack --watch --config webpack.dev.js & npm run s",
    "build": "webpack --config webpack.prod.js",
    "prod": "webpack --config webpack.prod.js & npm run s",
    "lint": "eslint --ext ./src/*.js",
    "lintfix": "eslint --fix ./src/*.js",
    "sa": "nodemon ./servers/51la/server.js",
    "sb": "nodemon ./servers/jump/server.js",
    "sc": "nodemon ./server.js",
    "s": "npm run sa & npm run sb & npm run sc"
  },

這裏我執行npm run dev可以並行處理webpack --watch --config webpack.dev.jsnpm run s,而執行後面的這個名領的時候又可以觸發執行npm run sa & npm run sb & npm run sc,然後再次觸發對應的三個命令。我暫時不關心他多層調用的問題。

重點:其他人用Windows就完蛋了

怎麼個完蛋法,Windows下不支持該方式,執行了webpack --watch --config webpack.dev.js就停止了,爲了解決跨平臺兼容問題。我也是找了幾個相關的解決方案,比如npm-run-allConcurrentlyparallelshellcross-env等等,不過綜合測試總結了一下,concurrently還是很方便的。於是使用這個工具,調整了scripts就解決了問題:

  "scripts": {
    "dev": "concurrently \"webpack --watch --config webpack.dev.js\" \"npm:s-*\"",
    "build": "webpack --config webpack.prod.js",
    "prod": "webpack --config webpack.prod.js & npm run s",
    "lint": "eslint --ext ./src/*.js",
    "lintfix": "eslint --fix ./src/*.js",
    "s-a": "nodemon ./servers/51la/server.js",
    "s-b": "nodemon ./servers/jump/server.js",
    "s-c": "nodemon ./server.js",
    "s": "npm run sa & npm run sb & npm run sc",
  }

這樣就解決了,但是如果遇到串行,也就是按順序執行(MacOS下只需要將&換成&&即可),貌似又無法解決?所以這塊在跨平臺的處理上可能還要看看有沒有辦法。

相關閱讀:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章