$ PORT=3000 roadhog server
javascript
$ set PORT=3000&&roadhog server
css
$ cross-env PORT=3000 roadhog server
java
執行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" },