@collective-intelligence/lint

中文文档
0.2.4发布于 2026/11/07TypeScriptES Module近 30 天下载 3089

带有"集体智能林特"规则的Oxlint插件:包边界和解决方案包布局.

中文使用文档
文档目录10 节
  1. 安装
  2. 使用
  3. 所有规则
  4. 选定规则
  5. 代理技能
  6. 规则
  7. 软件包边界
  8. 解决方案布局
  9. 效果公约
  10. 添加规则

@ 集体智能/ lint

集体情报规则,作为一个Oxlint插件。 每一个线人 规则住在这个包裹。 插件已命名 ci-solution因此,每个规则是 启用为 ci-solution/<rule>。 。 。 .

安装

bun add -d oxlint @collective-intelligence/lint

插件需要 oxlint 1.82.0 或后来.

使用

所有规则

扩展 recommended 配置为 oxlint.config.ts。它装入插件和 允许作为错误的每条规则 :

import { recommended } from "@collective-intelligence/lint"
import { defineConfig } from "oxlint"

export default defineConfig({
  extends: [recommended]
})

要改变一条规则,请在扩展后设置:

export default defineConfig({
  extends: [recommended],
  rules: { "ci-solution/subpath-index": "warn" }
})

选定规则

装入插件并只启用您想要的规则 :

import { defineConfig } from "oxlint"

export default defineConfig({
  jsPlugins: ["@collective-intelligence/lint"],
  rules: {
    "ci-solution/package-entrypoint": "error",
    "ci-solution/subpath-imports": "error"
  }
})

JSON 配置同样有效:

{
  "jsPlugins": ["@collective-intelligence/lint"],
  "rules": { "ci-solution/package-entrypoint": "error" }
}

这个 RuleName 类型列出每个规则名称.

代理技能

包裹上装的是代理技能 ci-solution-structure 时间 skills/ci-solution-structure/SKILL.md在哈尼斯情报库里, 页:1 collective-intelligence 包装技能并添加插件 ci-solution/package-entrypoint 切入到管理配置中.

规则

规则强制执行组
ci-solution/package-entrypoint进口另一套件,目标是在其 package.json 出口.软件包边界
ci-solution/subpath-imports子路径文件夹之间的导入遵循允许的方向 .解决方案布局
ci-solution/subpath-entrypoint从另一个子路径文件夹导入目标为文件夹或其索引文件 .解决方案布局
ci-solution/subpath-index每个子路径文件夹都有一个 index.ts 或者说 index.tsx。 。 。 .解决方案布局
ci-solution/effect-subpath一个SDK效应API来自SDK的 /effect 子路径; 已删除的 SDK 路径被报告 .效果公约
ci-solution/no-run-in-view查看模块调用否 fetch 没有效果.效果公约
ci-solution/effect-actorsX 国家副作用行为者是: fromEffect 演员.效果公约
ci-solution/effect-writes没有模块需要 TanStack 查询 useMutation; 写入 fromEffect 演员.效果公约

软件包边界

一个工作空间持有互相导入的软件包 。 这些规则都保留 其公布的公开入境点后面的包.

package-entrypoint

通过其根导入另一个软件包( E)@scope/pkg)或列于 联合国 package.json exports (单位:千美元)@scope/pkg/views) (中文(简体) ). * 模式和模式 null 排除遵循节点解析。 规则是,通过 node_modules 从导入文件开始,所以工作空间包必须链接到 包管理器.

import { invoiceTotal } from "@acme/billing" // valid
import { invoiceTable } from "@acme/billing/views" // valid when "./views" is exported
import { rate } from "@acme/billing/src/domain/rates" // reported
import { rate } from "../../billing/src/domain/rates" // reported: relative path into another package

没有包 exports 字段接受除 src/。 。 。 . 无法找到的软件包不检查 .

解决方案布局

解决方案包可以将其来源分割为子路径文件夹:

src/
  ci/        Collective Intelligence entity and capability declarations
  domain/    domain model, free of runtime concerns
  api/       API contracts
  server/    server handlers and runtime wiring
  headless/  UI state without rendering
  views/     rendered UI

这些规则将那些文件夹分开.

subpath-imports

文件夹不得导入
domain/server/, (中文(简体) ), views/, (中文(简体) ), headless/, (中文(简体) ), ci/
ci/views/, (中文(简体) ), headless/
headless/server/
views/server/
api/无限制
server/无限制

规则通过包名检查相对进出口 (单位:千美元)@acme/billing/server 从 src/views/) (中文(简体) ).

subpath-entrypoint

从另一个子路径文件夹导入目标为文件夹或其索引文件 . 一个子路径文件夹中的导入是免费的 .

// src/views/table.ts
import { invoiceTotal } from "../domain" // valid
import { invoiceTotal } from "../domain/index.ts" // valid
import { rate } from "../domain/rates" // reported

subpath-index

每个子路径文件夹下方 src/ 有一个 index.ts 或者说 index.tsx 进入点. 规则在文件夹中报告每个文件 .

效果公约

应用程序在 XState 机器中保留其副作用: 每一个副作用都是一个 fromEffect 角色,通过 TanStack 查询查看数据,并刷新 那些通过SDK读取 QueryCache这些规则 检查进口和呼叫的公约部分.

effect-subpath

集体情报系统@collective-intelligence/*暴露其影响 API 时间 <sdk>/effect 财务报告和审定财务报表 <sdk>/effect/<adapter>。规则报告 SDK 路径 名称 <sdk>-effect 软件包,或 effect 部分 在另一个子路径之下。 它还报告每条SDK路径,0.2.0后发布 删除,并替换:

删除路径替换
@collective-intelligence/external-apps-server-sdk/runtime/effect@collective-intelligence/external-apps-server-sdk/effect
@collective-intelligence/external-apps-server-sdk/persistence/drizzle/effect@collective-intelligence/external-apps-server-sdk/effect· ; layerNodePostgres 财务报告和审定财务报表 NodePostgresLayerOptions 从 @collective-intelligence/external-apps-server-sdk/effect/node-postgres
@collective-intelligence/external-apps-server-sdk/runtime/next@collective-intelligence/external-apps-server-sdk/next
@collective-intelligence/extensions-sdk-backend-effect@collective-intelligence/extensions-sdk-backend/effect
import { CiClient } from "@collective-intelligence/external-apps-client-sdk/effect" // valid
import { createClient } from "@collective-intelligence/external-apps-client-sdk" // valid
import { Realtime } from "@collective-intelligence/external-apps-client-sdk/realtime/effect" // reported
import { CiRuntime } from "@collective-intelligence/external-apps-server-sdk/runtime/effect" // reported: removed

no-run-in-view

视图模块是 .tsx 或者说 .jsx 文件,或文件中的文件 views/ 子路径 a 解决方案包。 该规则报告了全球 fetch (另见: globalThis.fetch 财务报告和审定财务报表 window.fetch)和每次使用效果运行函数 (单位:千美元)runPromise, (中文(简体) ), runSync, (中文(简体) ), runFork 以及其它问题 run* 职能 Effect 财务报告和审定财务报表 ManagedRuntime:

  • a 从任何物体读取、调用或传递为值: Effect.runPromise(x), (中文(简体) ), runtime.runSync(x), (中文(简体) ), x.pipe(Effect.runPromise)· ;
  • 解结构模式中的密钥 : const { runFork } = runtime· ;
  • 从 effect, (中文(简体) ), effect/* 或者说 @effect/*数字 : import { runPromise } from "effect/Effect"。 。 。 .

括号或引文中的常数也算: window["fetch"](url), (中文(简体) ), Effect[`runSync`](x) 财务报告和审定财务报表 const { "runFork": fork } = runtime 报告. 本地绑定名称 fetch, (中文(简体) ), globalThis 或者说 window,如 cache.fetch,括号中的名称,该名称只能运行时间给出(Effect[key]和一个 对象字元键, 如 { runPromise: run } 未报告。 允许 在视图测试中调用, 关闭测试文件的规则 overrides 输入.

effect-actors

规则逐一报告 fromPromise, (中文(简体) ), fromCallback, (中文(简体) ), fromObservable 财务报告和审定财务报表 fromEventObservable 输入、再出口或命名空间导入 (单位:千美元)XState.fromPromise, (中文(简体) ), XState["fromPromise"], (中文(简体) ), const { fromPromise } = XState从 xstate 或者说 xstate/*。使副作用行为者 fromEffect 从 @collective-intelligence/external-apps-client-sdk-react/effect 在离散中 应用程序,或来自 @collective-intelligence/extensions-sdk-frontend-react/effect 内 一个主机工作室部件。 机器和 fromTransition 行为者没有副作用,也没有报告。 本地名称 阴影化命名空间导入,例如一个命名的参数 XState,没有 报告.

effect-writes

规则逐一报告 useMutation 导入、再导出或命名空间 导入( e)ReactQuery.useMutation, (中文(简体) ), ReactQuery["useMutation"], (中文(简体) ), const { useMutation } = ReactQuery从 @tanstack/react-query。通过一个 fromEffect 演员来自 @collective-intelligence/external-apps-client-sdk-react/effect 在离散中 应用程序,或来自 @collective-intelligence/extensions-sdk-frontend-react/effect 内 a 主机 Studio 部件; 写入后, 演员刷新读取 QueryCache 同一入境点的invalidate, (中文(简体) ), setData) (中文(简体) ).

规则检查每个模块. useMutation 只在反应渲染时运行, 因此,一个模块 取它是一个视图, 钩或帮助其中之一.

useQuery 而其他的则不报告 useMutationState 财务报告和审定财务报表 useIsMutating: 他们只读到一个状态 useMutationA级 useMutation 从另一个图书馆,例如 @apollo/client,未报告。 实体钩 @collective-intelligence/external-apps-client-sdk-react/resources (单位:千美元)useEntityCreate, (中文(简体) ), useEntityUpdate, (中文(简体) ), useEntityDelete未报告 : sDK 书写并刷新它自己的实体读取.

规则检查没有查询密钥 。 SDK的应用程序 "ci-entities" 键,例如 invalidateQueries未报告: SDK 拥有用于实体读取的密钥,但没有导出用于 因此,报告将没有任何支持性的解决办法.

添加规则

每条规则都是Oxlint在自己的文件夹里的规则, src/rules/<rule>/数字 :

  1. 写入 src/rules/<rule>/<rule>.ts导出 a LintRule (单位:千美元)src/rule.ts(中文(简体) ) 改为:

    • group: 上表中的规则组(添加一组为 RuleGroup 当没有一组人适合的时候;
    • rule: 规则从 defineRule 联 合 国 @oxlint/plugins,带有 messages 输入 meta 每一个发现. src/rule.ts 拿着 共享帮助 : moduleSpecifiers 建立一个访问者 检查每一个 模块指定符, staticPropertyName 读取一个恒定属性名称,并且 declaredVariable 查找一个名称所指的变量.

    一个规则读取工作空间通过 src/workspace/数字 : packageOf 财务报告和审定财务报表 installedPackage 找到包裹清单, declaresEntrypoint 检查 exports,以及 layoutFile 找到文件的子路径 .

  2. 在登记册上添加一行, src/rules/index.ts插件、 插件 recommended 配置和配置 RuleName 类型从它.

  3. 写入 src/rules/<rule>/<rule>.test.ts 相对于固定的工作空间 test/fixtures/workspace/,并添加新案件的固定文件。 添加 满足人们期望的新诊断 src/index.test.ts。 。 。 .

  4. 将规则添加到上表 CHANGELOG.md。 。 。 .

Oxlint同步调用规则访问者,所以规则读取文件与 同步 node:fs API:它不能等待承诺或计时器. 这个 工作区搜索缓存每个文件夹,所以每个软件包 每个插件装入一次.

版本与发布记录

@collective-intelligence/lint 共发布 15 个版本,首次发布于 2026/10/28;过去 12 个月发布了 15 个版本。

版本发布日期距今
0.2.4latest2026/11/073 天前
0.2.32026/11/063 天前
0.2.22026/11/064 天前
0.2.12026/11/055 天前
0.2.02026/11/055 天前
0.1.282026/11/046 天前

关于 @collective-intelligence/lint 的常见问题

@collective-intelligence/lint 是什么?

带有"集体智能林特"规则的Oxlint插件:包边界和解决方案包布局.

如何安装 @collective-intelligence/lint?

在项目目录运行 npm install @collective-intelligence/lint,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:oxlint(>=1.82.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@collective-intelligence/lint 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@collective-intelligence/lint 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@collective-intelligence/lint 可以商用吗?

@collective-intelligence/lint 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@collective-intelligence/lint 的下载量有多少?

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

@collective-intelligence/lint 还在维护吗?

最新版本 0.2.4 发布于 2026/11/07(3 天前);至今共发布 15 个版本,其中过去 12 个月发布了 15 个;首次发布于 2026/10/28。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。