# @asbjorn/eslint-plugin-groq 中文文档

规范地址：https://npmcn.com/package/%40asbjorn/eslint-plugin-groq/

版本：2\.0\.0
npm 元数据更新时间：2022-04-04T15:42:55.119Z
中文译文更新时间：2026-11-08T07:29:03.000Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40asbjorn/eslint-plugin-groq
原文对照：https://npmcn.com/package/%40asbjorn/eslint-plugin-groq/?lang=original
源码仓库：https://github.com/asbjornh/eslint-plugin-groq

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

- 包体积（解压后）：15.4 kB，14 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- Node.js 要求：\>=10\.0\.0
- 运行依赖：2 个
- 首次发布：2019-10-28T16:08:17.581Z
- 最新版本发布：2021-11-30T19:39:11.978Z
- 近 30 天下载量：1870（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：5（近 12 个月 0 个）

## 中文简介

GROQ 查询的 Eslint 插件

## 安装

```sh
npm install @asbjorn/eslint-plugin-groq
```

也可以使用：`pnpm add @asbjorn/eslint-plugin-groq`、`yarn add @asbjorn/eslint-plugin-groq`、`bun add @asbjorn/eslint-plugin-groq`

## README

# @asbjorn/eslint-plugin-groq (英语)

非正式 `eslint` 用于 [加纳](https://www.sanity.io/docs/groq) 查询.

```
npm install @asbjorn/eslint-plugin-groq
```

## 所需资源

此插件使用 [`groq`](https://www.npmjs.com/package/groq) 以识别 GROQ 标记的模板文字,默认情况下不会报告任何不使用此软件包的查询.

如果您使用 `groq` 从不同的图书馆,例如 `@nuxtjs/sanity` 或者说 `next-sanity`,见下文配置.

```js
// Will not be linted:
const query = "*[_type == 'movies'][0..10]";

// Will be linted:
import groq from "groq";
const query = groq`*[_type == 'movies'][0..10]`;

// Will also be linted:
import anything from "groq";
const query = anything`*[_type == 'movies'][0..10]`;
```

## 配置

```json
{
  "plugins": ["@asbjorn/groq"],
  "rules": {
    "@asbjorn/groq/no-syntax-errors": "error",
    "@asbjorn/groq/no-template-expressions": "error"
  }
}
```

或者说:

```json
{
  "extends": ["plugin:@asbjorn/groq/recommended"]
}
```

### 使用 `groq` 其他图书馆

默认情况下,这些 eslint 规则只检查使用 GROQ 函数导出到 `groq` npm 软件包. 如果您使用不同库中的 GROQ, 例如 `@nuxtjs/sanity` 或者说 `next-sanity`,您可以通过一组包名来配置规则 :

```json
{
  "plugins": ["@asbjorn/groq"],
  "rules": {
    "@asbjorn/groq/no-syntax-errors": [
      "error",
      { "groqs": ["@nuxtjs/sanity"] }
    ],
    "@asbjorn/groq/no-template-expressions": [
      "error",
      { "groqs": ["@nuxtjs/sanity"] }
    ]
  }
}
```

## 规则

### 无语法错误

报告 GROQ 查询中与导出函数标记的任何语法错误 `groq`。请注意,包含表达式的模板字元不会被擦去,因为解析表达式非常难以可靠地进行。 如果要特别安全,请结合 `no-template-expressions` 规则.

#### 未结案

```js
// Syntax error in tagged query
import groq from "groq";
groq`*[_type == { ]`;

// Syntax error (not imported as `groq`)
import hello from "groq";
hello`*[_type == { ]`;
```

#### 通过案件

```js
// Non-tagged query with syntax error
`*[_type == {]`;

// Valid, tagged query
import groq from "groq";
groq`*[_type == 'movie']`;

// Query with syntax error tagged with `groq` not imported from `"groq"`
import groq from "somewhere";
groq`*[_type == {]`;

// Query with syntax error and template expression
import groq from "groq";
groq`*[_${expression} == {]`;
```

### 无模板表达式

报告 GROQ 查询中与导出函数标记的任何表达式 `groq`。这一规则之所以存在,是因为 `no-syntax-errors` 规则对包含表达式的任何查询进行保释(见该规则的说明).

#### 未结案

```js
// Template expression
import groq from "groq";
groq`*[_type == ${type}]`;

// Template expression (not imported as 'groq')
import hello from "groq";
hello`*[_type == ${type}]`;
```

#### 通过案件

```js
// Tagged query without expressions
import groq from "groq";
groq`*[_type == 'movie']`;

// Non-tagged query with expression
`*[_type == ${type}]`;

// Query with expression tagged with `groq` not imported from `"groq"`
import groq from "somewhere";
groq`*[_type == ${type}]`;
```

## 常见问题

### @asbjorn/eslint-plugin-groq 是什么？

GROQ 查询的 Eslint 插件

### 如何安装 @asbjorn/eslint-plugin-groq？

在项目目录运行 npm install @asbjorn/eslint-plugin-groq，或使用 pnpm add / yarn add / bun add。

### @asbjorn/eslint-plugin-groq 支持 TypeScript 吗？

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

### @asbjorn/eslint-plugin-groq 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @asbjorn/eslint-plugin-groq 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=10\.0\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @asbjorn/eslint-plugin-groq 可以商用吗？

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

### @asbjorn/eslint-plugin-groq 的下载量有多少？

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

### @asbjorn/eslint-plugin-groq 还在维护吗？

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

