# @crutchcrew/oxlint-plugin-import-access 中文文档

规范地址：https://npmcn.com/package/%40crutchcrew/oxlint-plugin-import-access/

版本：1\.1\.0
npm 元数据更新时间：2026-10-27T16:44:47.688Z
中文译文更新时间：2026-11-11T02:08:02.447Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：65.8 kB，15 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：^20\.19\.0 \|\| \>=22\.12\.0
- 运行依赖：3 个
- peer 依赖：oxlint \>=1\.40\.0
- 首次发布：2026-10-26T16:27:42.123Z
- 最新版本发布：2026-10-27T16:44:47.207Z
- 近 30 天下载量：8723（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：4（近 12 个月 4 个）

## 中文简介

Oxlint JS 插件, 用于通过 JSDoc @ public, @ package and @ private, 没有类型检查器导入访问

## 安装

```sh
npm install @crutchcrew/oxlint-plugin-import-access
```

也可以使用：`pnpm add @crutchcrew/oxlint-plugin-import-access`、`yarn add @crutchcrew/oxlint-plugin-import-access`、`bun add @crutchcrew/oxlint-plugin-import-access`

## README

# @cruchcrew/oxlint-plugin-import-access-qq) 互联网档案馆的存檔,存档日期2013-12-02

[![npm version](https://img.shields.io/npm/v/@crutchcrew/oxlint-plugin-import-access)](https://www.npmjs.com/package/@crutchcrew/oxlint-plugin-import-access) [![coverage](https://img.shields.io/endpoint?url=https://crutchcrew.github.io/oxlint-plugin-import-access/badges/coverage.json)](https://github.com/crutchcrew/oxlint-plugin-import-access/actions) [![provenance](https://img.shields.io/badge/provenance-verified-brightgreen)](https://www.npmjs.com/package/@crutchcrew/oxlint-plugin-import-access) [![license](https://img.shields.io/npm/l/@crutchcrew/oxlint-plugin-import-access)](https://npmcn.com/package/%40crutchcrew/oxlint-plugin-import-access/LICENSE)

JSDoc 导入 TypeScript 的访问权限,由 [奥克林特](https://oxc.rs/docs/guide/usage/linter)。仅限 `@public` 出口可以从任何地方进口,没有准入标签的出口是: `@package`:只有它自己的包(它的目录和子目录)中的文件才能导入. 标记导出 `@public` 与整个项目分享,或 `@private` 因此没有其它文件可以导入它. 做无标记的出口 `@public` 或者说 `@private` 相反,设置 [`defaultImportability`](https://npmcn.com/package/%40crutchcrew/oxlint-plugin-import-access/#readme-options)。 。 。 .

本地牛林 JS 插件端口 [埃斯林特-插头-进口-接入](https://github.com/uhyo/eslint-plugin-import-access) 这需要 **无类型检查器**: 无 `typescript` 依赖,无 `tsconfig.json` 工程加载, 没有键入林丁设置 .

## 访问标签

![sub/foo.ts exports api tagged @public, helper without a tag and secret tagged @private. sub/bar.ts, in the same package, can import api and helper but not secret. src/main.ts, outside the package, can import only api.](https://npmcn.com/package/%40crutchcrew/oxlint-plugin-import-access/docs/images/access.svg)

每个导出者的 JSDoc 访问标记决定哪些文件可以导入. 软件包是一个带有子目录的目录,默认每个目录都是一个(参见 [`packageDirectory`](https://npmcn.com/package/%40crutchcrew/oxlint-plugin-import-access/docs/rule-jsdoc.md#packagedirectory)) (中文(简体) ). 在图片中, `sub/foo.ts` 有三种出口:

-   `api` 实值 **`@public`**: 任何文件都可以导入它, `sub/bar.ts` 以及 `src/main.ts`。 。 。 .
-   `helper` 已经 **无标签**,所以这是 `@package`: 文件在 `sub/` 及其子目录可以导入它,所以 `sub/bar.ts` 能够和 `src/main.ts` 没办法.
-   `secret` 实值 **`@private`**: 没有文件可以导入, 甚至不能导入 `sub/bar.ts` 旁边.

从Node.js内建和任何进口 `node_modules` 从不检查.

## 为什么?

最大的封装单位 TypeScript 给了您一个文件. 一旦某物被出口,整个项目就可以导入. 保持事物的隐私意味着它们保存在一个文件中,文件会变得庞大.

此插件在文件与整个工程之间添加目录级别层: 导出保留在其目录内( )`@package`直到你标记它 `@public`标出项目其他部分可能使用的内容 `@public`,以及任何其他文件可能使用的内容 `@private`。 。 。 .

## 为什么这个包

|  | 这个包 | [埃斯林特-插头-进口-接入](https://github.com/uhyo/eslint-plugin-import-access) | [牛林-插头-进口-接入](https://github.com/bitkey-oss/oxlint-plugin-import-access) |
| --- | --- | --- | --- |
| **线条** | 奥克林特 | ESLint 语录 | 奥克林特 |
| **需要类型信息** | ❌ | qq 已键入 | QQ TypeScript 7 不稳定 API |
| **`typescript` 依赖性** | ❌ | ✅ | ✅ `^7` |
| **无工作 `tsconfig.json`** | ✅ | ❌ | ❌ |
| **检查编辑器中未保存的编辑** | ✅ | ✅ | qq 跳过直到保存 |
| **与原规则相同的结果** | 已核实1 | – 说吧 – | ✅ |

1个 `defaultImportability: "public"`,它使出口没有访问标记 `@public` 就像原版一样 此插件的默认值是 `"package"`。该插件还检查了通过命名空间导入所使用的成员(`import * as foo`),原件不检查.

## 安装

选择你的格斗家

```sh
pnpm add -D oxlint @crutchcrew/oxlint-plugin-import-access
```

```sh
bun add -D oxlint @crutchcrew/oxlint-plugin-import-access
```

```sh
yarn add -D oxlint @crutchcrew/oxlint-plugin-import-access
```

```sh
npm add -D oxlint @crutchcrew/oxlint-plugin-import-access
```

需要节点.js `^20.19.0 || >=22.12.0` (同克克林特同为克林特同为克林特同为克林特同为克林特同为克林特同为克林特同为克林特同为克林特同为克林特同为克林特同为克林特同为克林特同为克林特同为克林特同为克林特同为克林特同为克林特同为克林特同为克林特同为克林特同为克林特同为克 `>=1.40.0`。 。 。 .

## 配置

单位 **`.oxlintrc.json`**数字 :

```json
{
    "jsPlugins": ["@crutchcrew/oxlint-plugin-import-access"],
    "rules": {
        "import-access/jsdoc": "error"
    }
}
```

或进入 **`oxlint.config.ts`**数字 :

```ts
import { defineConfig } from "oxlint"

export default defineConfig({
    jsPlugins: ["@crutchcrew/oxlint-plugin-import-access"],
    rules: {
        // Untagged exports are @package; tag an export @public to import it from anywhere
        "import-access/jsdoc": "error",
    },
})
```

仅此而已:没有配置解析器或工程。 诊断也通过 [oxc 扩展](https://oxc.rs/docs/guide/usage/linter/editors) (克林特的语言服务器).

## 选项

| 选项 | 默认 | 说明 |
| --- | --- | --- |
| `indexLoophole` | `true` | `sub/index.ts` 计数为 `sub.ts`,因此其包-私人出口可明显提升到一个水平 |
| `filenameLoophole` | `false` | `foo.ts` 进口包-私人出口 `foo/` |
| `defaultImportability` | `"package"` | 没有标签的出口访问 : `"package"` (单位:千美元)`@package`, (中文(简体) ), `"public"` 或者说 `"private"` |
| `treatSelfReferenceAs` | `"external"` | 是否检查通过您自己的包名导入( Q)`"internal"`或无 |
| `excludeSourcePatterns` | `[]` | 要跳过的出口商文件的光标( 相对于工作目录), 例如生成的代码 |
| `packageDirectory` | 每个目录 | 属于软件包边界的目录的光标, 例如 . `["**", "!**/_internal"]` |

所有选项和访问标记( E)`@public`, (中文(简体) ), `@package`, (中文(简体) ), `@private`, (中文(简体) ), `@access <level>`)行为与原插件相同,但 `defaultImportability` 默认为 `"package"` 改为 `"public"`见 **[规则文档](https://npmcn.com/package/%40crutchcrew/oxlint-plugin-import-access/docs/rule-jsdoc.md)** 详情和实例.

## 如何运作

原始规则询问 TypeScript 类型检查器, 声明导入指的是哪个 。 此插件单从语法中解答相同的问题 :

1.  解析像 TypeScript () 这样的导入`tsconfig` `paths`, (中文(简体) ), `package.json` `exports`, (中文(简体) ), `.js` → `.ts`与 [解氧化剂](https://github.com/oxc-project/oxc-resolver), (中文(简体) ),
2.  跳过内建和任何能达到的东西 `node_modules`, (中文(简体) ),
3.  读取目标文件的导出和 JSDoc [氧化- parser( x)](https://github.com/oxc-project/oxc/tree/main/napi/parser) ——模块记录和注释;语法树只用于有装饰器的少数文件, `export =`,再出口进口或JSDoc在可变报表中——并缓存,
4.  跟着 `export *`,停止像上游那样直接再出口,并阅读带有TypeScript附件和标签规则的JSDoc,
5.  检查环境 `declare module "…"` 和通配符 `declare module "*.svg"` 也声明.

**对照原件核实:** 上游测试套件没有改变(相同的线条、列条、消息),并将端口与上游的TypeScript对每个固定文件和选项组合的规则进行比较,包括用于再出口链、超载、enum、, `export =`,通配符模块和JSDoc放置,其在测试套件中的期望由原规则产生. 这个 [已知差异](https://npmcn.com/package/%40crutchcrew/oxlint-plugin-import-access/docs/rule-jsdoc.md#differences-from-upstream) 是边框,例如模块增强跨文件.

## 业绩

创建带有嵌入式特性目录的项目, `export *` 每个单元的桶和6个进口量(`bun run bench`在Apple M1上(8个核心,Asahi Linux),节点.js 26,克克林特 1.89:

| 模块(进口) | ESLint + eslint-plugin- 进口接入 | oxlint + 此插件 | 加速 |
| --- | --- | --- | --- |
| 1 000个(6 000个) | 1.90s (中文(简体) ) | **0.31关** | 6.1× (中文(简体) ) |
| 2 500 (15 000)美元 | 第4.89节,第1节 | **0.55 s (单位:千美元)** | 8.9× (中文(简体) ) |
| 5 000(30 000)美元 | 524 s 2 失败 | **0.95 s (中文(简体) )** | – 说吧 – |

ESLint 10 有打字机-slint 8 有打字机-linting(`projectService`),单跑;克克林特最优秀为3. 两者都报告每个文件中基于TypeScript的规则可以分析的相同诊断. 在0.95 s中,大约0.33 s是克克林特自己运行超过5000个文件的任何JS插件的费用.

1 TypeScript在2,600个文件中的16个文件("最大调用堆栈大小已超过")上失败了,因此这些文件没有受到控制. 2 TypeScript在这个重循环项目的每个文件中都失败了.

在长期运行的编辑器会话中,文件会随着变化被重新检查:导出文件会根据大小和修改时间重新验证,只有在变化时才会重新分出.

## 从 Eslint-plugin- 进口进入

1.  安装克林特和此软件包,并移除 `eslint-plugin-import-access` 从你的ESLint配置.
2.  规则选项不变 `"import-access/jsdoc"` 在牛林配置。 如果你没准备好 `defaultImportability`,设置为 `"public"` 以保持原作的行为:这里,未标记的出口是 `@package` 默认.
3.  对于 IDE 自动导入过滤, 您可以继续使用原始软件包 [TypeScript 语言服务插件](https://github.com/uhyo/eslint-plugin-import-access/blob/master/docs/ts-server.md) (它只需要TypeScript,而不是ESLint);这个软件包没有自己的语言服务插件.

## 捐款

```sh
bun install
bun run test          # rule and unit tests (Node.js >= 22)
bun run build && bun run test:e2e
bun run check         # format, lint + typecheck (oxlint, with this plugin on its own sources), lockfile
```

## 贷项

依据 [埃斯林特-插头-进口-接入](https://github.com/uhyo/eslint-plugin-import-access) 以 [哟](https://github.com/uhyo),该端口所保存的规则设计、选项、文件和测试固定装置.

## 许可证

[麻省理工学院](https://npmcn.com/package/%40crutchcrew/oxlint-plugin-import-access/LICENSE)

## 常见问题

### @crutchcrew/oxlint-plugin-import-access 是什么？

Oxlint JS 插件, 用于通过 JSDoc @ public, @ package and @ private, 没有类型检查器导入访问

### 如何安装 @crutchcrew/oxlint-plugin-import-access？

在项目目录运行 npm install @crutchcrew/oxlint-plugin-import-access，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：oxlint（\>=1\.40\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @crutchcrew/oxlint-plugin-import-access 支持 TypeScript 吗？

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

### @crutchcrew/oxlint-plugin-import-access 支持 ESM 还是 CommonJS？

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

### @crutchcrew/oxlint-plugin-import-access 需要什么版本的 Node\.js？

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

### @crutchcrew/oxlint-plugin-import-access 可以商用吗？

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

### @crutchcrew/oxlint-plugin-import-access 的下载量有多少？

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

### @crutchcrew/oxlint-plugin-import-access 还在维护吗？

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

