OS X, Linux
$ PORT=3000 roadhog server
Windows (cmd.exe)
$ set PORT=3000&&roadhog server
Or use cross-env for all platforms
$ cross-env PORT=3000 roadhog server
执行npm completion可以得到一个npm的命令自动补全脚本
管道
假设我们要用browserify打包javascript文件,并且要用uglifyjs进行代码混淆。我只需要用管道(|)把browserify的输出转接给uglifyjs就可以了。
// package.json
// browserify的reactify选项用于处理React语法
"scripts": {
"build-js": "browserify -t reactify app/js/main.js | uglifyjs -mc > static/bundle.js"
},
串行
另一个场景是我们希望当且仅当上一个命令完成后,再执行下一个命令。可以通过串行符号(&&)来实现这个功能,当然,管道(|)也可以实现类似的效果
"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"
}
如果脚本是开始一个常开的服务,因为上一个命令一直没有结束,所以如果用串行命令,&&后面的命令不会执行
并行
有时候并行地执行多个命令的功能也是必要的。使用并行符号(&)可以把子命令作为后台任务并行执行。
"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"
},
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。