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

news/2025/1/15 15:29:18/

    早期开发前端覆盖率的时候,使用的是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.ppmy.cn/news/709817.html

相关文章

Redis介绍、安装、性能优化

Redis介绍、安装、性能优化 一、关系数据库和非关系数据库概述1、关系型数据库2、非关系型数据库1、数据存储格式不同2、扩展方式不同3、对事务的支持不同 三、非关系数据库产生背景1、总结 四、Redis简介1、 Redis的单线程模式2、Redis优点3、Redis的缺点 五、Redis安装部署六…

中国国内采购平台大全

中国作为全世界电子商务最发达的地区之一,每日都有数以百万计的订单产生,而为了满足这么庞大的销量,商家就必须要通过多个供应商来拿货,由此专门供应产品给商家的的采购平台也就应运而生了。 一、阿里巴巴 阿里巴巴毋庸置疑是国内…

区块链交易正规平台有哪些?哪个区块链交易平台正规?

区块链交易正规平台有哪些?哪个区块链交易平台正规? 区块链变得异常火爆,只要跟区块链沾边的,身价都会翻倍。网上对于区块链的消息与言论也是各有不同,无论是褒义是贬义,在接触区块链投资前,都应…

有几万闲钱,投资什么好?

其实投资理财没有最好,只有适合不适合,选择适合自己的方式就是最好的。都想投最少的钱,能得最高的收益,而且还要零风险,但无论是投资还是理财都是不存在的,高收益永远伴随高风险。 就现在的投资环境&#x…

47 # 实现可读流

上一节讲了 fs.createReadStream 创建一个可读流,那么怎么查看它的源码是怎么实现的? 我们可以采用打断点的方式:我们可以看到先执行了 lazyLoadStreams 如果没有 ReadStream 就会 require 内部的 internal/fs/streams 模块 通过 internal/f…

医药电商平台解决方案

医药行业电商平台搭建方案 医药行业的发展走向: 2018年全国七大类医药商品销售总额为21800亿元,较上年同比增长9%。随着医药卫生体制改革的不断深入,药品行业积极顺应政策导向,呈现增长平稳、结构优化、质量升级的发展态势。资本…

电商平台-供应链模块的设计与架构

说明:Java开源生鲜电商平台中供应链模块属于卖家的行为,也就是卖家如何管理他们自己的供应商,包括结算方式,压款方式,结算周期等等,超出了我这个B2B平台所提供的服务范畴,但是这块也是非常重要的…

简单介绍在线OTA几款平台

看好在线旅游平台——飞猪,携程,途牛,美团,马蜂窝,去哪儿旅行,同程(艺龙),马蜂窝,去哪儿旅行,京东旅行和驴妈妈。 在线旅游(OTA&…