# ghost-storage-base 中文文档

规范地址：https://npmcn.com/package/ghost-storage-base/

版本：3\.0\.3
npm 元数据更新时间：2026-11-03T16:00:47.749Z
中文译文更新时间：2026-11-03T19:39:39.655Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/ghost-storage-base
原文对照：https://npmcn.com/package/ghost-storage-base/?lang=original
源码仓库：https://github.com/TryGhost/Ghost

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

- 包体积（解压后）：12.9 kB，12 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2017-04-05T10:36:45.279Z
- 最新版本发布：2026-11-03T16:00:47.095Z
- 已发布版本数：18（近 12 个月 9 个）

## 中文简介

Ghost存储适配器的基类。

## 安装

```sh
npm install ghost-storage-base
```

也可以使用：`pnpm add ghost-storage-base`、`yarn add ghost-storage-base`、`bun add ghost-storage-base`

## README

# ghost-storage-base

的基类 [鬼](https://ghost.org/) 存储适配器。存储适配器 决定上传的图像、媒体和文件的存储位置以及存储方式 服务-本地文件系统，S3，谷歌云存储等。

看到 [Ghost适配器文档](https://docs.ghost.org/config#adapters) 了解如何配置和加载适配器。

## 用法

在适配器旁边安装基类：

```bash
npm install ghost-storage-base
```

扩展 `StorageBase` 并实现中列出的每个方法 `requiredFns`： `exists`， `save`， `serve`， `delete`, `read`． TypeScript适配器也必须 实现声明的内容 `saveRaw(buffer, targetPath)` 和 `urlToPath(url)` 方法。

```js
const {StorageBase} = require('ghost-storage-base');

class MyStorage extends StorageBase {
    // Resolve to true if a file already exists at targetDir/fileName.
    exists(fileName, targetDir) { /* ... */ }
    // Persist `file` and resolve to the public URL/path it's served at.
    save(file, targetDir) { /* ... */ }
    // Return an Express middleware that serves stored files.
    serve() { /* ... */ }
    // Remove a stored file.
    delete(fileName, targetDir) { /* ... */ }
    // Resolve to a Buffer of the file at options.path.
    read(options) { /* ... */ }
}

module.exports = MyStorage;
```

基类提供了这些帮助器：

-   `getTargetDir(baseDir)` 返回一个 `YYYY/MM` 路径，可选在内部 `baseDir`。
-   `getSanitizedFileName(fileName)` 将不支持的文件名字符替换为 `-`。
-   `getUniqueFileName(file, targetDir)` 和 `generateUnique(dir, name, ext, i)` 呼叫 `this.exists(...)` 直到他们找到一个免费的文件名(`exists` 必须返回 一个 `Promise<boolean>`）.

### 安装激活

将适配器放置在 `content/adapters/storage/MyStorage/index.js` 并激活 在你的Ghost配置中。存储有三个独立的功能键- `active` (图片), `media`, `files` -以适配器命名的块为 传递给它的构造函数：

```json
{
    "storage": {
        "active": "MyStorage",
        "MyStorage": {}
    }
}
```

## 开发

这是Ghost monorepo中的一个工作空间包。从repo根目录：

```bash
pnpm --filter ghost-storage-base build   # compile to build/ with tsc (ESM)
pnpm --filter ghost-storage-base test    # type-check + unit tests
```

此包仅支持esm，并使用 `tsc` （`module: nodenext`）. 相对 进口 `src/` 必须带有显式扩展名；写真实的 `.ts` 一个- - - - - - `import {x} from './x.ts'` 和 `tsc` 将其重写为 `.js` 在发出 （`rewriteRelativeImportExtensions`）.

# 版权与许可

鬼子基金会版权所有2013-2026 [麻省理工学院的许可](https://github.com/TryGhost/Ghost/blob/main/LICENSE)． 鬼和鬼的标志是鬼基金会有限公司的商标。请参阅我们的 [商标政策](https://ghost.org/trademark/) 有关可接受的用法的信息。

## 常见问题

### ghost-storage-base 是什么？

Ghost存储适配器的基类。

### 如何安装 ghost-storage-base？

在项目目录运行 npm install ghost-storage-base，或使用 pnpm add / yarn add / bun add。

### ghost-storage-base 支持 TypeScript 吗？

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

### ghost-storage-base 支持 ESM 还是 CommonJS？

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

### ghost-storage-base 可以商用吗？

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

### ghost-storage-base 还在维护吗？

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

