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

@klweb/mock-server

v2.0.1

Published

Mock data service based on Node + Express + Mock.js

Downloads

4

Readme

@klweb/mock-server

@klweb/mock-server 昆仑模拟数据服务应用中间件(KL-MockServer),是基于 node + nodemon + express + mock.js 编写开发的一款实用的 node 插件,它可以帮助开发者快速搭建和部署一个模拟数据服务器。

技术原理

@klweb/mock-server 通过使用 node 作为底层运行环境框架;nodemon 作为运行监控策略,监听文件更改自动重启数据服务;express 构建数据服务器以及使用 mock.js 语法动态生产数据,使得开发者能够轻松地创建 API 接口。同时,它还集成了 cors(跨源资源共享)功能,允许不同源的前端应用程序与数据服务器进行交互。

通过编写模拟数据规则和响应逻辑,模拟各种场景下的请求和响应,并且根据需要定制返回模拟数据的结果,前端开发者可以无需依赖后端接口服务器,从而进行视图交互开发和调试,解决项目开发中前后端数据联调的解耦。

插件特性

  • 可全局或局部环境安装,配置简单
  • 支持命令行方式运行服务程序并可传递参数
  • 支持单独进程持续化运行
  • 自动为前端应用程序提供数据服务
  • 支持 mock.js 语法动态生产随机量级数据
  • 服务端口被占用时可自动分配其它可用端口
  • 实时监控数据文件更改,自动重启服务及状态反馈
  • 可自动保存后端接口返回的 json 格式数据至本地磁盘
  • 支持跨源资源共享,允许不同源的服务请求
  • 支持离线闭环环境的数据演示服务
  • 可在浏览器控制台 network 中查看数据请求信息

安装插件

@klweb/mock-server 支持全局和局部安装使用,cmd 输入以下命令:

# 全局安装(任意目录下)
npm install @klweb/mock-server -g

# 局部安装(项目根目录下)
npm install @klweb/mock-server -D

使用方法

@klweb/mock-server 的使用方法非常简单,只需通过 npm install 安装插件,然后在本地项目简单配置参数,即可在你的项目中启动一个模拟数据服务应用。

当开发者在使用 @klweb/mock-server 的时候,需要遵循它的一些规范约束,以达到最佳实践。

配置文件说明

@klweb/mock-server 默认关联两个配置文件和一个存储数据目录:.mockrcapp.config.jsmock,默认在项目根目录。当然,@klweb/mock-server 支持开发者通过 .mockrc 进行自定义配置。

1. .mockrc

这是 @klweb/mock-server 的基本配置文件,非必要,但通过 .mockrc 可以更灵活的配置参数。 .mockrc 无须手动添加,它会在通过 npm 安装 @klweb/mock-server 之后自动在当前项目根目录下创建,默认配置参数如下:

{
    "config": "./app.config.js",
    "mock": "./mock",
    "variable": "API_URL",
    "port": 3000,
    "log": false
}

以下是 @klweb/mock-server 的命令行参数说明:

-c,   --config    <filename>   应用配置文件
-m,   --mock      <dirname>    模拟数据目录
-v,   --variable  <name>       业务模块接口URL集合对象变量名
-p,   --port      <number>     模拟服务端口
-l,   --log       <boolean>    是否打印启动日志

上面每个参数分别有全称和缩写两种参数名,全称前缀 -- ,缩写前缀 - ,带前缀的参数只能用于命令行方式传递参数,.mockrc 文件中仅支持不带前缀全称参数名。

命令行方式如何传递参数,如:

mock-serve -p 3001 -l true

# 或

mock-serve --port 3001 --log true

# 这个两个命令执行的结果是等价的

提示:通过命令行方式传参,同时会写入覆盖 .mockrc 文件中的配置,@klweb/mock-server 的配置参数优先级: 程序预设配置 < .mockrc < 命令行传参

2. app.config.js

应用程序配置文件,主要配置应用程序 API 接口地址和其它的全局配置,@klweb/mock-server 需要解析 app.config.js 文件中的接口配置信息自动生成模拟数据,因此 app.config.js 配置文件是应用程序必要的。

.mockrc 配置文件中的 config 指向的就是这个应用程序配置文件,且名称要一致、路径要正确。

// MockServer
const MOCK = 'http://localhost:3000' 

// 配置接口服务地址
const API_ROOT = MOCK

// 业务模块接口URL集合对象
const API_URL = {

	// Test Json
	'mock': API_ROOT + '/test/mock',
	
}

从以上 app.config.js 的配置信息中可以看到几个关键变量名,分别是 MOCKAPI_ROOTAPI_URL

  • MOCK@klweb/mock-server 启动后的服务地址
  • API_ROOT: 配置后端接口服务地址,如:http://192.168.1.80:9000

规范约束: 默认为 API_ROOT,如有多个接口服务地址,可增加一个变量,以 API_ROOT 开头加下横杠 _ ,如: API_ROOT_CUSTOM,遵循格式正则:/API_ROOT(_[A-Z|\d]+)?\s*?\+/g,如声明不规范,可能会导致 @klweb/mock-server 无法正常解析配置文件而导致程序失效。

  • API_URL: 业务模块接口URL集合对象变量名,这个变量名必须与 .mockrc 配置文件中的属性 variable 的值一致。

如何使用 API_URL 声明的接口 URL, 如通过 axios 发起请求:

axios.get(API_URL.mock, {
    	params: {}
    }).then(res => {
    	console.log(res)
    })

3. mock

mock 是存储 @klweb/mock-server 自动保存或其他手动添加的模拟数据 json 文件的目录位置,它也是必要的,.mockrc 配置文件中的 mock 指向的就是这个目录位置。

在项目中使用

在项目 package.json 文件中的 scripts 中添加脚本命令,如:

{
    "scripts": {
        "dev": "vite",
        "dev:mock": "run-p dev mock",
        "mock": "mock-serve"
    }
}

在终端命令行中输入 npm run dev:mock, 并行执行 devmock 脚本, 即启动项目的同时也启动了 @klweb/mock-server,两者在同一个进程中运行,结束进程则两者同时关闭服务。

如果你想单独进程持续化运行 @klweb/mock-server, 可以新建一个终端命令窗口,然后输入命令,如:

npm run mock

也可以通过命令行传递参数,如:

# 指定端口 3002
npm run mock -p 3002

全局使用

如果你通过 npm install @klweb/mock-server -g 全局安装了 @klweb/mock-server,则项目中无须再安装,只需在项目根目录创建 .mockrcapp.config.jsmock

全局安装并不会在你的项目根目录下自动创建 .mockrc,需手动创建并配置参数,如没有创建则默认程序预设配置

终端命令行切换至项目根目录,输入命令:

mock-serve

# 或命令行传递参数
mock-serve --port 3002 --log true

扩展能力

@klweb/mock-server 扩展能力在 KLWeb-App 开发框架中已有最佳实践应用,可参考源码,这里不再赘述。

  • 自动保存 json 数据,写入本地磁盘
  • HTTP Server 集成