ghost-storage-base

中文文档
3.0.3发布于 2026/11/04MITTypeScriptES Module构建来源已验证

Base class for Ghost storage adapters.

原始使用文档
文档目录3 节
  1. Usage
  2. Installing and activating
  3. Develop

ghost-storage-base

Base class for Ghost storage adapters. A storage adapter decides where uploaded images, media, and files are stored and how they're served — the local filesystem, S3, Google Cloud Storage, etc.

See the Ghost adapters documentation for how adapters are configured and loaded.

Usage

Install the base class alongside your adapter:

npm install ghost-storage-base

Extend StorageBase and implement every method listed in requiredFns: exists, save, serve, delete, and read. TypeScript adapters must also implement the declared saveRaw(buffer, targetPath) and urlToPath(url) methods.

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;

The base class supplies these helpers:

  • getTargetDir(baseDir) returns a YYYY/MM path, optionally inside baseDir.
  • getSanitizedFileName(fileName) replaces unsupported filename characters with -.
  • getUniqueFileName(file, targetDir) and generateUnique(dir, name, ext, i) call this.exists(...) until they find a free filename (exists must return a Promise<boolean>).

Installing and activating

Place the adapter at content/adapters/storage/MyStorage/index.js and activate it in your Ghost config. Storage has three separate feature keys — active (images), media, and files — and the block named after the adapter is passed to its constructor:

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

Develop

This is a workspace package in the Ghost monorepo. From the repo root:

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

This package is ESM-only and compiled with tsc (module: nodenext). Relative imports in src/ must carry an explicit extension; write the real .ts one — import {x} from './x.ts' — and tsc rewrites it to .js on emit (rewriteRelativeImportExtensions).

Copyright & License

Copyright (c) 2013-2026 Ghost Foundation - Released under the MIT license. Ghost and the Ghost Logo are trademarks of Ghost Foundation Ltd. Please see our trademark policy for info on acceptable usage.

版本与发布记录

ghost-storage-base 共发布 18 个版本,首次发布于 2017/04/05;过去 12 个月发布了 9 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
3.0.3latest2026/11/04今天
3.0.22026/10/1321 天前
3.0.12026/10/0728 天前
3.0.02026/07/253 个月前
2.1.52026/06/254 个月前
2.1.22026/06/254 个月前

关于 ghost-storage-base 的常见问题

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 和提交记录判断。