npm start的時候改變端口及組合腳本

OS X, Linux

$ PORT=3000 roadhog serverjavascript

Windows (cmd.exe)

$ set PORT=3000&&roadhog servercss

Or use cross-env for all platforms

$ cross-env PORT=3000 roadhog serverjava

執行npm completion能夠獲得一個npm的命令自動補全腳本node

管道

假設咱們要用browserify打包javascript文件,而且要用uglifyjs進行代碼混淆。我只須要用管道(|)把browserify的輸出轉接給uglifyjs就能夠了。react

// package.json
// browserify的reactify選項用於處理React語法
"scripts": {
  "build-js": "browserify -t reactify app/js/main.js | uglifyjs -mc > static/bundle.js"
},

串行

另外一個場景是咱們但願當且僅當上一個命令完成後,再執行下一個命令。能夠經過串行符號(&&)來實現這個功能,固然,管道(|)也能夠實現相似的效果npm

"scripts": {
  // 若是build-js,則繼續執行build-less
  "build": "npm run build-js && npm run build-less",
  ...
  "build-js": "browserify -t reactify app/js/main.js | uglifyjs -mc > static/bundle.js",
  "build-less": "lessc app/less/main.less static/main.css"
}

若是腳本是開始一個常開的服務,由於上一個命令一直沒有結束,因此若是用串行命令,&&後面的命令不會執行json

並行

有時候並行地執行多個命令的功能也是必要的。使用並行符號(&)能夠把子命令做爲後臺任務並行執行。app

"scripts": {
  // 並行地執行watch-js,watch-less和watch-server
  "watch": "npm run watch-js & npm run watch-less & npm run watch-server",
  "watch-js": "watchify app/js/main.js -t reactify -o static/bundle.js -dv",
  "watch-less": "nodemon --watch app/less/*.less --ext less --exec 'npm run build-less'",
  "watch-server": "nodemon --ignore app --ignore static server.js"
},
相關文章
相關標籤/搜索