iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >怎么统计Webpack组件的使用次数
  • 470
分享到

怎么统计Webpack组件的使用次数

2023-06-07 18:06:01 470人浏览 独家记忆
摘要

怎么统计webpack组件的使用次数?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。用的 @material-ui,下面是组件使用情况实现我们知道 loader

怎么统计webpack组件的使用次数?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

用的 @material-ui,下面是组件使用情况

怎么统计Webpack组件的使用次数

实现

我们知道 loader 的 source是文件的静态字符串如下图

怎么统计Webpack组件的使用次数

最快的方案通过字符串统计用正则的方式一把梭,但是这样会有问题就是如果注释部分有的话也会被统计进去就不准确,所以我们可以通过 AST 的方式来实现,关于 ast 的概念有很多大佬都讲过了我就不啰嗦了

分析 AST

我这边是通过 @babel/parser 来分析的,我们先看下面这段代码在网站上的构成

import { Box } from '@material-ui/core';import Autocomplete from '@material-ui/lab/Autocomplete';

怎么统计Webpack组件的使用次数

我们可以看出路径  program => body ,然后声明类型是 type: ImportDeclaration,继续看如下构成

"source": {     "type": "StringLiteral",     "value": "@material-ui/core" }, // 第二段 "source": {      type": "StringLiteral",     "value": "@material-ui/lab/Autocomplete" },

我们发下这个字段里面的 value 有我们想要的包名所以第一段代码就是

const ast = parser.parse(source, {      sourceType: 'module',      plugins: ['jsx'], });const getImport = 'ImportDeclaration';const getMaterialImport = packageName || '@material-ui';const importAst = ast.program.body.filter(  // type 节点类型,这里我们去过滤 import 声明类型 同时去过滤  (i) => i.type === getImport && i.source.value.includes(getMaterialImport),);

拿到相关的 ast 数组下一步就要去拿到组件名字了, 通过观察我们发现 specifiers 标识符这个字段里面有两个字段包含组件名:imported、local

 怎么统计Webpack组件的使用次数

  • imported 表示从导出模块导出的变量

  • local 表示导入后当前模块的变量

这里我取的 local, 因为下面这种方式并不会出现 imported  这个字段

import Autocomplete from '@material-ui/lab/Autocomplete';

这个时候包的名字也拿到了后面就简单了直奔主题贴完整代码了

demo

const parser = require('@babel/parser');const loaderUtils = require('loader-utils');const total = {  len: 0,  components: {},};// 对象排序const sortable = (obj) => Object.fromEntries(Object.entries(obj).sort(([, a], [, b]) => b - a));module.exports = function(source) {  console.log(source, '--');  const options = loaderUtils.getOptions(this);  const { packageName = '' } = options;  const callback = this.async();  if (!packageName) return callback(null, source);  try {    // 解析成 ast    const ast = parser.parse(source, {      sourceType: 'module',      plugins: ['jsx'],    });    if (ast) {      setTimeout(() => {        const getImport = 'ImportDeclaration';        const getMaterialImport = packageName;        const importAst = ast.program.body.filter(          // type 节点类型,这里我们去过滤 import 声明类型 同时去过滤          (i) => i.type === getImport && i.source.value.includes(getMaterialImport),        );        total.len = total.len + importAst.length;        for (let i of importAst) {          const { specifiers = [] } = i;          for (let s of specifiers) {            if (s.local) {              const { name } = s.local;              total.components[name] = total.components[name] ? total.components[name] + 1 : 1;            }          }        }        total.components = sortable(total.components);        console.log(total, 'total');        callback(null, source);      }, 0);    } else callback(null, source);  } catch (error) {    callback(null, source);  }};

调用 loader

 {  test: /\.(jsx|)$/,  exclude: /node_modules/,  include: [appConfig.eslintEntry],  use: [    {      loader: path.resolve(__dirname, './loader/total.js'),      options: {        packageName: '@material-ui',      },    },  ],},

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: 怎么统计Webpack组件的使用次数

本文链接: https://www.lsjlt.com/news/249929.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么统计Webpack组件的使用次数
    怎么统计Webpack组件的使用次数?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。用的 @material-ui,下面是组件使用情况实现我们知道 loader ...
    99+
    2023-06-07
  • 使用Java怎么统计数组中元素的出现次数
    使用Java怎么统计数组中元素的出现次数?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。具体如下:package javatest;import java...
    99+
    2023-05-31
    java 数组 ava
  • php怎么统计数组中出现的次数
    可以使用PHP的array_count_values()函数来统计数组中元素的出现次数。该函数会返回一个关联数组,其中键是数组中的元...
    99+
    2023-08-16
    php
  • 怎么使用python统计字符在文件中出现的次数
    今天小编给大家分享一下怎么使用python统计字符在文件中出现的次数的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、本项目...
    99+
    2023-07-05
  • php如何统计数组中出现的次数
    要统计数组中元素出现的次数,可以使用`array_count_values()`函数。该函数会返回一个关联数组,其中元素是数组中的值...
    99+
    2023-09-17
    php
  • 利用Java怎么统计整数出现的次数
    利用Java怎么统计整数出现的次数?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。要求:随机产生50个10到50的整数,统计每个数字各出现几次,出现0次的数字不打印。代码如下...
    99+
    2023-05-31
    java ava
  • python怎么统计数字出现的次数
    可以使用字典来统计数字出现的次数。首先,遍历数字列表,对于列表中的每个数字,判断它是否已经在字典中存在。如果不存在,则将该数字作为键...
    99+
    2023-10-12
    python
  • PHP统计数组中所有值出现的次数
    ...
    99+
    2024-04-02
  • 怎么用numpy统计元素出现次数
    你可以使用numpy的`unique`函数来统计元素出现的次数。`unique`函数返回一个由原数组中出现的元素构成的新数组,以及一...
    99+
    2023-10-11
    NumPy
  • linux怎么统计文件中字符串出现的次数
    在Linux中,可以使用`grep`命令来统计文件中字符串出现的次数。具体的命令格式如下: grep -o "字符串" 文件名 | ...
    99+
    2023-10-27
    linux
  • 如何使用python统计字符在文件中出现的次数
    目录引言:一、本项目来源:二、先上传自己写的程序三、解读程序语句。四、程序运行效果五、程序中需要注意的事总结引言: 本人从小白自学python,为了测试基础学习效果,增加一定的促进,...
    99+
    2023-03-08
    python输出字符出现的次数 python统计字母出现次数 python求字符出现的次数
  • PHP怎么统计字符的出现次数
    这篇文章主要讲解了“PHP怎么统计字符的出现次数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP怎么统计字符的出现次数”吧!给出一个字符串“aaabbccqqwweeab”,如何统计出每...
    99+
    2023-06-20
  • unity怎么统计环境重置次数
    在Unity中统计环境重置次数可以通过以下步骤实现:1. 创建一个整型变量用于存储环境重置次数,例如`resetCount`。2. ...
    99+
    2023-08-20
    unity
  • 如何使用python统计每个数字出现的次数
    你可以使用Python中的字典来统计每个数字出现的次数。以下是一个示例代码:```pythonnumbers = [1, 2, 3,...
    99+
    2023-09-16
    python
  • 如何使用awk统计文件中某关键词出现次数
    这篇文章主要介绍如何使用awk统计文件中某关键词出现次数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!awk -F "" '{for(i=1;i<=NF;++i) if($i==&q...
    99+
    2023-06-09
  • 使用python怎么统计list列表中各个元素出现的次数
    这篇文章将为大家详细讲解有关使用python怎么统计list列表中各个元素出现的次数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。利用字典dict来完成统计举例:a = ...
    99+
    2023-06-06
  • excel怎么统计出现次数并排序
    这篇文章主要讲解了“excel怎么统计出现次数并排序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“excel怎么统计出现次数并排序”吧!excel统计出现次数并排序的方法:首先点击顶部“插入...
    99+
    2023-07-02
  • JavaScript 中怎么实现数组去重并统计重复元素出现的次数
    这篇文章将为大家详细讲解有关JavaScript 中怎么实现数组去重并统计重复元素出现的次数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、方法一var&...
    99+
    2024-04-02
  • oracle怎么统计某个字段出现的次数
    要统计某个字段出现的次数,可以使用Oracle的SQL语句结合聚合函数来实现。以下是一个示例: 假设有一个表名为table_name...
    99+
    2024-04-09
    oracle
  • vb怎么统计每个字符出现的次数
    你可以使用一个Dictionary对象来存储每个字符出现的次数,然后遍历字符串中的每个字符并更新对应的计数器。以下是一个示例代码: ...
    99+
    2024-03-02
    vb
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作