msw-fs-router
v0.0.2
Published
A file system router for MSW (Mock Service Worker). Heavily inspired by unjs/nitro file system router.
Downloads
5
Readme
msw-fs-router
⚠️ Warning: This package is experimental and currently only works with Node.js because it uses
globby
. I am in the process of converting this into a plugin withunplugin
to make it usable both in Node.js and the browser.
msw-fs-router
is a package that provides a file system-based router for mocking server responses using Mock Service Worker (MSW).
It allows you to define your mock routes and responses in a file system structure, making it easier to manage and scale your mock API.
Usage
Install package:
# ✨ Auto-detect
npx nypm install msw-fs-router
# npm
npm install msw-fs-router
# yarn
yarn add msw-fs-router
# pnpm
pnpm install msw-fs-router
# bun
bun install msw-fs-router
# deno
deno install msw-fs-router
Import:
ESM (Node.js, Bun, Deno)
import { defineMswHandler, getMswHandlers } from "msw-fs-router";
CommonJS (Legacy Node.js)
const { defineMswHandler, getMswHandlers } = require("msw-fs-router");
CDN (Deno, Bun and Browsers)
import { defineMswHandler, getMswHandlers } from "https://esm.sh/msw-fs-router";
API
defaults
scanPattern
- Type:
string
- Default:
"**/*.{js,mjs,cjs,ts,mts,cts,tsx,jsx}"
suffixRegex
The regular expression used to match file suffixes.
defineMswHandler(resolver)
Define an MSW (Mock Service Worker) handler in a simple and typed way with TypeScript.
Example:
// src/handlers/user.ts
import { defineMswHandler } from "msw-fs-router";
import { HttpResponse } from "msw";
export default defineMswHandler(() => {
return HttpResponse.json({
id: "abc-123",
firstName: "John",
lastName: "Doe",
});
});
getMswHandlers(options)
Asynchronously retrieves the MSW (Mock Service Worker) handlers by scanning the specified routes in the filesystem.
Example:
import { setupServer } from "msw/node";
import { getMswHandlers } from "msw-fs-router";
const options = {
baseURL: "http://localhost:3000",
scanDirs: ["./src/handlers"],
};
const handlers = await getMswHandlers(options);
const server = setupServer(...handlers);
server.listen();
Development
- Clone this repository
- Install latest LTS version of Node.js
- Enable Corepack using
corepack enable
- Install dependencies using
pnpm install
- Run interactive tests using
pnpm dev
Acknowledgements
Special thanks to the unjs community and the Nitro library, as the functionality of this package has been directly extracted from their code. Your contributions are greatly appreciated!
And thanls to the MSW team for their seamless API mocking library!
License
Published under the MIT license. Made by community 💛
🤖 auto updated with automd