搭建ES6+Babel7.0+Mocha+chai+axios+mockjs 环境

为了学习js开发,搭建的开发环境。希望把Babel、测试框架、ajax库、mock、eslint集成到一起。DemoOnGIthub

babel

package.json

"scripts": {
    "ex": "babel-node  --presets=@babel/preset-env "
  },

  "dependencies": {
    "@babel/polyfill": "^7.2.5",
    "cross-env": "^5.2.0"
  },

  "devDependencies": {
    "@babel/cli": "^7.2.3",
    "@babel/core": "^7.3.4",
    "@babel/register": "^7.0.0",
    "@babel/node": "^7.2.2",
    "@babel/preset-env": "^7.3.4"
  }

babel.config.js

在项目根目录下建立此文件

const presets = [
  [
    "@babel/env",
    {
      targets: {
        edge: "17",
        firefox: "60",
        chrome: "67",
        safari: "11.1",
        node: "current"
      },
      useBuiltIns: "usage"
    }
  ]
];
module.exports = { presets };

mocha+chai

安装:

// package.json文件片段
"devDependencies": {    
    "chai": "^4.2.0",
    "mocha": "^6.0.2"
  }

mocha配置

"use strict";
//放在项目根目录下 文件名为 ".mocharc.js"
// Here's a JavaScript-based config file.
// If you need conditional logic, you might want to use this type of config.
// Otherwise, JSON or YAML is recommended.
module.exports = {
  diff: true,
  extension: ["js"],
  // opts: './test/mocha.opts',
  // package: './package.json',
  reporter: "spec",
  slow: 75,
  timeout: 2000,
  ui: "bdd",
  recursive: [
    "./test/**/*.spec.js"
  ],
  require: ["@babel/polyfill", "@babel/register"]

};

文件路径别名解析

为简化代码中import语句引入包路径的简化。如‘../../src’ 简化为‘S/src’

  1. 安装:babel-plugin-module-resolver
  2. 配置babel
const plugins = [
    [
      "module-resolver",
      {
        root: ["./"],
        alias: {
 
          "S": "./src",   //用S代替src路径,形如:'../src/xxx'可简化为'S/xxx'
          "T": "./test"
        }
      }
    ]
  ];
//...其他配置
module.exports = { /*其他配置**/,plugins };

CI 和代码覆盖率度量的配置

CI配置

选择travis-ci,前提是项目必须在github上
在项目根目录下创建文件:.travis.yml

language: node_js
#指定nodejs版本,可以指定多个
node_js:
- v10.15.3
#为codecov添加
env:
  global:
  - CODECOV_TOKEN: "your uuid token"

#设定ci要执行的安装命令,实践中发现,如果没有此节,
#则默认运行yarn install 或npm install 安装package.json中的依赖,
#如配置了此节,则必须要写yarn install
install:
- yarn install
- npm install -g codecov
- npm install -g istanbul

#运行的脚本命令
script:
- yarn run lint
- istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && codecov
#指定分支,只有指定的分支提交时才会运行脚本
branches:
  only:
  - master

代码覆盖度

代码覆盖度的展现选用:[codecov](https://codecov.io),前提是项目必须在github上

在.travis.yml文件中添加:

#other configs
env:
  global:
  - CODECOV_TOKEN: "your uuid token"

install:
# other install command
- npm install -g codecov
- npm install -g istanbul

script:
# other scripts
- istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && codecov

其中- CODECOV_TOKEN: "your uuid token"由[codecov](https://codecov.io)在导入你的项目后提供

为Github上添加badge

只为了逼格

github repo readme

添加CI的badge

上进入自己的项目后

travis-ci-badge

获得markdown格式的链接,放到github项目中的readme.md中

codecov图标

进入项目后,进入setting后,可找到badge

ESLint配置

安装配置参考官网Getting Started with ESLint
有一小坑:前面配置了路径别名,eslint代码时会报路径解析的错误,所以要为eslint也配上路名别名的识别:
npm install --save-dev eslint-import-resolver-babel-module
.eslintrc.js配置:

module.exports = {
 #other configs
  settings: {//beging setting
    "import/resolver": {
      "babel-module": {
        root: ["./"],
        alias: {
          "S": "./src",
          "T": "./test"
        }
      }
    }
  }//end setting
};

axios + mock

开始用request-promise 时mockjs不起作用,后猜测mockjs的拦截原理应该是改写了XMLHttpRequest的相关操作,可能是实现了类似sinonjs的akeXMLHttpRequest,后选用axios和axios-mock-adapter
参考:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355