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

dproxy

v0.7.2

Published

一个类似Fiddler的Web调试代理.A proxy designed for web developing, works like Fiddler

Downloads

7

Readme

Web调试代理 Dproxy

按照配置的规则列表提供灵活的http代理服务.
(暂时只支持普通http请求,后续添加websocket和https的支持)

主要面向前端开发环境做的设计,由此省掉繁琐的绑host操作

文档还需要完善,有问题可以直接联系我.

主要功能

普通的代理服务器功能:返回浏览器指定请求的结果

遵照一个规则列表,将特殊设置的地址用特殊的handler处理

作为一个简单的静态服务器:在前端开发的测试环境中替代nginx

使用方法

###下载安装 不需要额外安装依赖模块,直接下载代码 > node cli.js

  1. 首先,安装Nodejs
  2. git clone git://github.com/deemstone/Dproxy.git /你的电脑/任意目录..
  3. 将工程下的./bin目录添加到系统环境变量$PATH中
  4. 在命令行中执行dproxy
  5. 根据需要编辑配置文件

###配置文件 配置文件都放在./conf目录下,整体仿造nginx的设计

  • ./conf/dproxy.conf 是代理服务器全局配置,可以更改端口号

    工程下自带一个样例: dproxy.conf.sample
    直接拷贝,修改使用

  • ./conf/rule 文件夹下的所有*.rule文件都是"代理规则"配置文件

    也自带了一个样例: rule.sample

###代理规则

每个.rule文件被加载到服务中被当做一个"规则分组"(group)
分组之间保持独立(不会互相覆盖)
根据分组启用的先后顺序,后启用的分组,其中的规则会优先匹配
只能操作分组的"启用/停用"(不提供单条规则的操作)

.rule文件主要由三大部分: handler定义块, oneline配置块, 分域名配置块

####handler定义块: 这里定义的handler仅可以在当前分组中引用,全局配置文件(dproxy.conf)中同名的handler会被忽略
handler的书写格式见.sample样例文件

目前dproxy支持的handler类型:

  • local - 本地文件
  • remote - 某指定host请求
  • opm - 从opm服务获取文件
  • online - 代理到线上环境

其中,opm是一个前端的包管理工具,用python编写项目地址

####分域名配置块 每个域名写一个块(多个域名用逗号隔开)
rewrite 类似nginx的用法
default 如果没有找到匹配的规则,默认使用该条配置的handler处理该域名下的请求

匹配条件只写除去域名剩下的路径部分,可以使用*作为通配符,用(xx|xxx)表示"或"操作

####oneline配置块 意思是"单行配置",用一行配置添加一条规则,匹配条件需要写完整的url,也可以使用通配符

###交互命令

proxy启动之后会进入一个简单的命令行模式,按一下Tab键列出所有命令:

  • groups 查看所有加载上来的规则分组,列表中的"*"号标示已启用的分组
  • up 启用一个分组 up
  • down 停用一个分组 down
  • ls 查看"某分组|全部"规则列表 ls []
  • roll 实时的滚动显示正在处理的请求,在滚动模式下按"q"键退回到命令行模式
  • status 查看服务器状态(内存,平台…)
  • exit 停止服务并退出

处理一个请求的流程

  1. 接收到一个请求
  2. 查看该请求url是否与规则列表中某条规则匹配
  3. 如果匹配,查询到该条规则指定的数据源(handler)
  4. 根据handler的类型,把参数传递给相应的代理模块
  5. 由代理模块发出请求,将处理结果返回浏览器
  6. 如果不匹配,默认直接从线上取回该内容返回浏览器