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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@ftes/fake-server

v1.3.0

Published

Fake Server

Downloads

28

Readme

Fake Server

npmjs

Serve static responses, proxy responses and generate random responses from swagger specs.

  1. npm install --global @ftes/fake-server (or yarn global add @ftes/fake-server)
  2. Copy the config directory into your application directory.
  3. Adapt the configuration.js in the copied config directory to your needs.
  4. fake-server --configDir=<config-dir-from-step-2>

The main idea is to store the fake server configuration alongside your app. You can then run the global fake-server installation with this app-specific config to generate responses.

The exported function in <configDir>/configuration.js is called with the express app instance, the available middleware and all command line options.

Config Directory

Use ./config as a template. Copy it to your app's repository. It must contain a configuration.js and data folder. The structure of the data folder is explained below.

Data directory

Responses can be manually added as files. Also, proxied responses and swagger-generated ones are stored to this directory.

Mapping requests to files

The file matching a request is expected to be present at config/data/<req.path>/<req.method>[.<req.statusCode>].json. If a segment of req.path does not have a matching directory the * directory at that level is used as fallback (if present).

If several matching files are present (multiple status codes) then a random one of these is selected.

The order in which path segments are replaced with a * is shown in url-path-to-file.test.js.

The responses can be manually added. Also, proxied responses and swagger-generated ones are stored to this directory, if the recordData: true is passed to the middleware.

Examples

| Request | Response | | ------------------------- | ----------------------------------- | | GET books | /data/books/get.json | | GET books | /data/books/get.404.json | | GET books/123 | /data/books/*/get.json | | POST books | /data/books/post.json | | GET books/123/chapters | /data/books/123/chapters/get.json |

Middleware

You can use the provided middleware in your configuration.js. This includes:

Optionally, you can add a pre-configuration.js to your configuration directory. This is invoked before any other middleware is registered on the express instance. A potential use-case is sanitizing the request for the body-parser middleware (see this bug).

Docker

  • docker run -v <your-config-dir>:/usr/src/app/config -p 1337:1337 @ftes/fake-server