npm.io
1.0.22 • Published 2d ago

robinson

Licence
ISC
Version
1.0.22
Deps
2
Size
511 kB
Vulns
0
Weekly
0

robinson

a simple web utils building power by edar-cli (skd) Robinson

一个简单的 Web 工具集,采用了现代化的开发工具和流程,包括 TypeScript、ESLint、Jest、Rollup 和 VitePress 等。通过合理的目录结构和配置文件,实现了代码的模块化、测试、文档生成和打包等功能。

downloda https://www.npmjs.com/package/edar-cli
github https://github.com/An-Lijun/Edar-cli

Installation

  $ npm i robinson
  import {xxx} from 'robinson'

docs

https://an-lijun.github.io/Robinson/

贡献指南

欢迎贡献!请查看 贡献指南 了解如何参与项目开发。

开发者文档

开发者请参考 开发者文档 获取详细的技术指导和最佳实践。

性能测试

项目提供完整的性能测试和报告功能,帮助开发者了解函数性能表现并进行优化。

运行性能测试
# 运行性能测试
npm run test:performance

# 生成性能报告
npm run doc:performanceReport
性能测试内容

性能测试覆盖以下方面:

  • 数组操作性能isArraygetRelArraygetChunkArray 等函数
  • DOM 操作性能hasClassgetNodegetNodes 等函数
  • 函数式编程性能composepipedebouncethrottle 等函数
  • 对象操作性能isObjectLikedeepClone 等函数
  • 边界情况测试:空数组、单元素数组、大数组等特殊情况
  • 内存使用测试:大对象处理、内存泄漏检测
性能报告

性能测试完成后,会生成详细的 Markdown 报告,包含:

  • 测试摘要(总测试数、通过率、平均执行时间)
  • 详细测试结果(每个函数的执行时间和性能评级)
  • 性能优化建议(针对性能瓶颈的具体建议)
  • 性能趋势分析(历史版本性能对比)

报告位置:vitepress/etc/performance-report.md

性能评级标准
  • 优秀:执行时间 < 100ms
  • 良好:执行时间 100-500ms
  • 一般:执行时间 500-1000ms
  • 需要优化:执行时间 > 1000ms
自定义性能测试

你可以创建自己的性能测试文件:

const { PerformanceTester } = require('../script/performanceTester');
const { yourFunction } = require('../dist/esm/index.js');

const tester = new PerformanceTester();

// 测试你的函数
tester.testFunction(
  'yourFunction - 性能测试',
  () => yourFunction(testData),
  1000,
  '测试你的函数性能'
);

// 生成报告
tester.printSummary();
tester.saveResults('./custom-performance-results.json');

更多详细信息请参考 性能测试使用指南

Robinson 项目架构文档

1. 项目概述

Robinson 是一个简单的 Web 工具集,由 edar-cli 构建而成。该项目主要提供一些 Web 开发相关的实用功能,目前仅供内部使用。

2. 项目目录结构

Robinson/
├── .eslintignore
├── .eslintrc.js
├── .gitignore
├── README.md
├── api-extractor.json
├── babel.config.js
├── jest.config.ts
├── package.json
├── pnpm-lock.yaml
├── rollup.config.js
├── tsconfig.json
├── tsdoc-metadata.json
├── plugin/
│   └── index.js
├── vitepress/
│   ├── .vitepress/
│   ├── assets/
│   ├── docsDist/
│   ├── etc/
│   │   ├── docs/
│   │   │   ├── advance.md
│   │   │   └── quick.md
│   │   └── index.md
│   └── temp/
├── .husky/
│   └── pre-commit
├── .vscode/
│   └── settings.json
├── script/
│   ├── docBuild.js
│   ├── genDoc.js
│   ├── publish.js
│   ├── publish2.js
│   ├── performanceReport.js
│   ├── performanceTester.js
│   └── utils.js
├── src/
│   ├── index.ts
│   └── utils/
└── test/
    └── ...
2.1 根目录文件说明
  • .eslintignore:指定 ESLint 忽略检查的文件和目录。
  • .eslintrc.js:ESLint 的配置文件,用于定义代码检查规则。
  • .gitignore:Git 忽略文件,指定不需要被版本控制的文件和目录。
  • README.md:项目的说明文档,包含项目的基本信息、安装方法、文档链接等。
  • api-extractor.json:API 提取工具的配置文件,用于提取项目中的 API 信息。
  • babel.config.js:Babel 的配置文件,用于进行 JavaScript 代码的转换。
  • jest.config.ts:Jest 测试框架的配置文件,用于配置测试相关的选项。
  • package.json:项目的元数据文件,包含项目的依赖、脚本命令等信息。
  • pnpm-lock.yaml:pnpm 包管理器的锁定文件,记录项目依赖的具体版本信息。
  • rollup.config.js:Rollup 的配置文件,用于进行模块打包。
  • tsconfig.json:TypeScript 的配置文件,用于定义 TypeScript 编译器的选项。
  • tsdoc-metadata.json:TypeScript 文档元数据文件,包含 TypeScript 代码的文档信息。
2.2 文件夹说明
  • plugin/ :插件相关的代码目录,目前只有一个 index.js 文件。

  • vitepress/ :用于构建项目文档的 VitePress 相关目录。

    • .vitepress/ :VitePress 的配置目录。
    • assets/ :文档相关的静态资源目录。
    • docsDist/ :文档构建后的输出目录。
    • etc/ :文档源文件目录,包含 advance.mdquick.md 等文档文件。
    • temp/ :临时文件目录。
  • .husky/ :Git Hooks 配置目录,包含 pre-commit 钩子文件。

  • .vscode/ :VSCode 相关的配置目录,包含 settings.json 文件。

  • script/ :项目脚本目录,包含文档构建、发布等相关脚本文件。

  • src/ :项目的源代码目录,包含 index.tsutils/ 目录。

  • test/ :项目的测试代码目录。

脚本

 {
    "doc": "api-extractor run --config ./config/api-extractor.json  --local --verbose ",// 不推荐使用 生成函数json
    "doc:trace": "api-extractor run --config ./config/api-extractor.json  --local --verbose --traceResolution",//不推荐使用 生成函数md文件
    "doc:debug": "api-extractor run --local --verbose --diagnostics && api-documenter markdown -i temp -o vitepress/etc/doc", // 不推荐使用 调试使用
    "trace": "tsc dist/types/index.d.ts --traceResolution > trace.log", // 不推荐使用 调试使用
    "buildViteDocs": "vitepress build vitepress", // 不推荐使用 打包vitepress 应该使用docs:build命令
    "oldupdatelog": "node ./script/updatelog.js", //不推荐使用 生成更新日志md命令 应该使用 updatelog
    "pub": "node ./script/publish.js", //不推荐使用 旧版本构建发布函数命令
    
    "prepare": "husky install", // git commit钩子
    "test": "jest", //测试命令
    "lint": "eslint --fix --ext .js,.vue src",//Eslint格式化命令
    "commit": "cz", // 提交命令

    "build": "npx rollup -c", //打包函数命令
    "doc:all": "gulp --gulpfile script/genDoc.js", // 生成全部md文档
    "docs:dev": "vitepress dev vitepress", // 开发vitepressDosc使用
    "docs:build": "node ./script/docBuild.js", // 打包vitepress
    "docs:preview": "vitepress preview", // 预览vitepressDosc使用
            
    "publishRobinson": "node ./script/publish.js",   //构建发布函数命令

    "genEtc": "api-documenter markdown -i vitepress/temp -o vitepress/etc/doc", //生成函数md文件
    "genUpdatelog": "gulp  --gulpfile script/getUpdateLog.js", //生成更新日志md命令
    "genReport" :"gulp  --gulpfile script/report.js", //生成测试报告
    "test:performance": "node test/performance.test.js", // 运行性能测试
    "doc:performanceReport": "gulp --gulpfile script/performanceReport.js" // 生成性能报告
 }

生成文档

项目提供了文档生成的功能,通过以下命令可以生成文档:

npm run doc:all
npm run docs:build

测试

项目使用 Jest 作为测试框架,通过以下命令可以运行测试:

npm run test 
3.3 TsType 注释规范

项目中使用了一些自定义的 TsType 注解,包括 @bata@description@param@returns@example,用于对函数进行描述和注释。

项目代码中使用了特定的注释规范,用于描述函数的相关信息,如:

`@bata`:表示是否为正式版。
`@description`:函数描述。
`@param`:参数说明。
`@returns`:返回值说明。
`@example`:使用示例。

4. 依赖管理

项目使用 pnpm 作为包管理器,pnpm-lock.yaml 文件记录了项目依赖的具体版本信息。主要的依赖包括:

  • 开发依赖:ESLint、Babel、Jest、Rollup 等。
  • 运行时依赖:一些 Web 开发相关的工具库。

5. 构建与打包

项目使用 Rollup 进行模块打包,通过 rollup.config.js 进行配置。在 package.json 中可以定义打包脚本,例如:

{
  "scripts": {
    "build": "rollup --config"
  }
}

6. 文档编写与展示

项目使用 VitePress 进行文档编写和展示,文档源文件位于 vitepress/etc/docs/src/ 目录下,包括 advance.mdquick.md 等文件。通过 VitePress 可以将这些 Markdown 文件构建成静态网站。

短期优化(1-2周)
  1. 完善 renderTmp 函数 :支持更复杂的模板语法
  2. 增加更多类型定义 :减少 any 类型的使用
  3. 优化文档注释 :统一格式和风格
中期优化(1-2个月)
  1. 增加高级功能 :深度比较、数据验证等
  2. 性能监控 :添加性能测试和基准测试
  3. 错误处理 :统一错误处理机制
长期优化(3-6个月)
  1. 功能扩展 :添加网络请求、状态管理等高级功能
  2. 生态建设 :提供更多插件和扩展
  3. 社区建设 :增加贡献指南和开发者文档

总结

结合Ai

// 方法 1:直接读取 JSON 文件 const manifest = require('robinson/dist/ai/manifest.json');

// 方法 2:使用动态导入(ESM) import manifest from 'robinson/dist/ai/manifest.json';

const { OpenAI } = require('openai'); const tools = require('robinson/dist/ai/openai-tools.json');

const openai = new OpenAI({ apiKey: 'your-api-key' });

async function runWithAI(userQuery) { const response = await openai.chat.completions.create({ model: 'gpt-4', messages: [{ role: 'user', content: userQuery }], tools: tools, tool_choice: 'auto' });

// 处理 AI 响应和工具调用 }

Keywords