React项目通过webpack-plugin-istanbul生成覆盖率报告

news/2024/7/15 17:35:33 标签: react.js, webpack, 前端

    早期开发前端覆盖率的时候,使用的是Vue项目,对应的插件是babel-plugin-istanbul,后来发现公司产品使用的是React项目,babel-plugin-istanbul插件就不太支持了。在网上搜索了一下,发现一个全新的插件:webpack-plugin-istanbul,针对React项目webpack打包进行覆盖率采集的。

一,webpack-plugin-istanbul插件

项目gitlab地址:https://github.com/smoosee/webpack-plugin-istanbul

这个项目是最新发布的,显示 是五个月前提交的代码,所以要求:node版本大于16,webpack至少是5。

二,使用方法

1,生成React项目

根据网上的介绍方法,可以使用以下命令生成一个React项目(Adding TypeScript | Create React App):

$ yarn create react-app my-app --template typescript

2,将脚手架生成代码进行转化

  yarn eject 命令执行后会将封装在 create-react-app 中的配置全部反编译到当前项目,这样用户就能完全取得 webpack 文件的控制权。所以,eject 命令存在的意义就是更改 webpack 配置存在。

$ yarn eject

项目结构:

3,添加webpack-plugin-istanbul插件

(1) 在项目中执行如下命令:

yarn add webpack-plugin-istanbul -D

(2)添加webpack配置

找到根目录下config/webpack.config.js文件,添加如下代码:

定义插件
//覆盖率插件
const { WebpackPluginIstanbul } = require("webpack-plugin-istanbul");

//添加插件
plugins:[
new WebpackPluginIstanbul({
  include: ["src/*.js","src/*.ts","src/*.tsx"],
  exclude: ["src/**/*.spec.js"],
  extension: [".js",".ts",".tsx"],
  cwd: process.cwd(),
}),
...]
//在module中添加配置
module: {
  strictExportPresence: true,
  rules: [
    {
      test: /\.(js|ts|tsx)$/,
      exclude: /node_modules/,
      use: {
        loader: "webpack-plugin-istanbul/loader",
        options: {
          include: ["src/*.js","src/*.ts","src/*.tsx"],
          exclude: ["src/**/*.spec.js"],
          extension: [".js",".ts",".tsx"],
          cwd: process.cwd(),
        },
      },
     },
    ...
    ]
    }

注意:修改框架文档中给出的配置,默认只是js文件,我们添加上ts文件,tsx文件的相关配置。

4,查看覆盖率数据

添加完上面的配置后,执行命令运行项目:

$ npm start

查看打开的网页中的覆盖率数据:

拿到这个数据后,就可以利用插件上传覆盖率数据信息。

三,生成报告

1,通过先前开发的上传前端覆盖率插件,将网页生成的覆盖率数据上传到指定的位置。

将相应的window.__coverage__的数据拷贝到项目下,创建文件夹.nyc_output,将数据拷贝到文件夹中。因为nyc命令会直接找到.nyc_output文件夹,将里面数据进行合并,生成覆盖率报告。

2,在package.json中添加如下代码

"nyc": {
  "reporter": [
    "html",
    "text-summary"
  ],
  "extension": [
    ".js",
    ".ts",
    ".tsx"
  ]
}

3,在命令行下生成报告

$ nyc report --report=html

4,查看Coverage文件夹中的报告


http://www.niftyadmin.cn/n/1443374.html

相关文章

莫队算法的模板实现

今天的模拟赛T3是一道裸莫队..本来想了想之前被裸点分治虐的体无完肤决定打暴力的orz(果然我太弱啦! 然后听说莫队挺简单的,看看时间...嗯还有不少 那就学学莫队吧 莫队的思想理解起来还是不难的 比如这篇博客就写的很好http://blog.csdn.net/bossup/article/detail…

Android开发无线调试工具adbwireless的使用简介(附AirADB)

adbWireless能够让手机用无线来取代USB连接而使用ADB工具 手机需要root并且与电脑在同一局域网内(可以连同个路由或者电脑开WiFi给手机连接) ADB(Android Debug Bridge)是Android提供的一个通用的调试工具,借助这个工具,我们可以管…

全局最优解

我们想要的是全局最优解, 但是非凸函数往往求得的是局部最优解。所以η学习率我们就不能设置的太小,太小的话就容易掉到局部最优解内。 η大一点就可能跳出局部最优解找到全局最优解。 不过即便是局部最优解我们也可以接受,只要求得的模型…

SQL 语法参考手册(转)

SQL 语法参考手册DB2 提供了关连式资料库的查询语言 SQL (Structured Query Language), 是一种非常口语化、既易学又易懂的语法。此一语言几乎是每个资料库系统都 必须提供的,用以表…

CocoaPods 中删除不需要的第三方

1...打开Podfile 找到不需要的类库,直接删除 2...打开终端cd到当前项目的根目录下重新执行pod install --verbose --no-repo-update命令(更新一下) 3...更新完成就删除成功了.... but but.... ...编译没有问题--运行时候----报错的请继续往下看,,,, 解决方法---- (1----)找到…

梯度下降法流程总结

1.随机random一组theta(w1...wn) 2.求梯度(梯度代表切线某点的斜率)loss对theta求一阶导(这里theta是一个n1行1列的向量,如果一个函数对向量求导,我们说这是求梯度) loss损失函数分别对每个theta求偏导得到的一个向量叫做梯度 …

hdu 5422 Rikka with Graph(水)

题目链接&#xff1a;hdu 5422 Rikka with Graph 代码 #include <cstdio> #include <cstring> #include <algorithm>using namespace std;int main () {int n, m;while (scanf("%d%d", &n, &m) 2) {int u, v, t 0;while (m--) {scanf(…

QQ也有聊天机器人 小编带你与小Q玩(转)

QQ机器人是腾讯陆续推出的人工智能聊天机器人的总称&#xff0c;目前已经推出小Q妹妹来陪大家聊天&#xff0c;她的QQ号是615050000 。   直接加她为好友&#xff0c;你就可以随时和她聊天了。  小Q妹妹聪明好学&#xff0c;你可以教她说话&#xff0c;也可以请她帮忙查询邮…