我用MacOS開發,這個npm的scripts是能夠很好的執行並行或者串行的腳本的,好比咱們來看下我這個在MacOS下的正常執行的scripts代碼段:node
"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.js
和npm run s
,而執行後面的這個名領的時候又能夠觸發執行npm run sa & npm run sb & npm run sc
,而後再次觸發對應的三個命令。我暫時不關心他多層調用的問題。webpack
重點:其餘人用Windows就完蛋了git
怎麼個完蛋法,Windows下不支持該方式,執行了webpack --watch --config webpack.dev.js
就中止了,爲了解決跨平臺兼容問題。我也是找了幾個相關的解決方案,好比npm-run-all
、Concurrently
、parallelshell
、cross-env
等等,不過綜合測試總結了一下,concurrently仍是很方便的。因而使用這個工具,調整了scripts就解決了問題:github
"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下只須要將&
換成&&
便可),貌似又沒法解決?因此這塊在跨平臺的處理上可能還要看看有沒有辦法。web
相關閱讀:shell