1.0.1 • Published 1 year ago

magic-analyzer v1.0.1

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

简介

A simple plugin for analyzing file type, code type, code volume, and percentage statistics based on the node environment。 一个简单的基于node环境的文件类型、代码类型、代码量、及占比统计分析插件

安装

#npm
npm install magic-analyzer

#yarn
yarn add magic-analyzer

使用配置说明

  • 第一步:在需要进行分析的项目根目录【或在你需要分析的文件目录】中新建一个xx.mjs 或者xx.js的文件

    xx.mjs【package.json中有"type": "module"配置】

    /* eslint-env node */
    import codeAnalyze from 'magic-analyzer'
    import {fileURLToPath} from 'url';
    import path from 'path';
    
    // 排除指定文件或目录不統計:自定义
    const exceptItem = [
        'node_modules',
        'public',
        'assets',
        'dist',
        'docker',
        'docs',
        'gitignore',
        'git',
        'development',
        'production',
        'md',
        'remark',
        'idea',
        'yarn',
        'eot',
        'ttf',
        'woff',
        'txt',
        'json'
    ]
    // 指定要统计的目录路径
    //获取当前文件的 URL
    const __filename = fileURLToPath(import.meta.url);
    // 将 URL 转换为文件路径
    const __dirname = path.dirname(__filename);
    const directoryPath = __dirname
    // 調用統計分析方法
    codeAnalyze(directoryPath,exceptItem)

    xx.js【package.json中无type配置】

    /* eslint-env node */
    const codeAnalyze = require('magic-analyzer')
    const path = require('path')
    
    // 排除指定文件或目录不統計:自定义
    const exceptItem = [
        'node_modules',
        'public',
        'assets',
        'dist',
        'docker',
        'docs',
        'gitignore',
        'git',
        'development',
        'production',
        'md',
        'remark',
        'idea',
        'yarn',
        'eot',
        'ttf',
        'woff',
        'txt',
        'json'
    ]
    // 指定要统计的目录路径
    const moduleURL = path.join(__dirname)
    // 使用 path 模块来操作文件路径
    const directoryPath = path.dirname(moduleURL)
    // 調用統計分析方法
    codeAnalyze(directoryPath,exceptItem)
  • 第二步:在package.json的script脚本中配置一个分析命令,codeTest自定义命名,如下只是举例

    // xxx.js 或 xxx.mjs 在根目录
    "scripts": {
        "codeTest": "node xxx.mjs"
    },
    ## 或者
    "scripts": {
        "codeTest": "node xxx.js"
    },
    
    // 若xxx.js 或 xxx.mjs不在根目录,只需要根据其所在位置和package.json文件位置而定
    // 若在src目录: /src/xxx.js 或者 /src/xxx.mjs
    "scripts": {
        "codeTest": "node src/xxx.js"
    },
    ## 或者
    "scripts": {
        "codeTest": "node src/xxx.mjs"
    },

    注意:node运行的xxx.js或xxx.mjs文件路径为所在项目的绝对路径,自行更换相关配置

  • 第三步:在控制台运行分析命令

    yarn run codeTest ## npm run codeTest

codeAnalyze函数用法

codeAnalyze(path,exceptItem,sortType)

参数

  • path:分析目录路径,相对路径或绝对路径。

  • exceptItem:排查不统计项字符串数组,例如:

    const exceptItem = ['dist','txt','json','md','LICENSE',……]
    // 即:不统计dist目录、txt文件、json文件、md文件、LICENSE使用许可文件
  • sortType:排序类型,根据 files(文件数量) 字段排序,不区分大小写

    • ASC:升序
    • DESC:降序(默认)
    'desc' 等价于 'DESC'

实例

案例01:xx.mjs 或者xx.js文件创建在根目录,分析整个项目

01:项目目录结构如下

vue_demo/				   # 项目名称
        ├── node_modules/        # 项目依赖的 node 模块
        ├── public/              # 公共资源目录
        │   ├── favicon.ico      # 网页图标
        │   └── index.html       # html模板(单页面应用)
        ├── src/                 # 源代码目录
        │   ├── assets/          # 静态资源文件夹,如图片、字体等
        │   ├── components/      # 公共组件
        │   ├── router/          # 路由文件夹
        │   ├── store/           # Vuex状态管理文件夹
        │   ├── views/           # 视图层组件
        │   ├── App.vue          # Vue 根组件,也是整个应用的入口
        │   └── main.js          # Vue 实例化入口文件,也是整个应用的入口
        ├── .gitignore           # Git管理忽略文件
        ├── package.json         # 项目配置文件
        ├── README.md            # 项目说明文件
        ├── xxx.mjs              # magic-analyzer分析配置文件
        └── vite.config.mjs      # vite配置文件

02:配置 xxx.js 或者 xxx.mjs文件:见文档 使用配置说明

//语法:codeAnalyze(path,exceptItem,sortType)

// 分析vue_demo整个项目: 分析目录相对于 xxx.js 或者 xxx.mjs 文件的相对路径
const exceptItem = ['node_modules','gitignore','assets','md']
codeAnalyze('../vue_demo',exceptItem) // sortType不传默认DESC(降序)排序

// 若只分析src目录
const exceptItem = ['assets']
codeAnalyze('./src',exceptItem,'asc') // 升序排序

// 也可以通过如下+ path获取分析目录或者文件路径:分类目录或文件绝对路径,见 “使用配置说明”
import {fileURLToPath} from 'url';
import path from 'path';

// 指定要统计的目录路径
const moduleURL = path.join(__dirname)
// 使用 path 模块来操作文件路径
const directoryPath = path.dirname(moduleURL)
// 調用統計分析方法
codeAnalyze(directoryPath,exceptItem)
…………

03:运行命令 见 使用配置说明

04:分析结果即(analyzer.json)

  • 降序(默认)排序:DESC

    {
        "js": {
            "files": 8,
            "lines": 302,
            "fileNumPercentage": "42.11%",
            "codeNumPercentage": "28.44%"
        },
        "mjs": {
            "files": 7,
            "lines": 299,
            "fileNumPercentage": "36.84%",
            "codeNumPercentage": "28.15%"
        },
        "json": {
            "files": 3,
            "lines": 96,
            "fileNumPercentage": "15.79%",
            "codeNumPercentage": "9.04%"
        },
        "lock": {
            "files": 1,
            "lines": 365,
            "fileNumPercentage": "5.26%",
            "codeNumPercentage": "34.37%"
        }
    }
  • 升序排序:ASC

    {
        "lock": {
            "files": 1,
            "lines": 365,
            "fileNumPercentage": "5.26%",
            "codeNumPercentage": "34.37%"
        },
        "json": {
            "files": 3,
            "lines": 96,
            "fileNumPercentage": "15.79%",
            "codeNumPercentage": "9.04%"
        },
        "mjs": {
            "files": 7,
            "lines": 299,
            "fileNumPercentage": "36.84%",
            "codeNumPercentage": "28.15%"
        },
        "js": {
            "files": 8,
            "lines": 302,
            "fileNumPercentage": "42.11%",
            "codeNumPercentage": "28.44%"
        }
    }

生成文件说明

根目录之下会生成一个analyzer.json文件,该文件是分析当前项目生成的统计文件,生成json案例如下:

{
  "mjs": {
    "files": 1, // .mjs文件总数
    "lines": 43, // .mjs代码行数
    "fileNumPercentage": "50.00%", // 文件数量百分比占比(基于本次分析总文件量)
    "codeNumPercentage": "75.44%" // 代码量百分比占比(基于本次分析总代码量)
  },
  "js": {
    "files": 1,
    "lines": 14,
    "fileNumPercentage": "50.00%",
    "codeNumPercentage": "24.56%"
  }
}

使用环境

  • node >= 12.0.0
  • package.json"type": "module"只能使用使用说明中的xx.mjs文件
  • package.json中没有type配置,可以使用xx.mjs 或者xx.js的文件进行分析配置

注意事项

  • 分析文件不能过多,否则会分享失败并且报错,比如排除不必要的distnode_moduleassets等等。
  • 默认分析当前项目

更新日志

  • 2024-06-04
    • 新增sortType排序类型,通过files排序
    • 更新package.json文件,添加仓库地址
    • 更新README.md文档