# @appbaseio/analytics 中文文档

规范地址：https://npmcn.com/package/%40appbaseio/analytics/

版本：1\.2\.0
npm 元数据更新时间：2023-05-16T06:25:54.451Z
中文译文更新时间：2026-11-06T11:19:09.365Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40appbaseio/analytics
原文对照：https://npmcn.com/package/%40appbaseio/analytics/?lang=original
项目主页：https://github.com/appbaseio/analytics#readme
源码仓库：https://github.com/appbaseio/analytics

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：199 kB，12 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：未声明
- 运行依赖：1 个
- 首次发布：2019-10-25T14:58:27.636Z
- 最新版本发布：2023-05-16T06:25:54.299Z
- 近 30 天下载量：6721（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：14（近 12 个月 0 个）

## 中文简介

Appbase.io apps 通用分析库

## 安装

```sh
npm install @appbaseio/analytics
```

也可以使用：`pnpm add @appbaseio/analytics`、`yarn add @appbaseio/analytics`、`bun add @appbaseio/analytics`

## README

[![NPM Version](https://img.shields.io/npm/v/@appbaseio/analytics.svg?style=flat)](https://www.npmjs.com/package/@appbaseio/analytics)

### Appbase 分析

一个通用分析库,允许您为 appbase.io 记录搜索、点击和转换 **分组**。 。 。 .

## 技选

-   [开始](https://npmcn.com/package/%40appbaseio/analytics/#readme-getting-started)
    -   [浏览器](https://npmcn.com/package/%40appbaseio/analytics/#readme-browser)
    -   [节点.js](https://npmcn.com/package/%40appbaseio/analytics/#readme-nodejs)
-   [使用大小写](https://npmcn.com/package/%40appbaseio/analytics/#readme-use-cases)
    -   [记录搜索](https://npmcn.com/package/%40appbaseio/analytics/#readme-record-search)
        -   [记录空查询搜索](https://npmcn.com/package/%40appbaseio/analytics/#readme-record-empty-query-search)
    -   [记录点击](https://npmcn.com/package/%40appbaseio/analytics/#readme-record-clicks)
        -   [记录建议点击](https://npmcn.com/package/%40appbaseio/analytics/#readme-record-suggestion-clicks)
        -   [特定搜索事件的记录点击](https://npmcn.com/package/%40appbaseio/analytics/#readme-record-clicks-for-a-particular-search-event)
        -   [记录特定事件的点击](https://npmcn.com/package/%40appbaseio/analytics/#readme-record-clicks-with-particular-events)
    -   [记录转换](https://npmcn.com/package/%40appbaseio/analytics/#readme-record-conversions)
    -   [保存搜索](https://npmcn.com/package/%40appbaseio/analytics/#readme-save-search)
    -   [获取已保存的搜索](https://npmcn.com/package/%40appbaseio/analytics/#readme-get-saved-searches)
    -   [最喜欢](https://npmcn.com/package/%40appbaseio/analytics/#readme-favorite)
    -   [获取爱好](https://npmcn.com/package/%40appbaseio/analytics/#readme-get-favorites)
    -   [设定用户](https://npmcn.com/package/%40appbaseio/analytics/#readme-set-user)
    -   [设定全球事件](https://npmcn.com/package/%40appbaseio/analytics/#readme-set-global-events)
-   [API 参考](https://npmcn.com/package/%40appbaseio/analytics/#readme-api-reference)
-   [捐款](https://npmcn.com/package/%40appbaseio/analytics/#readme-contributing)
-   [您可能喜欢的其他项目](https://npmcn.com/package/%40appbaseio/analytics/#readme-other-projects-you-might-like)
-   [许可证](https://npmcn.com/package/%40appbaseio/analytics/#readme-license)

## 开始

### 浏览器

#### 1\. 装入库

分析库可以通过 [jsDelivr CDN 请检查url=值 (帮助)](https://www.jsdelivr.com/) 或者直接与您的申请捆绑在一起.

您可以在浏览器中使用 UMD 构建, 具体如下:

```html
<script defer src="https://cdn.jsdelivr.net/npm/@appbaseio/analytics@2.0.0-beta.2/dist/@appbaseio/analytics.umd.min.js"
></script>
```

#### 2\. 初始化

```js
const aaInstance = aa.init({
  index: 'INDEX_NAME',
  credentials: 'AUTH_CREDENTIALS',
  url: 'CLUSTER_URL'
});
```

### 节点.js

#### 1\. 安装图书馆

按以下命令安装库:

```bash
npm install @appbaseio/analytics
# or
yarn add @appbaseio/analytics
```

#### 2\. 初始化

```js
const aa = require('@appbaseio/analytics');

const aaInstance = aa.init({
  index: 'INDEX_NAME',
  credentials: 'AUTH_CREDENTIALS',
  url: 'CLUSTER_URL'
});
```

[回到顶部](https://npmcn.com/package/%40appbaseio/analytics/#readme-appbase-analytics)

## 使用大小写

分析库提供了集成应用库的实用方法. io分析分分钟,常见的用例是记录搜索,点击和转换事件.

### 记录搜索

它帮助您跟踪搜索特定查询术语。 它还原 `queryID` 返回,用于记录同一搜索事件的点击和转换.

```js
const aa = require('@appbaseio/analytics');

const aaInstance = aa.init({
  index: 'INDEX_NAME',
  credentials: 'AUTH_CREDENTIALS',
  url: 'CLUSTER_URL'
});

aaInstance.search({
  query: 'iphone'
});
```

**说明:** `queryID` 将自动设置在状态中,并可通过使用 `getQueryID` 方法,一旦搜索事件成功注册.

#### 记录空查询搜索

`query` 是记录搜索事件所需的密钥,但您可以将其设置为空字符串以注册为空查询搜索.

```js
aaInstance.search({
  query: ''
});
```

### 记录点击

使用 `click` 用于记录单击事件的方法。 以下示例记录了该条目的两下 `result` 键入搜索查询.

```ts
const aa = require('@appbaseio/analytics');

const aaInstance = aa.init({
  index: 'INDEX_NAME',
  credentials: 'AUTH_CREDENTIALS',
  url: 'CLUSTER_URL'
});

aaInstance.click({
  query: 'iphone',
  objects: {
    iphoneX_19348: 1,
    iphone7_19348: 3
  },
  meta: {
    key1: 'value1'
  }
});
```

#### 记录建议点击

设定 `isSuggestionClick` 属性改为 `true` 以建议点击方式记录.

```ts
aaInstance.click({
  query: 'iphone',
  isSuggestionClick: true,
  objects: {
    iphoneX_19348: 1,
    iphone7_19348: 3
  }
});
```

#### 特定搜索事件的记录点击

使用 `queryID` 改为 `query` 以记录特定搜索事件的点击.

```ts
// Record a search
aaInstance.search({
  query: 'iphone'
});

// Record a click for the last search made
aaInstance.click({
  queryID: aaInstance.getQueryID(),
  objects: {
    iphoneX_19348: 1,
    iphone7_19348: 3
  }
});
```

#### 记录特定事件的点击

附加自定义事件以区分点击事件.

```ts
aaInstance.click({
  query: 'iphone',
  objects: {
    iphoneX_19348: 1,
    iphone7_19348: 3
  },
  customEvents: {
    click_source: 'promoted_collections'
  }
});
```

### 记录转换

转换必须记录特定搜索事件,以便它定义一个 `queryID` 用于记录转换.

```ts
// Record a search
aaInstance.search({
  query: 'iphone'
});

// Record a conversion for the last search made
aaInstance.conversion({
  queryID: aaInstance.getQueryID(),
  objects: ['iphoneX_19348', 'iphone7_19348'],
  meta: {
    key1: value1
  }
});
```

### 保存搜索

为了保存搜索状态, `queryID` 必须在场.

```ts
// Save search state
aaInstance.saveSearch({
  queryID: 'cf600405-d4ed-42b0-8b09-08b594fa88d2',
  saveSearchID: 'analytics-js-test',
  saveSearchMeta: {
    key1: 'value1'
  },
  userID: 'john@appbase.io',
  customEvents: { platform: 'mac' }
});
```

### 删除已保存的搜索

要删除 Id 保存的搜索状态 .

```ts
// Save search state
aaInstance.deleteSavedSearch('analytics-js-test');
```

### 获取已保存的搜索

要获取已保存的搜索, 我们在此获取已保存的搜索, 用户代号为 `john@appbase.io`。 。 。 .

```ts
aa.getSavedSearches(
  {
    user_id: 'john@appbase.io'
  },
  (err, res) => {
    if (err) {
      console.error(err);
    } else {
      res
        .json()
        .then(savedSearches => {
          // saved searches list
        })
        .catch(err => {
          console.error(err);
        });
    }
  }
);
```

### 最喜欢

记录一个最喜欢的文档

```ts
aa.favorite({
  favoriteOn: '1jftXXEBdEU4aeo6Gdqs',
  queryID: 'cf600405-d4ed-42b0-8b09-08b594fa88d2',
  source: {
    authors: 'John Milton, John Leonard',
    average_rating: 3.8,
    average_rating_rounded: 4,
    books_count: 819,
    id: 984,
    image: 'https://images.gr-assets.com/books/1455618673l/15997.jpg',
    image_medium: 'https://images.gr-assets.com/books/1455618673m/15997.jpg',
    isbn: '140424393',
    language_code: 'eng',
    original_publication_year: 1667,
    original_series: '',
    original_title: 'Paradise Lost',
    ratings_count: 96316,
    title: 'Paradise Lost'
  },
  id: 'analytics-js-test',
  userID: 'john@appbase.io',
  customEvents: { platform: 'mac' },
  meta: {
    key1: 'value1'
  }
});
```

### 获取爱好

为了检索最喜爱的文档,我们在此为用户获取最喜爱的文档,用户代号为: `john@appbase.io`。 。 。 .

```ts
aa.getFavorites(
  {
    user_id: 'john@appbase.io'
  },
  (err, res) => {
    if (err) {
      console.error(err);
    } else {
      res
        .json()
        .then(favorites => {
          // list of favorite document
        })
        .catch(err => {
          console.error(err);
        });
    }
  }
);
```

### 设定用户

它允许你设置 `userID`。 。 。 .

```ts
const aa = require('@appbaseio/analytics');

// Set during initialization
const aaInstance = aa.init({
  index: 'INDEX_NAME',
  credentials: 'AUTH_CREDENTIALS',
  url: 'CLUSTER_URL',
  userID: 'jon@abc.com'
});

// or set by using method
aaInstance.setUserID('jon@abc.com');
```

### 设定全球事件

设置实例记录的每个事件的自定义事件 .

例如:

```ts
const aa = require('@appbaseio/analytics');

const aaInstance = aa.init({
  index: 'INDEX_NAME',
  credentials: 'AUTH_CREDENTIALS',
  url: 'CLUSTER_URL'
});

// or set by using method
aaInstance.setGlobalCustomEvents({
  platform: 'ios'
});
```

[回到顶部](https://npmcn.com/package/%40appbaseio/analytics/#readme-appbase-analytics)

## API 参考

### 初始化

```js
const aa = require('@appbaseio/analytics');

const aaInstance = aa.init({
  index: 'INDEX_NAME',
  credentials: 'AUTH_CREDENTIALS',
  url: 'CLUSTER_URL',
  userID: 'USER_ID',
  globalCustomEvents: 'GLOBAL_CUSTOM_EVENTS'
  headers?: 'CUSTOM_HEADERS'
});
```

可选配置选项 :

| 选项 | 类型 | 说明 |
| --- | --- | --- |
| **`index`** | `string` (必须) | 弹性搜索索引名. |
| **`credentials`** | `string` (必须) | 证书载于Appbaseio仪表板。 它应该是格式的一串 **用户名: 密码字** 用于认证应用程序. |
| **`url`** | `string` (必须) | Appbaseio 集群 URL . |
| `userID` | `string` | 用户ID允许您为特定用户记录事件. 例如,您可能想知道有多少不同的用户正在使用搜索. |
| `globalCustomEvents` | `Object` | 它允许你设置 **全球** 自定义事件可用于在 appbase.io 分析器上建起自己的分析器. [更多信息](https://docs.appbase.io/docs/analytics/Implement/#how-to-implement-custom-events) |
| `headers` | `Object` | 有时它可能需要为分析API设置额外的信头. 例如,您正在使用代理的中间软件,它增加了一个额外的安全层. |

所有可能选项的示例:

```ts
const aa = require('@appbaseio/analytics');

const aaInstance = aa.init({
  index: 'books',
  credentials: 'foo:bar',
  url: 'http://localhost:8000',
  userID: 'jon@abc.com',
  globalCustomEvents: {
    platform: 'mac'
  },
  headers: {
    'X-auth-token': 'XYZ'
  }
});
```

### 实例方法

#### 记录搜索

```ts

search(searchConfig: Object, callback: Function)

```

搜索配置选项 :

| 选项 | 类型 | 说明 |
| --- | --- | --- |
| **`query`** | `string` | 搜索查询,设置为空字符串以注册为空查询搜索. |
| **`queryID`** | `string` | 从 Appbase 返回搜索查询ID . |
| `customEvents` | `Object` | 设置自定义事件, 例如 `{ "platform": mac }` |
| `filters` | `Object` | 它允许在搜索查询中记录应用的方面, 例如 `{ "year": 2018 }` |
| `hits` | `Array` | 为了设定搜索命中点,一个命中对象可以拥有 `id`, (中文(简体) ), `type` 打开 `source` 属性 . |
| `impressions` | `Array` | 要设定印象,一个被击中的物体可以拥有 `id` 打开 `index` 属性. |

**说明:**

`query` 或者说 `queryID` 必须在场.

所有可能选项的示例:

```ts
search(
  {
    query: 'iphone',
    // or
    queryID: 'cf827a07-60a6-43ef-ab93-e1f8e1e3e1a8',
    customEvents: {
      source: 'promoted_results'
    },
    filters: {
      year: 2019
    },
    hits: [
      {
        id: '12345678',
        source: {
          title: 'iphoneX'
        },
        type: '_doc'
      }
    ]
  },
  (err, res) => {
    if (err) {
      // handle error
    } else if (res) {
      // handle response
    }
  }
);
```

#### 获取查询ID

以下方法返回 `queryID` 从上次搜索.

```ts
getQueryID(): string
```

#### 点击

要记录点击事件

```ts
click(clickConfig: Object, callback: Function)
```

单击配置选项 :

| 选项 | 类型 | 说明 |
| --- | --- | --- |
| **`query`** | `string` | 搜索查询,设置为空字符串以注册为空查询搜索. |
| **`queryID`** | `string` | 从 Appbase 返回搜索查询ID . |
| **`objects`** | `{[key: string]: number}` (必须) | 设定点击对象 ID , 然后点击位置, 例如 `{ "iphoneX_1234": 2 }`。 。 。 . |
| `isSuggestionClick` | `boolean` | 设定为 `true` 登记为建议. |
| `customEvents` | `Object` | 设置自定义事件, 例如 `{ "platform": mac }` |
| **`meta`** | `Object` | 元数据 |

**说明:**

`query` 或者说 `queryID` 必须在场.

所有可能选项的示例:

```ts
click(
  {
    query: 'iphone',
    // or
    queryID: 'cf827a07-60a6-43ef-ab93-e1f8e1e3e1a8',
    customEvents: {
      source: 'promoted_results'
    },
    objects: {
      iphone_1234: 2
    },
    isSuggestionClick: true,
    meta: {
      key1: value1
    }
  },
  (err, res) => {
    if (err) {
      // handle error
    } else if (res) {
      // handle response
    }
  }
);
```

#### 记录转换

记录转换事件

```ts
conversion(conversionConfig: Object, callback: Function)
```

转换配置选项 :

| 选项 | 类型 | 说明 |
| --- | --- | --- |
| **`queryID`** | `string` (必须) | 从 Appbase 返回搜索查询ID . |
| **`objects`** | `Array<string>` (必须) | 要设置已转换对象标识符, 例如 : `["iphoneX_1234"]`。 。 。 . |
| **`meta`** | `Object` | 元数据 |

**说明:**

`queryID` 必须在场.

所有可能选项的示例:

```ts
conversion(
  {
    queryID: 'cf827a07-60a6-43ef-ab93-e1f8e1e3e1a8',
    objects: ['iphone_1234'],
    meta: {
      key1: value1
    }
  },
  (err, res) => {
    if (err) {
      // handle error
    } else if (res) {
      // handle response
    }
  }
);
```

#### 保存搜索

要保存搜索状态

```ts
saveSearch(config: Object, callback: Function)
```

配置选项 :

| 选项 | 类型 | 说明 |
| --- | --- | --- |
| **`queryID`** | `string` (必须) | 从 Appbase 返回搜索查询ID . |
| **`saveSearchID`** | `string` | 已保存搜索身份 . |
| **`saveSearchMeta`** | `Object` | 元数据 |
| **`userID`** | `string` | 用户编号. |
| `customEvents` | `Object` | 设置自定义事件, 例如 `{ "platform": mac }` |

**说明:**

`queryID` 必须在场.

所有可能选项的示例:

```ts
saveSearch(
  {
    queryID: 'cf600405-d4ed-42b0-8b09-08b594fa88d2',
    saveSearchID: 'analytics-js-test',
    saveSearchMeta: {
      key1: 'value1'
    },
    userID: 'john@appbase.io',
    customEvents: { platform: 'mac' }
  },
  (err, res) => {
    if (err) {
      // handle error
    } else if (res) {
      // handle response
    }
  }
);
```

#### 删除已保存的搜索

由 ID 删除搜索状态

```ts
deleteSavedSearch(savedSearchId: string, callback: Function)
```

所有可能选项的示例:

```ts
deleteSavedSearch('analytics-js-test', (err, res) => {
  if (err) {
    // handle error
  } else if (res) {
    // handle response
  }
});
```

#### 获取保存的搜索

检索已保存的搜索

```ts
getSavedSearches(queryParams: Object, callback: Function)
```

您可以在 [这里](https://api.reactivesearch.io/#3cbe91d1-64b9-4e2e-a929-0ee7e6a1acfc)。 。 。 .

```ts
getSavedSearches(
  {
    user_id: 'john@appbase.io'
  },
  (err, res) => {
    if (err) {
      // handle error
    } else if (res) {
      res
        .json()
        .then(favorites => {
          // list of saved searches
        })
        .catch(err => {});
      // handle response
    }
  }
);
```

#### 最喜欢

记录一个最喜欢的文档

```ts
favorite(config: Object, callback: Function)
```

配置选项 :

| 选项 | 类型 | 说明 |
| --- | --- | --- |
| **`queryID`** | `string` (必须) | 从 Appbase 返回搜索查询ID . |
| **`favoriteOn`** | `string` (必须) | 最爱文档ID. |
| **`source`** | `Object` (必须) | 最爱文档源对象数据 |
| **`id`** | `string` | 最喜欢的ID. |
| **`meta`** | `Object` | 元数据 |
| **`userID`** | `string` | 用户编号. |
| `customEvents` | `Object` | 设置自定义事件, 例如 `{ "platform": mac }` |

**说明:**

`queryID`, (中文(简体) ), `favoriteOn` 财务报告和审定财务报表 `source` 必须在场.

所有可能选项的示例:

```ts
favorite(
  {
    favoriteOn: '1jftXXEBdEU4aeo6Gdqs',
    queryID: 'cf600405-d4ed-42b0-8b09-08b594fa88d2',
    source: {
      authors: 'John Milton, John Leonard',
      average_rating: 3.8,
      average_rating_rounded: 4,
      books_count: 819,
      id: 984,
      image: 'https://images.gr-assets.com/books/1455618673l/15997.jpg',
      image_medium: 'https://images.gr-assets.com/books/1455618673m/15997.jpg',
      isbn: '140424393',
      language_code: 'eng',
      original_publication_year: 1667,
      original_series: '',
      original_title: 'Paradise Lost',
      ratings_count: 96316,
      title: 'Paradise Lost'
    },
    id: 'analytics-js-test',
    userID: 'john@appbase.io',
    customEvents: { platform: 'mac' },
    meta: {
      key1: 'value1'
    }
  },
  (err, res) => {
    if (err) {
      // handle error
    } else if (res) {
      // handle response
    }
  }
);
```

#### 获得最爱

获取保存的最爱

```ts
getFavorites(queryParams: Object, callback: Function)
```

您可以在 [这里](https://api.reactivesearch.io/#11eda024-6b87-4921-8ed1-916483239087)。 。 。 .

```ts
getFavorites(
  {
    user_id: 'john@appbase.io'
  },
  (err, res) => {
    if (err) {
      // handle error
    } else if (res) {
      res
        .json()
        .then(favorites => {
          // list of favorites
        })
        .catch(err => {});
      // handle response
    }
  }
);
```

#### 设置信头

它允许您在分析端点设置自定义标题 .

```ts
setHeaders(headers: Object)
```

#### 设定用户

设置用户ID。 用户身份帮助记录该特定用户的事件.

```ts
setUserID(userID: string)
```

#### 设定全球事件

设置全局事件数据。 这将补充到法院提出的所有分析请求中.

```ts
setGlobalCustomEvents(globalEvents: Object)
```

[回到顶部](https://npmcn.com/package/%40appbaseio/analytics/#readme-appbase-analytics)

## 捐款

叉出还原并运行以下命令以本地运行测试( T) .

```bash
yarn && yarn test
```

## 您可能喜欢的其他项目

-   [**弧形**](https://github.com/appbaseio/arc) API ElasticSearch 的网关(出箱安全,速率限制功能,记录分析与请求日志).
    
-   [**反应搜索**](https://github.com/appbaseio/reactivesearch) ReactiveSearch是一个用于React,React Introduct和Vue的Elasticsearch UI组件库. 它有25+组件,由Lists, Ranges,Search UI,Result shows组成,并有将任何已存在的UI组件带入库的方法.
    
-   **搜索框** 一个轻量级和注重性能的搜索框UI库,用于查询和显示来自您 ElasticSearch app(aka索引)的结果.
    
    -   [**香草**](https://github.com/appbaseio/searchbox) - (~16kB 已删除 + Gzipped)
    -   [**反应**](https://github.com/appbaseio/react-searchbox) - (~30kB 已忽略 + Gzipped)
    -   [**阴道**](https://github.com/appbaseio/vue-searchbox) - (~22kB 已忽略 + Gzipped)
-   [**德贾武**](https://github.com/appbaseio/dejavu) 允许在 appbase.io (或 Elasticsearch) app 内查看原始数据. **即将发布功能 :** 能够从 CSV 和 JSON 文件导入自定义数据,同时在应用数据映射上进行有指引的行走.
    
-   [**幻影**](https://github.com/appbaseio/mirage) 反应Search组件可以使用自定义的弹性搜索查询来扩展. 对于这些新到"弹性搜索"(Elasticsearch),幻影提供了一种直观的图形界面来编译查询.
    
-   [**反应映射**](https://github.com/appbaseio/reactivesearch/tree/next/packages/maps) 是一个类似 Reactive Search 的工程,可以轻松构建实时地图.
    
-   [**应用程序js**](https://github.com/appbaseio/appbase-js) 虽然构建搜索 UI 具有反活性搜索的可达性,但您可能需要添加一些输入窗体 . **应用程序js** 在那里有帮助.
    

## 许可证

这个图书馆是 [Apache 许可](https://npmcn.com/package/%40appbaseio/analytics/LICENSE.md)。 。 。 .

[回到顶部](https://npmcn.com/package/%40appbaseio/analytics/#readme-appbase-analytics)

## 常见问题

### @appbaseio/analytics 是什么？

Appbase\.io apps 通用分析库

### 如何安装 @appbaseio/analytics？

在项目目录运行 npm install @appbaseio/analytics，或使用 pnpm add / yarn add / bun add。

### @appbaseio/analytics 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/appbaseio\_\_analytics 是否存在。

### @appbaseio/analytics 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @appbaseio/analytics 可以商用吗？

@appbaseio/analytics 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @appbaseio/analytics 的下载量有多少？

根据 npm 官方下载统计，@appbaseio/analytics 在 2026/10/07 – 2026/11/05 这 30 天内被下载 6,721 次，日均约 224 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @appbaseio/analytics 还在维护吗？

最新版本 1\.2\.0 发布于 2023/05/16（3 年前）；至今共发布 14 个版本，其中过去 12 个月发布了 0 个；首次发布于 2019/10/25。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

