{"_id":"@51jbs/incremental-coverage-plugin","_rev":"2-6a6bf72f789869425eb0592252dbd474","name":"@51jbs/incremental-coverage-plugin","dist-tags":{"latest":"1.0.5"},"versions":{"1.0.1":{"name":"@51jbs/incremental-coverage-plugin","version":"1.0.1","keywords":["coverage","incremental","istanbul","webpack","vite","babel"],"author":{"name":"chuanjing729"},"license":"MIT","_id":"@51jbs/incremental-coverage-plugin@1.0.1","maintainers":[{"name":"chuanjing729","email":"chuanjing729@gmail.com"}],"dist":{"shasum":"10f8e661b48141e3e0cbc90072a340683e7bb65c","tarball":"https://registry.npmjs.org/@51jbs/incremental-coverage-plugin/-/incremental-coverage-plugin-1.0.1.tgz","fileCount":23,"integrity":"sha512-BlRYDt4ha53uPuszJgX9XV2sY4YuUtyPdtByO6gx0gonFq7xLr6LjPUsbMTI5Nhk8pi8TQACi+UKaLFcoFcgGg==","signatures":[{"sig":"MEQCIBhKIlD2N2EEkKN2tONkIPi7tZnmUXvIzwNxxvruO0CVAiAvGpr9WQyj7kozt589GzevBWT5blM+G0ivTFIgjINv1Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":909647},"main":"./dist/index.js","_from":"file:51jbs-incremental-coverage-plugin-1.0.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.mjs","require":"./dist/vite.js"},"./webpack":{"types":"./dist/webpack.d.ts","import":"./dist/webpack.mjs","require":"./dist/webpack.js"}},"scripts":{"dev":"tsup --watch","lint":"eslint src","test":"vitest","build":"tsup","release":"echo 'Run: npm publish' && exit 1","typecheck":"tsc --noEmit","test:coverage":"vitest --coverage"},"_npmUser":{"name":"chuanjing729","email":"chuanjing729@gmail.com"},"_resolved":"/tmp/e1c8b1c6613ee5f142d58b44665174a2/51jbs-incremental-coverage-plugin-1.0.1.tgz","_integrity":"sha512-BlRYDt4ha53uPuszJgX9XV2sY4YuUtyPdtByO6gx0gonFq7xLr6LjPUsbMTI5Nhk8pi8TQACi+UKaLFcoFcgGg==","_npmVersion":"10.8.2","description":"Lightweight incremental coverage plugin based on babel-plugin-istanbul and istanbul-diff","directories":{},"_nodeVersion":"20.19.6","dependencies":{"unplugin":"^1.14.1","simple-git":"^3.25.0","@babel/core":"^7.23.0","istanbul-diff":"^1.1.0","istanbul-reports":"^3.1.6","istanbul-lib-report":"^3.0.1","babel-plugin-istanbul":"^7.0.0","istanbul-lib-coverage":"^3.2.2"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^1.6.1"},"peerDependencies":{"vite":"^3.0.0 || ^4.0.0 || ^5.0.0","webpack":"^4.0.0 || ^5.0.0"},"peerDependenciesMeta":{"vite":{"optional":true},"webpack":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/incremental-coverage-plugin_1.0.1_1766400724791_0.8090022148621474","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@51jbs/incremental-coverage-plugin","version":"1.0.5","description":"Lightweight incremental coverage plugin based on babel-plugin-istanbul and istanbul-diff","keywords":["coverage","incremental","istanbul","webpack","vite","babel"],"author":{"name":"chuanjing729"},"license":"MIT","main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js","import":"./dist/index.mjs"},"./webpack":{"types":"./dist/webpack.d.ts","require":"./dist/webpack.js","import":"./dist/webpack.mjs"},"./vite":{"types":"./dist/vite.d.ts","require":"./dist/vite.js","import":"./dist/vite.mjs"}},"dependencies":{"@babel/core":"^7.23.0","babel-plugin-istanbul":"^7.0.0","istanbul-diff":"^1.1.0","istanbul-lib-coverage":"^3.2.2","istanbul-lib-report":"^3.0.1","istanbul-reports":"^3.1.6","simple-git":"3.15.0","unplugin":"^1.14.1"},"devDependencies":{"@types/node":"^20.0.0","@vitest/coverage-v8":"^1.6.1","tsup":"^8.0.0","typescript":"^5.3.0","vitest":"^1.0.0"},"peerDependencies":{"vite":"^3.0.0 || ^4.0.0 || ^5.0.0","webpack":"^4.0.0 || ^5.0.0"},"peerDependenciesMeta":{"webpack":{"optional":true},"vite":{"optional":true}},"engines":{"node":">=14.0.0"},"scripts":{"build":"tsup","dev":"tsup --watch","test":"vitest","test:coverage":"vitest --coverage","lint":"eslint src","typecheck":"tsc --noEmit","release":"echo 'Run: npm publish' && exit 1"},"_id":"@51jbs/incremental-coverage-plugin@1.0.5","_integrity":"sha512-/PBVvIMM0dt7O6Dj74DVtZ8ikoG0STp2Lpm4YFg+c9T/Q/733AvVI4FjwmWDRk361RyZha7s81JdNaPdw13MfA==","_resolved":"/tmp/d166defd1da114952a9508b2a6c505e3/51jbs-incremental-coverage-plugin-1.0.5.tgz","_from":"file:51jbs-incremental-coverage-plugin-1.0.5.tgz","_nodeVersion":"20.19.6","_npmVersion":"10.8.2","dist":{"integrity":"sha512-/PBVvIMM0dt7O6Dj74DVtZ8ikoG0STp2Lpm4YFg+c9T/Q/733AvVI4FjwmWDRk361RyZha7s81JdNaPdw13MfA==","shasum":"a2938f5b5d9d78a122dbce1d1409c9aec8c719f5","tarball":"https://registry.npmjs.org/@51jbs/incremental-coverage-plugin/-/incremental-coverage-plugin-1.0.5.tgz","fileCount":23,"unpackedSize":911758,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCBQJofTBf+TX1+aJX2w4ZLF1t9yFHg8Y+naabJi+5oLwIgfGzXTjPgO8e+T74UJBRC5O2d636GYGzm99vMjFJNrzM="}]},"_npmUser":{"name":"chuanjing729","email":"chuanjing729@gmail.com"},"directories":{},"maintainers":[{"name":"chuanjing729","email":"chuanjing729@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/incremental-coverage-plugin_1.0.5_1766417322909_0.45596938197988823"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-22T10:52:04.692Z","modified":"2025-12-22T15:28:43.315Z","1.0.1":"2025-12-22T10:52:04.965Z","1.0.5":"2025-12-22T15:28:43.101Z"},"author":{"name":"chuanjing729"},"license":"MIT","keywords":["coverage","incremental","istanbul","webpack","vite","babel"],"description":"Lightweight incremental coverage plugin based on babel-plugin-istanbul and istanbul-diff","maintainers":[{"name":"chuanjing729","email":"chuanjing729@gmail.com"}],"readme":"# 增量覆盖率插件 (Incremental Coverage Plugin)\n\n> 🎯 **核心目标**: 精准追踪代码变更后的覆盖率情况，为研发自测提供量化数据支撑。\n\n本插件基于 `babel-plugin-istanbul` 和 `istanbul-diff`，通过集成 Git 差异分析，自动计算自测过程中的增量覆盖率。\n\n## ✨ 核心价值\n\n- **🚀 聚焦变更**: 告别冗长的全量覆盖率报告，核心关注你改动的那几行代码。\n- **🛡 质量契约**: 设置增量覆盖率阈值，作为代码合并与上线的硬性质量指标。\n- **🔗 一站式集成**: 深度集成 Git，自动解析 Diff 提取新增行号，无需手动干预。\n- **🔋 生产就绪**: 具备防抖上报、故障重试及报告自动清理机制，保障构建链路稳定。\n\n## 🏗️ 核心模块\n\n| 模块 | 职责 |\n|------|------|\n| **CoverageCollector** | 负责浏览器端数据的收集与内存合并 |\n| **CoverageDiffer** | 使用 istanbul-diff 计算基准与当前的差异 |\n| **GitService** | 自动提取 Git Diff 变更行号 |\n| **CoverageReporter** | 生成可视化 HTML 报告与 JSON 结构化数据 |\n\n## 📦 安装\n\n### 前置要求\n\n- Node.js >= 16.0.0\n- Git 仓库（必需）\n- **Webpack 4 或 5**（完全支持）\n- **webpack-dev-server 3.x 或 4.x**（自动适配）\n\n### 快速安装\n\n```bash\nnpm install @51jbs/incremental-coverage-plugin --save-dev\n```\n\n### 验证安装\n\n```bash\nnpm ls @51jbs/incremental-coverage-plugin\n```\n\n> 💡 **提示**：插件已内置所有必要依赖（包括 `@babel/core`、`istanbul-lib-*`），无需额外安装。\n\n## 📚 快速导航\n\n- [**安装指南**](./docs/installation.md): 详细的安装步骤和前置要求检查。\n- [**快速开始**](./docs/quick-start.md): 15 分钟完成 Webpack 项目接入。\n- [**功能特性**](./docs/features.md): 深入了解增量计算与生产级保护机制。\n- [**故障排查**](./docs/troubleshooting.md): 常见问题诊断和解决方案。\n- [**技术架构**](./docs/architecture.md): 查看整体设计方案与时序图。\n- [**API 参考**](./docs/api.md): 查看详细的配置项说明。\n\n---\n\n## 📄 许可证\n\n本项目采用 [MIT](https://github.com/chuanjing729-glitch/fe-workspace/blob/main/packages/incremental-coverage-plugin/LICENSE) 许可证发布。\n","readmeFilename":"README.md"}