搭建ES6+Babel7.0+Mocha+chai+axios+mockjs 環(huán)境

為了學(xué)習(xí)js開發(fā),搭建的開發(fā)環(huán)境水援。希望把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上
在項目根目錄下創(chuàng)建文件:.travis.yml

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

#設(shè)定ci要執(zhí)行的安裝命令池磁,實踐中發(fā)現(xiàn)奔害,如果沒有此節(jié),
#則默認運行yarn install 或npm install 安裝package.json中的依賴地熄,
#如配置了此節(jié)华临,則必須要寫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

代碼覆蓋度

代碼覆蓋度的展現(xiàn)選用:[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)在導(dǎo)入你的項目后提供

為Github上添加badge

只為了逼格

github repo readme

添加CI的badge

上進入自己的項目后

travis-ci-badge

獲得markdown格式的鏈接雅潭,放到github項目中的readme.md中

codecov圖標(biāo)

進入項目后,進入setting后却特,可找到badge

ESLint配置

安裝配置參考官網(wǎng)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的攔截原理應(yīng)該是改寫了XMLHttpRequest的相關(guān)操作椿浓,可能是實現(xiàn)了類似sinonjs的akeXMLHttpRequest,后選用axios和axios-mock-adapter
參考:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市扳碍,隨后出現(xiàn)的幾起案子提岔,更是在濱河造成了極大的恐慌,老刑警劉巖左腔,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唧垦,死亡現(xiàn)場離奇詭異,居然都是意外死亡液样,警方通過查閱死者的電腦和手機振亮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鞭莽,“玉大人坊秸,你說我怎么就攤上這事∨炫” “怎么了褒搔?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長喷面。 經(jīng)常有香客問我星瘾,道長,這世上最難降的妖魔是什么惧辈? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任琳状,我火速辦了婚禮,結(jié)果婚禮上盒齿,老公的妹妹穿的比我還像新娘念逞。我一直安慰自己,他們只是感情好边翁,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布翎承。 她就那樣靜靜地躺著,像睡著了一般符匾。 火紅的嫁衣襯著肌膚如雪叨咖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天啊胶,我揣著相機與錄音芒澜,去河邊找鬼。 笑死创淡,一個胖子當(dāng)著我的面吹牛痴晦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播琳彩,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼誊酌,長吁一口氣:“原來是場噩夢啊……” “哼部凑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起碧浊,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤涂邀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后箱锐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體比勉,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年驹止,在試婚紗的時候發(fā)現(xiàn)自己被綠了浩聋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡臊恋,死狀恐怖衣洁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情抖仅,我是刑警寧澤坊夫,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站撤卢,受9級特大地震影響环凿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜放吩,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一智听、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧屎慢,春花似錦、人聲如沸忽洛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽欲虚。三九已至集灌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間复哆,已是汗流浹背欣喧。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留梯找,地道東北人唆阿。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像锈锤,于是被迫代替她去往敵國和親驯鳖。 傳聞我的和親對象是個殘疾皇子闲询,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355