Unfortunately not all shell commands work across various environments. Two main techniques to support cross-environment scripts is to either use cross-platform commands or to use normalized node packages. In this lesson, we will look at updating an existing set of npm scripts and make sure they work on Mac OS X, Linux, and Windows.

1. Use cross-env

npm i -D cross-env
"test": "cross-env BABEL_ENV=test mocha spec/ --require babel-register",

2. Use 'rimraf' instead of 'rm -rf'

npm i -D rimraf 
"postcover": "rimraf .nyc_output",

3. Use 'opn-cli' instead of 'open'

npm i -D opn-cli
"cover:open": "opn coverage/index.html",

4. Windows need double qoutes, to make it works for all envs, we can use \"

"lint:css": "stylelint \"**/*.scss\" --syntax scss",

5. Windows : '%npm_package_version%',

Mac and Linux: '$npm_package_version'

npm i -D cross-var
"prebuild": "cross-var rimraf public/$npm_package_version",

Should be careful when we use '|' pipe and '>' output symbol, we should wrap the whole command in a \"\":

"build:css": "cross-var \"node-sass src/index.scss | postcss -c .postcssrc.json | cssmin > public/$npm_package_version/index.min.css\"",

  "scripts": {
"start": "node index.js",
"poststart": "npm run build && npm run server",
"pretest": "npm run lint",
"test": "cross-env BABEL_ENV=test mocha spec/ --require babel-register",
"cover": "nyc npm t",
"postcover": "rimraf .nyc_output",
"cover:open": "opn coverage/index.html",
"lint": "npm-run-all lint:**",
"lint:js": "eslint --cache --fix ./",
"lint:css": "stylelint \"**/*.scss\" --syntax scss",
"lint:css:fix": "stylefmt -R src/",
"watch": "npm-run-all --parallel watch:*",
"watch:test": "npm t -- --watch",
"watch:lint": "onchange \"src/**/*.js\" \"src/**/*.scss\" -- npm run lint",
"build": "npm-run-all build:*",
"prebuild": "cross-var rimraf public/$npm_package_version",
"xbuild:html:mac": "pug --obj data.json src/index.pug --out public/$npm_package_version/",
"xbuild:html:win": "pug --obj data.json src/index.pug --out public/%npm_package_version%/",
"build:html": "cross-var pug --obj data.json src/index.pug --out public/$npm_package_version/",
"xbuild:css:mac": "node-sass src/index.scss | postcss -c .postcssrc.json | cssmin > public/$npm_package_version/index.min.css",
"xbuild:css:win": "node-sass src/index.scss | postcss -c .postcssrc.json | cssmin > public/%npm_package_version%/index.min.css",
"build:css": "cross-var \"node-sass src/index.scss | postcss -c .postcssrc.json | cssmin > public/$npm_package_version/index.min.css\"",
"xbuild:js:mac": "mustache data.json src/index.mustache.js | uglifyjs > public/$npm_package_version/index.min.js",
"xbuild:js:win": "mustache data.json src/index.mustache.js | uglifyjs > public/%npm_package_version%/index.min.js",
"build:js": "cross-var \"mustache data.json src/index.mustache.js | uglifyjs > public/$npm_package_version/index.min.js\"",
"server": "npm-run-all --parallel server:*",
"server:create": "cross-var http-server public/$npm_package_version -p $npm_package_config_port",
"server:launch": "cross-var opn http://localhost:$npm_package_config_port",
"prepush": "npm run lint"
},

最新文章

  1. 无法对 索引 'IndexName' 执行 删除,因为它不存在,或者您没有所需的权限。
  2. MYSQL-5.5二进制包安装
  3. LINQ to SQL:Where、Select/Distinct
  4. Java通过socket实现smtp协议发送邮件
  5. FP-Tree算法的实现
  6. js Module模式
  7. unity3d shader之God Ray上帝之光
  8. Spring中的p标签(转)good
  9. ubuntu 搭建svn服务器
  10. 我的 Github 个人博客是怎样炼成的
  11. HDFS 简介
  12. Java面向对象抽象类案例分析
  13. 使用.NET开发AutoCAD——C#/AutoCAD 2018/ObjectArx/二次开发入门(二)
  14. spring Jackson 配置笔记
  15. js实现拖动验证码
  16. 实现我的第一个Java程序
  17. 梯度消失 / 梯度爆炸以及Xavier初始化
  18. 【代码笔记】iOS-密码在进入后台1小时后重新设置
  19. java算法面试题
  20. java中多个数字运算后值不对(失真)处理方法

热门文章

  1. 洛谷——P1816 忠诚
  2. 【Python】用Python的“结巴”模块进行分词
  3. curl如何发起DELETE/PUT请求
  4. mysql中配置ssl_key、ssl-cert、ssl-ca的路径及建立ssl连接(适用于5.7以下版本,5.7及以上请看本文末尾的备注)
  5. MyCat:对MySQL数据库进行分库分表
  6. ORACLE 11G R2 DG_BROKER 之SWITCH OVER
  7. $OEM$文件夹的使用 (By无约而来)
  8. Java Scheduler ScheduledExecutorService ScheduledThreadPoolExecutor Example(ScheduledThreadPoolExecutor例子——了解如何创建一个周期任务)
  9. (转)把Sublime Text 2 加入右键菜单(带图标),Edit with Sublime Text
  10. 工欲善其事必先利其器--------搭建Android平台