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

    早期开发前端覆盖率的时候,使用的是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文件夹中的报告

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值