npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

qy-cli

v0.2.10

Published

一站式前端自动检测平台

Downloads

4

Readme

QY

一站式前端自动检测平台

名字的由来

西游记中记载:唐丞相魏征斩了泾河老龙王之后,老龙王的鬼魂自觉委屈,便每夜进入内宫找唐太宗李世民索命。无奈宫门外有秦琼尉迟恭二将把守,老龙王冤魂自不敢从双锏双鞭下走过,便转至皇宫的后宰门,砸砖碎瓦。由于秦琼和尉迟恭已在前门,故丞相魏征只好亲自持诛龙宝剑夜守后宰门,时间一长,老龙王的冤魂渐渐地衰落下去,魏征手中那把诛龙宝剑便不再呈高扬之状而垂立一侧了。魏征在隋唐演义中本是一文臣,最早在潞城县二贤庄三清观内当道长,后被民间奉为门神后,其像也仗剑怒目,一派英武气概。

因此取秦琼尉迟恭二人的名字作为我们的名字。中国民间常常将二人供奉为门神,将其神像贴于门上,用以驱邪避鬼、卫家宅、保平安、助功利、降吉祥等。我们的这个平台做的事情也是一样,将牛鬼蛇神拒之门外,保证代码的高质量,这是一个伟大的愿景。

我们的目标

我们的目标是有两个关键字。 一个是检测,另一个是弱相关。 检测的意思是我们只会检测并给出检测结果。并不会对文件进行任何修改,也就是说没有副作用。第二个是弱相关,怎么理解呢? 其实就是我们检测的东西是那些即使你错了,也可以正常运行,从而被很多人,尤其是习惯不好的人所忽略的内容。

第一期功能

第一期功能比较有限,我会在接下来的时间慢慢完善,将检测的范围和精确度上更进一层。第一期的功能主要有:

检测

图片:包括图片类型检测,图片大小检测,图片相似度检测。

依赖:对项目的 package 进行检测,发现没用的,过期的,是否有已知的安全隐患。

通知

将检测结果通知相关人员。支持 webhook 自定义

下一步

  1. 加入不安全写法的检测,并可以通过插件实现定制。如公司信息泄漏,安全隐患写法等。
  2. 支持更多图片格式和类型,如 base64,webp 等
  3. 将 QY 拆分为 QY-cli 和 QY-core

让我们开始吧

配置

  1. 将 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 文件,检测结果可能和实际不一致

  1. 安装 qy-cli
npm i qy-cli -g
  1. 运行
cd your-workspace
qy

插件

我们提供了插件机制供开发者定制自己的功能。这里有一个插件的例子:图片压缩插件

本质上插件就是一个函数,函数的参数是用户的配置信息(见上方的配置)和 img-list。插件将会在检测通过之后调用。 将来我们也可能增加更多钩子。 比如检测失败的钩子,检测成功的钩子等。

FQ&A

  1. Cannot find module '/xxxx/xxxx/qy.config.js'

maybe you should specify the root.for example:

./qy-cli.js --root ../
  1. 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