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

mockjs-extend

v1.9.0

Published

基于 [mockjs](https://github.com/nuysoft/Mock/wiki) 扩展生成随机数据

Readme

mockjs-extend

基于 mockjs 扩展生成随机数据

npm GitHub

使用

安装

npm install mockjs-extend --save-dev
yarn add mockjs-extend -D
pnpm add mockjs-extend -D

示例:使用扩展的模拟数据

// Mockjs 等同于 mockjs 模块,同时扩展了大量的模拟数据
import { Mockjs } from 'mockjs-extend';

export default {
  'POST xxx/xxx': Mockjs.mock({
    errCode: '0000',
    errMsg: 'mock success',
    'data|2-10': [
      {
        bankCode: '@bankCode', // 银行编码
        bankName: '@bankName', // 银行名称
        cardNo1: '@bankCardNo', // 银行卡号
        cardNo2: '@bankCardNo(true)', // 银行卡号脱敏
        cardNo3: '@bankCardNo(false, true)', // 银行卡号格式化
        bankCardBin: '@bankCardBin', // 银行卡 bin
        swiftCode: '@swiftCode', // SWIFT CODE
        bankBranchCode: '@bankBranchCode', // 分行代码
        cardType: '@cardType', // 银行卡类型
        cardTypeName: '@cardTypeName', // 银行卡类型名称
        globalBankName: '@globalBankName', // 英文国际银行名称
        cglobalBankName: '@cglobalBankName', // 中文国际银行名称

        utc: '@utc', // utc格式日期时间
        nid: '@nid', // 指定长度的随机数字字符串
        sid: '@sid', // 指定长度的随机字符字符串
        mobile: '@mobile', // 手机号码
        tel: '@tel', // 电话号码
        age: '@age', // 年龄
        money: '@money', // 金额
        rate: '@rate', // 费率
        sn: '@sn', // 数字字符串
        country: '@country', // 英文国家名称
        ccountry: '@ccountry', // 中文国家名称
        countryCode: '@countryCode', // 国家三字码
        countryCode2: '@countryCode2', // 国家二字码
        currency: '@currency', // 货币编码
        currencyName: '@currencyName', // 货币名称
        currencySymbol: '@currencySymbol', // 货币符号
        uid: '@uid', // 统一社会信用代码
        company: '@company', // 英文公司名称
        ccompany: '@ccompany', // 中文公司名称
        icp: '@icp', // ICP备案号
        provinceCode: '@provinceCode', // 省份编码
        cityCode: '@cityCode', // 城市编码
        areaCode: '@areaCode' // 区县编码
      }
    ]
  })
};

示例:使用工具类

  • mock/util.ts
import { MockUtilClass } from 'mockjs-extend';

const mockUtil = new MockUtilClass({
  // 模拟请求延迟时间
  delay: 500,
  // 响应数据发送方法
  sendMethod: 'send',
  // 响应基本数据结构
  responseBasic: {
    code: '0000',
    message: 'mock success'
  },
  // 响应分页数据结构
  responsePage(pageData, key = 'data') {
    return {
      pageNum: 1,
      pageSize: 10,
      'total|15-100': 20,
      'pages|2-10': 2,
      [`${key}|10`]: [pageData]
    };
  }
});

export default mockUtil;
  • mock/user.mock.ts
import mockUtil from './utils';

const user = {
  id: '@sid',
  username: '@cname',
  mobile: '@mobile',
  email: '@email'
};

export default {
  'POST /api/user/login': mockUtil.mockData({
    data: {
      user,
      token: '@guid'
    }
  }),
  'POST /api/user/list': mockUtil.mockPageData(user)
};
  • mock/files.mock.ts
import mockUtil from './utils';

export default {
  'POST /api/files/download': mockUtil.mockData((req, res) => {
    res.setHeader('Access-Control-Expose-Headers', '*');
    res.setHeader('Content-Type', 'image/jpeg');
    res.setHeader('Content-Disposition', 'attachment;filename=120x120.jpg');
    res.sendFile('path/to/120x120.jpg');
  })
};

示例:自定义随机生成数据

由于生成数据没有关联性,例如 @bankCode @bankName 等。如果你需要生成的数据有关联性,可以使用下列方法获取随机数据对象。

import {
  getRandomCurrency,
  getRandomCountry,
  getRandomGlobalBank,
  getRandomBankCard
} from 'mockjs-extend';

console.log(getRandomCurrency());
// { code: 'SEK', desc: '瑞典克朗', symbol: 'Kr', flagId: 'se' }

console.log(getRandomCountry());
// { alpha2: 'GB', alpha3: 'GBR', cn: '英国', en: 'United Kingdom' }

console.log(getRandomGlobalBank());
// { cn: '住友信托银行', en: 'Sumitomo Trust & Banking' }

console.log(getRandomBankCard());
// { bankName: '吉林银行', bankCode: 'JLBANK', cardBin: '622178', cardType: 'CC', cardTypeName: '信用卡', len: 16 }

文档

使用 Mockjs.Random.exted 扩展。

银行

Mockjs.Random.bankCode()

银行编码

Mockjs.Random.bankCode(); // => ICBC
Mockjs.Random.bankCode(); // => URB

Mockjs.Random.bankName()

银行名称

Mockjs.Random.bankName(); // => 哈尔滨银行
Mockjs.Random.bankName(); // => 乌海银行

Mockjs.Random.bankCardNo(mask=false, format=false)

银行卡号

  • mask

脱敏。可选。

  • format

格式化。可选。

Mockjs.Random.bankCardNo(); // 5156729973651523
Mockjs.Random.bankCardNo(true); // 515672******1523
Mockjs.Random.bankCardNo(true, true); // 5156 72** **** 1523

Mockjs.Random.bankCardBin()

银行卡 bin

Mockjs.Random.bankCardBin(); // => 526410

Mockjs.Random.swiftCode()

SWIFT CODE

Mockjs.Random.swiftCode(); // => JYSQJSKA

Mockjs.Random.bankBranchCode()

分行代码

Mockjs.Random.bankBranchCode(); // => IYX

Mockjs.Random.cardType()

银行卡类型

Mockjs.Random.cardType(); // => CC

Mockjs.Random.cardTypeName()

银行卡类型名称

Mockjs.Random.cardTypeName(); // => 储蓄卡

Mockjs.Random.globalBankName()

英文国际银行名称

Mockjs.Random.globalBankName(); // => Dresdner Bank

Mockjs.Random.cglobalBankName()

中文国际银行名称

Mockjs.Random.cglobalBankName(); // => 大通曼哈顿银行

其他

Mockjs.Random.utc()

utc格式日期时间

Mockjs.Random.utc(); // => 1990-03-27T22:46:57.409Z
Mockjs.Random.utc(); // => 2002-09-22T09:49:36.91Z

Mockjs.Random.nid(len=8)

指定长度的随机数字字符串

Mockjs.Random.nid(); // => 29573221
Mockjs.Random.nid(5); // => 07174

Mockjs.Random.sid(len=8)

指定长度的随机字符字符串

Mockjs.Random.sid(); // => s8ZHTdHr
Mockjs.Random.sid(5); // => kYOiT

Mockjs.Random.tel()

电话号码

Mockjs.Random.tel(); // => 37316547

Mockjs.Random.mobile()

手机号码

Mockjs.Random.mobile(); // => 14561418878

Mockjs.Random.age(min=0, max=100)

年龄

Mockjs.Random.age(); // => 18

Mockjs.Random.money(precision=2, min=0, max=10000)

金额,默认 2 位小数点

Mockjs.Random.money(); // => 128.41

// 不要小数点
Mockjs.Random.money(0); // => 326

// 自定义最大最小值
Mockjs.Random.money(2, 100, 1000); // => 843

Mockjs.Random.rate(precision=2, min=0, max=1)

费率,默认 2 位小数点

Mockjs.Random.rate(); // => 0.41

// 4位小数点
Mockjs.Random.rate(4); // => 0.1326

// 自定义最大最小值
Mockjs.Random.rate(2, 0, 5); // => 1.83

Mockjs.Random.sn(precision=2, min=0, max=1)

数字字符串,默认 2 位小数点

Mockjs.Random.sn(); // => "0.41"

// 4位小数点
Mockjs.Random.sn(4); // => "0.1326"

// 自定义最大最小值
Mockjs.Random.sn(2, 0, 5); // => "1.83"

Mockjs.Random.country()

英文国家名称

Mockjs.Random.country(); // => Turkey

Mockjs.Random.ccountry()

中文国家名称

Mockjs.Random.ccountry(); // => 土耳其

Mockjs.Random.countryCode()

国家三字码

Mockjs.Random.countryCode(); // => TUR

Mockjs.Random.countryCode2()

国家二字码

Mockjs.Random.countryCode(2); // => TR

Mockjs.Random.currency()

货币编码

Mockjs.Random.currency(); // => NZD

Mockjs.Random.currencyName()

货币名称

Mockjs.Random.currencyName(); // => 柬埔寨瑞尔

Mockjs.Random.currencySymbol()

货币符号

Mockjs.Random.currencySymbol(); // => ៛

Mockjs.Random.uid()

⚠️非真实信息,仅供测试使用,请勿用于非法用途。

统一社会信用代码

Mockjs.Random.uid(); // => 35210703CDMKJ424LA

Mockjs.Random.company()

⚠️非真实信息,仅供测试使用,请勿用于非法用途。

英文公司名称

Mockjs.Random.company(); // => Bxdmj Peurpx Aumozuufp Jpgmyky Gavxpt Wfds Co.,Ltd.

Mockjs.Random.ccompany()

⚠️非真实信息,仅供测试使用,请勿用于非法用途。

中文公司名称

Mockjs.Random.ccompany(); // => 云南省世把书质派保有限公司

Mockjs.Random.icp()

⚠️非真实信息,仅供测试使用,请勿用于非法用途。

ICP备案号

Mockjs.Random.icp(); // => 陕ICP备69861741号

Mockjs.Random.provinceCode()

省份编码

Mockjs.Random.provinceCode(); // => 350000

Mockjs.Random.cityCode()

城市编码

Mockjs.Random.cityCode(); // => 350500

Mockjs.Random.areaCode()

区县编码

Mockjs.Random.areaCode(); // => 350502

常见问题

数据同时存在 id@id 时,@id 不生效

// before
Mockjs.mock({
  'list|1-10': [
    {
      'id|+1': 1,
      name: '@cname',
      idNumber: '@id' // 值跟 `id` 一样
    }
  ]
});

// after
// 使用 `Mockjs.Random.id()` 来生成身份证号
Mockjs.mock({
  'list|1-10': [
    {
      'id|+1': 1,
      name: '@cname',
      idNumber: Mockjs.Random.id()
    }
  ]
});