# @airtable/blocks-cli 中文文档

规范地址：https://npmcn.com/package/%40airtable/blocks-cli/

版本：3\.0\.3
npm 元数据更新时间：2026-10-29T17:52:31.075Z
中文译文更新时间：2026-11-05T21:08:32.283Z
软件包许可：UNLICENSED

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

原始 npm 页面：https://www.npmjs.com/package/%40airtable/blocks-cli
原文对照：https://npmcn.com/package/%40airtable/blocks-cli/?lang=original
项目主页：https://airtable.com/developers/blocks

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

- 包体积（解压后）：297 kB，153 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=10\.0\.0
- 运行依赖：23 个
- 首次发布：2019-05-24T20:42:07.326Z
- 最新版本发布：2026-04-30T15:12:13.195Z
- 近 30 天下载量：20734（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：103（近 12 个月 4 个）

## 中文简介

Airtable 块开发的官方命令行工具

## 安装

```sh
npm install @airtable/blocks-cli
```

也可以使用：`pnpm add @airtable/blocks-cli`、`yarn add @airtable/blocks-cli`、`bun add @airtable/blocks-cli`

## README

# @ airtable/ blocks-cli (英语)

Airtable Blocks开发的命令行工具.

-   [@ airtable/ blocks-cli (英语)](https://npmcn.com/package/%40airtable/blocks-cli/#readme-airtableblocks-cli)
-   [安装](https://npmcn.com/package/%40airtable/blocks-cli/#readme-installation)
-   [使用量](https://npmcn.com/package/%40airtable/blocks-cli/#readme-usage)
-   [图标](https://npmcn.com/package/%40airtable/blocks-cli/#readme-commands)
-   [V2 中的新特性](https://npmcn.com/package/%40airtable/blocks-cli/#readme-new-features-in-v2)

# 安装

要安装或更新 `block` cli,运行:

```
npm install --global @airtable/blocks-cli
```

# 使用量

```sh-session
$ npm install -g @airtable/blocks-cli
$ block COMMAND
running command...
$ block (-v|--version|version)
@airtable/blocks-cli/3.0.3 darwin-arm64 node-v22.14.0
$ block --help [COMMAND]
USAGE
  $ block COMMAND
...
```

# 图标

-   [`block add-remote BLOCKIDENTIFIER REMOTENAME`](https://npmcn.com/package/%40airtable/blocks-cli/#readme-block-add-remote-blockidentifier-remotename)
-   [`block help [COMMAND]`](https://npmcn.com/package/%40airtable/blocks-cli/#readme-block-help-command)
-   [`block init BLOCKIDENTIFIER BLOCKDIRPATH`](https://npmcn.com/package/%40airtable/blocks-cli/#readme-block-init-blockidentifier-blockdirpath)
-   [`block list-remotes`](https://npmcn.com/package/%40airtable/blocks-cli/#readme-block-list-remotes)
-   [`block release`](https://npmcn.com/package/%40airtable/blocks-cli/#readme-block-release)
-   [`block remove-remote REMOTENAME`](https://npmcn.com/package/%40airtable/blocks-cli/#readme-block-remove-remote-remotename)
-   [`block run`](https://npmcn.com/package/%40airtable/blocks-cli/#readme-block-run)
-   [`block set-api-key [APIKEY]`](https://npmcn.com/package/%40airtable/blocks-cli/#readme-block-set-api-key-apikey)
-   [`block submit`](https://npmcn.com/package/%40airtable/blocks-cli/#readme-block-submit)

## `block add-remote BLOCKIDENTIFIER REMOTENAME`

\[贝塔\] 添加一个新的远程配置

```
USAGE
  $ block add-remote BLOCKIDENTIFIER REMOTENAME

OPTIONS
  -h, --help  show CLI help

EXAMPLE
  $ block add-remote app12345678/blk12345678 new-remote
```

## `block help [COMMAND]`

显示块的帮助

```
USAGE
  $ block help [COMMAND]

ARGUMENTS
  COMMAND  command to show help for

OPTIONS
  --all  see all commands in CLI
```

_参见代码 : [@oclif/plugin-帮助](https://github.com/oclif/plugin-help/blob/v3.3.1/src/commands/help.ts)_

## `block init BLOCKIDENTIFIER BLOCKDIRPATH`

启动一个空中扩展项目

```
USAGE
  $ block init BLOCKIDENTIFIER BLOCKDIRPATH

OPTIONS
  -h, --help           show CLI help
  --template=template  [default: https://github.com/Airtable/apps-hello-world]

EXAMPLE
  $ block init app12345678/blk12345678 hello-world-extension --template https://github.com/Airtable/apps-hello-world
```

## `block list-remotes`

\[贝塔\] 列出远程配置

```
USAGE
  $ block list-remotes

OPTIONS
  -h, --help  show CLI help

EXAMPLE
  $ block list-remotes
```

## `block release`

将一个建筑放入一个气垫基地

```
USAGE
  $ block release

OPTIONS
  -h, --help       show CLI help
  --remote=remote  [Beta] Configure which remote to use

EXAMPLE
  $ block release
```

## `block remove-remote REMOTENAME`

\[贝塔\] 删除远程配置

```
USAGE
  $ block remove-remote REMOTENAME

OPTIONS
  -h, --help  show CLI help

EXAMPLE
  $ block remove-remote old-remote
```

## `block run`

本地运行扩展

```
USAGE
  $ block run

OPTIONS
  -h, --help       show CLI help
  --port=port      [default: 9000] HTTPS port the server listens on. The server will listen for HTTP on PORT + 1.
  --remote=remote  [Beta] Configure which remote to use

EXAMPLE
  $ block run
```

## `block set-api-key [APIKEY]`

设置 Airtable 账户的个人访问符( 带有块: 管理范围) 上传到

```
USAGE
  $ block set-api-key [APIKEY]

OPTIONS
  -h, --help             show CLI help
  --location=(user|app)  [default: user]

EXAMPLE
  $ block set-api-key
  $ block set-api-key TOKEN
  $ block set-api-key --location app TOKEN
```

## `block submit`

提交延期供审查,以便列入空中市场

```
USAGE
  $ block submit

OPTIONS
  -h, --help       show CLI help
  --remote=remote  Configure which remote to use

EXAMPLE
  $ block submit
```

# V2 中的新特性

## CSS 支助

默认情况下,新的 CLI 支持您的扩展名中的 SS 文件 。 默认的 Webpack 捆绑器是 配置了 cs-loader 和样式-loader 。 这意味着您可以导入一个 Css 文件到您的 扩展名。 示例

```
// styles.css
.red {
  color: red;
}
```

```
import {initializeBlock} from '@airtable/blocks/ui';
import React from 'react';
import './styles.css'

function MyExtension() {
    return <div className="red">Hello world</div>;
}

initializeBlock(() => <MyExtension />);
```

## 使用其他目录中的代码

新的 CLI 允许在源代码之外使用“ 姐妹目录” 来进行代码共享 要捆绑的目录 。 其他目录可以包括基于链接或文件的npm导入.

[这里可以找到更多细节和实例.](https://github.com/Airtable/apps-shared-code)

## 自定义网络包配置

默认情况下,CLI会使用网页包来捆绑您的代码. 在框外,它支持使用平面 JavaScript 或 TypeScript 和通过 CSS 文件的样式. 如果您想要自定义网络包配置 另外,你可以安装 `@airtable/blocks-webpack-bundler` 软件包。 为了更多 关于安装此软件包和自定义 Webpack 配置的信息,请参见 README `@airtable/blocks-webpack-bundler` 软件包在 [软件包/网包-捆绑器/README.md](https://github.com/Airtable/blocks/tree/master/packages/webpack-bundler/README.md)。 。 。 .

## 使用自定义捆绑器

如果自定义上面描述的网页包配置不能解决您的使用大小写,它也是 可完全用自定义执行替换捆绑器。 这需要 相当大的工作量.

自定义捆绑器允许用户替换 CLI 的内置捆绑功能会转弯 扩展源代码为可公布文物. 您的自定义捆绑器输出必须符合 Airtable平台的预期格式,调用会议,以及文件结构.

不同于其他捆绑系统,它们通过组合多个单一目的而允许配置 插件( 或仅取代捆绑管道的一部分), 此 CLI 曝光一个更简单的捆绑器 扩展 API ,它期望一个单一的,完整的替换捆绑功能.

要使用自定义捆绑器 :

1.  将您的捆绑器保存为JavaScript文件(即索引.js). 捆绑器必须是通用JS模块. 若为 以 TypeScript 编写的捆绑器, 您必须使用已转录的版本作为条目文件 .
    
2.  然后,更改块.json “ bundler.module”选项,以指向您新的 bunder 条目文件; 即:
    

```
// block.json
{
    “bundler”: {
        “module”: “./bundler/index.js”
    }
}
```

3.  一旦更改,请重新启动您的dev服务器(如果运行在dev服务器上).

捆绑者需要执行下列API:

```
class Bundler {
    async bundleAsync(options: ReleaseBundleOptions): Promise<void> {
        // implement release build
    }

    async findDependenciesAsync(options: SubmitFindDependenciesOptions): Promise<{files: Array<string>}> {
        // used in `block submit`
    }

    async startDevServerAsync(options: RunDevServerOptions & RunDevServerMethods): Promise<void> {
        // implement run development build
    }

    async teardownAsync(): Promise<void> {
        // implement any work needed to gracefully
        // close bundler process
    }
}

export default function() {
    return new Bundler();
}

For more details about the bundler API, see src/bundler/bundler.ts
```

静态资产仍没有违约支持,但现在可以在自己的捆绑器中互换 支持这个.

## 常见问题

### @airtable/blocks-cli 是什么？

Airtable 块开发的官方命令行工具

### 如何安装 @airtable/blocks-cli？

在项目目录运行 npm install @airtable/blocks-cli，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 block，可以用 npx block 直接运行。

### @airtable/blocks-cli 支持 TypeScript 吗？

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

### @airtable/blocks-cli 支持 ESM 还是 CommonJS？

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

### @airtable/blocks-cli 需要什么版本的 Node\.js？

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

### @airtable/blocks-cli 可以商用吗？

@airtable/blocks-cli 使用 UNLICENSED 许可。作者声明为 UNLICENSED，即不授予公开使用许可（与公共领域的 Unlicense 不同）。使用前需获得作者授权。以上为概括，不构成法律意见，请以许可原文为准。

### @airtable/blocks-cli 的下载量有多少？

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

### @airtable/blocks-cli 还在维护吗？

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

