qy-cli
v0.2.10
Published
一站式前端自动检测平台
Downloads
2
Readme
QY
一站式前端自动检测平台
名字的由来
西游记
中记载:唐丞相魏征斩了泾河老龙王之后,老龙王的鬼魂自觉委屈,便每夜进入内宫找唐太宗李世民索命。无奈宫门外有秦琼
,尉迟恭
二将把守,老龙王冤魂自不敢从双锏双鞭下走过,便转至皇宫的后宰门,砸砖碎瓦。由于秦琼和尉迟恭已在前门,故丞相魏征只好亲自持诛龙宝剑夜守后宰门,时间一长,老龙王的冤魂渐渐地衰落下去,魏征手中那把诛龙宝剑便不再呈高扬之状而垂立一侧了。魏征在隋唐演义中本是一文臣,最早在潞城县二贤庄三清观内当道长,后被民间奉为门神后,其像也仗剑怒目,一派英武气概。
因此取秦琼
和尉迟恭
二人的名字作为我们的名字。中国民间常常将二人供奉为门神,将其神像贴于门上,用以驱邪避鬼、卫家宅、保平安、助功利、降吉祥等。我们的这个平台做的事情也是一样,将牛鬼蛇神拒之门外,保证代码的高质量,这是一个伟大的愿景。
我们的目标
我们的目标是有两个关键字。 一个是检测,另一个是弱相关。 检测的意思是我们只会检测并给出检测结果。并不会对文件进行任何修改,也就是说没有副作用。第二个是弱相关,怎么理解呢? 其实就是我们检测的东西是那些即使你错了,也可以正常运行,从而被很多人,尤其是习惯不好的人所忽略的内容。
第一期功能
第一期功能比较有限,我会在接下来的时间慢慢完善,将检测的范围和精确度上更进一层。第一期的功能主要有:
检测
图片:包括图片类型检测,图片大小检测,图片相似度检测。
依赖:对项目的 package 进行检测,发现没用的,过期的,是否有已知的安全隐患。
通知
将检测结果通知相关人员。支持 webhook 自定义
下一步
- 加入不安全写法的检测,并可以通过插件实现定制。如公司信息泄漏,安全隐患写法等。
- 支持更多图片格式和类型,如 base64,webp 等
- 将 QY 拆分为 QY-cli 和 QY-core
让我们开始吧
配置
- 将 qy.config.js 放到项目根目录。
文件内容如下:
{
root: '/', // 项目根目录,默认当前目录
imgThreshold: 50, // 限制图片大小为50k内 (单位kb),默认30kb
imgExts: ['png'], // 限制的图片类型,不限制填*,也可不填。默认不限制。
imgSSIMThreshold: 0.7, // 图片相似度阀值,默认为0.8
webhookUrl: 'http://www.xxx.com/', // 推送结果的webhookUrl,默认不推送
postProccess(content) { // 对检测结果的后处理,参数是检测报告,string类型
return content.replace(/\/Users.*?project-name/gim, "project-name");
},
checkIMG: true, // 只有true才会检测图片
checkDeps: true, // 只有true才会检测依赖
checkDepsOpts: { // 检测依赖配置,详情:https://github.com/depcheck/depcheck#API
withoutDev: false, // [DEPRECATED] check against devDependencies
ignoreBinPackage: false, // ignore the packages with bin entry
ignoreDirs: [
// folder with these names will be ignored
"sandbox",
"dist",
"bower_components"
],
ignoreMatches: [
// ignore dependencies that matches these globs
"grunt-*"
]
}
}
依赖检测,目前只支持 js 和 jsx,请在配置中配置。 暂时不支持 vue 等其他格式。因此如果你的项目中有 vue 文件,检测结果可能和实际不一致
- 安装 qy-cli
npm i qy-cli -g
- 运行
cd your-workspace
qy
插件
我们提供了插件机制供开发者定制自己的功能。这里有一个插件的例子:图片压缩插件
本质上插件就是一个函数,函数的参数是用户的配置信息(见上方的配置)和 img-list。插件将会在检测通过之后调用。 将来我们也可能增加更多钩子。 比如检测失败的钩子,检测成功的钩子等。
FQ&A
- Cannot find module '/xxxx/xxxx/qy.config.js'
maybe you should specify the root.for example:
./qy-cli.js --root ../
- the chalk does't work as expected.
try FORCE_COLOR=1.
FORCE_COLOR=1 node test/walk.js
参考
Does this package have known security vulnerabilities
controlling-node-js-security-risk-npm-dependencies
License
MIT