Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

README.md

@forward-widget/libs

NPM Version NPM License

Forward Widget 开发工具库

🚀 简介

@forward-widget/libs 是一个专为 Forward Widget 开发者设计的工具库,提供了完整的类型定义和测试工具,帮助开发者更高效地构建和测试 Widget 应用。

📦 安装

npm install @forward-widget/libs
#
yarn add @forward-widget/libs
#
pnpm add @forward-widget/libs

🛠️ 使用方法

环境类型定义

TypeScript 项目

在你的项目中创建一个 .d.ts 文件,引入类型定义:

// forward-widget-env.d.ts
/// <reference types="@forward-widget/libs/env" />

这样你就可以在 TypeScript 代码中获得完整的类型支持:

// 现在可以使用 Widget 相关的类型和全局变量
WidgetMetadata = {
  name: "My Widget",
  version: "1.0.0",
  // ... 其他配置
};

async function loadDetail(url: string) {
  const resp = await Widget.http.get('https://api.example.com/data')

  const result: VideoItem = {
    // ...
  }
  // ...
  return result
}

JavaScript 项目

对于 JavaScript 项目,你可以使用 JSDoc 来获得类型提示:

/**
 * @type {import('@forward-widget/libs/env')}
 */


WidgetMetadata = {
  name: "My Widget",
  version: "1.0.0",
  // ... 其他配置
};

async function loadDetail(url) {
  const resp = await Widget.http.get('https://api.example.com/data')
  /**
   * @type {import('@forward-widget/libs/env').VideoItem}
   */
  const result = {
    // ...
  }
  // ...
  return result
}

单元测试

@forward-widget/libs 提供了 WidgetAdaptor 来模拟 Widget 运行环境,方便进行单元测试。

Rstest 为例:

import { expect, test, beforeAll } from "@rstest/core";

beforeAll(async () => {
  const { WidgetAdaptor } = await import("@forward-widget/libs/widget-adaptor");
  rstest.stubGlobal("Widget", WidgetAdaptor);
});

test("测试 HTTP 请求", async () => {
  const response = await Widget.http.get("https://api.example.com/data");
  expect(response).toBeDefined();
  expect(response.status).toBe(200);
});

TMDB

如果需要使用到 Widget.tmdb 下的方法,需要环境变量中配置 TMDB_API_KEY

# .env
TMDB_API_KEY=xxxx
// rstest.config.ts

import { defineConfig } from "@rstest/core";

export default defineConfig({
  testEnvironment: "node",
  pool: {
    type: "forks",
    execArgv: ["--env-file=.env"], // 通过指定 env-file 加载环境变量
  },
});

🤝 贡献

欢迎提交 Issue 和 Pull Request 来改善这个项目。

📄 许可证

MIT License