# @melody-core/holmes
🕵️ 福尔摩斯!为您的项目提供安全扫描服务!
# 1. 作为命令行工具使用
安装
# 我们更期望您可以通过 melody来安装它。
yarn global add @melody-core/melody-cli
# 安装
melody i @melody-core/holmes
# 使用-目标项目的根目录下运行
melody holmes check
当然,也可以直接安装和使用它。
yarn global add @melody-core/holmes
使用
# 您可以在任意前端项目的根目录下运行
holmes check
# 2. 作为依赖包使用
安装
yarn add @melody-core/holmes
使用
const PackageSafeWorker = require('@melody-core/holmes');
const packageSafeWorker = new PackageSafeWorker({
proPath //参数,要检测项目的绝对路径
});
const result = await PackageSafeWorker.run();
console.log('项目依赖包安全检测结果:', result)
# 原理与设计
# 注意点
由于每个业务组项目的依赖安装方式不一样,会带来一定的差异:
- yarn 生成 yarn.lock
- npm 生成 package-lock.json
- cnpm 不会生成锁文件
因此关键点在于如何兼容这些安装方式所带来的差异性问题:
- 文件参数不一致,那么每一种最匹配的扫描方案都不一致
- 每种扫描方案的输出不一致;
# 兼容性方案
# 扫描方式兼容
Yarn/npm/retirejs.js
- yarn audit
- npm audit
- retirejs.js 用来解决无锁文件的情况
因此,holmes其实就是会先检测项目根目录下是否含有锁文件,如果含有,则用对应的yarn/np audit来获取检测数据。如果没有,则会使用retirejs来兼容无锁文件下的检测(根据package.json里的依赖项)。