@capgo/capacitor-file

中文文档
8.0.24发布于 2026/10/15MPL-2.0TypeScriptESM + CJS零依赖构建来源已验证近 30 天下载 4.2万

Capacitor plugin for file system operations, compatible with Cordova File plugin API

原始使用文档
文档目录48 节
  1. ➡️ Get started for free
  2. Key features
  3. Why Capacitor File?
  4. Documentation
  5. Compatibility
  6. Install
  7. Android media permissions and Google Play review
  8. API
  9. requestFileSystem(...)
  10. resolveLocalFileSystemURL(...)
  11. getFile(...)
  12. getDirectory(...)
  13. readFile(...)
  14. readAsDataURL(...)
  15. writeFile(...)
  16. appendFile(...)
  17. deleteFile(...)
  18. mkdir(...)
  19. rmdir(...)
  20. readdir(...)
  21. stat(...)
  22. getMetadata(...)
  23. rename(...)
  24. move(...)
  25. copy(...)
  26. exists(...)
  27. getUri(...)
  28. truncate(...)
  29. getDirectories()
  30. getFreeDiskSpace()
  31. addListener('readProgress', ...)
  32. addListener('writeProgress', ...)
  33. removeAllListeners()
  34. getPluginVersion()
  35. checkPermissions()
  36. requestPermissions(...)
  37. Interfaces
  38. Type Aliases
  39. Enums
  40. Usage Examples
  41. Reading a File
  42. Writing a File
  43. Creating and Reading Directories
  44. Copying and Moving Files
  45. Checking File Existence
  46. Getting File Information
  47. Migration from cordova-plugin-file
  48. License

@capgo/capacitor-file

Work with the device file system from your Capacitor app using an API compatible with cordova-plugin-file. Read, write, copy and move files and folders on iOS, Android and the web.

Capgo - Build Capacitor apps with AI, ship updates instantly

Capgo: push fixes to your Capacitor users in minutes, build signed iOS and Android apps without a Mac, and roll back in one click.

➡️ Get started for free

14-day unlimited free trial. No credit card required

🤖 Building with an AI coding agent? Install Capgo skills so Claude Code, Codex, Cursor, Copilot, or Gemini CLI know how to install and use @capgo/capacitor-file in your Capacitor app: npx skills add Cap-go/capgo-skills. Then ask your agent: "Add @capgo/capacitor-file to my Capacitor app and wire it up." Agent setup guides · Hosted MCP

@capgo/capacitor-file for Capacitor apps

Key features

  • Read and write: readFile(), readAsDataURL(), writeFile(), appendFile() and truncate().
  • Files and folders: mkdir(), rmdir(), readdir(), copy(), move(), rename() and deleteFile().
  • Metadata: stat(), exists(), getUri() and getFreeDiskSpace().
  • Cordova compatible: requestFileSystem(), resolveLocalFileSystemURL(), getFile() and getDirectory() ease migration from cordova-plugin-file.
  • Permissions: checkPermissions() and requestPermissions() for storage access.
  • Platforms: iOS, Android and Web. Web keeps the core file operations in browser storage.

Why Capacitor File?

A reliable native file system plugin built for Capacitor apps with advanced features not available in the official Filesystem plugin:

  • Partial file reading - Read specific portions of files with offset and length parameters (great for large files)
  • Random access writes - Write at specific byte positions with position parameter
  • Cordova compatible API - Familiar methods like requestFileSystem(), resolveLocalFileSystemURL(), getFile(), and getDirectory()
  • All platform directories - Access Documents, Library, Cache, External storage and more
  • Progress events - Monitor read/write operations with real-time progress updates
  • Free and open source - No paid services required

Perfect for apps that need to work with large files, migrate from Cordova, or require random access file operations.

Documentation

The most complete doc is available here: https://capgo.app/docs/plugins/file/

Compatibility

Plugin versionCapacitor compatibilityMaintained
v8.*.*v8.*.*✅
v7.*.*v7.*.*On demand
v6.*.*v6.*.*❌
v5.*.*v5.*.*❌

Note: The major version of this plugin follows the major version of Capacitor. Use the version that matches your Capacitor installation (e.g., plugin v8 for Capacitor 8). Only the latest major version is actively maintained.

Install

You can use our AI-Assisted Setup to install the plugin. Add the Capgo skills to your AI tool using the following command:

npx skills add https://github.com/cap-go/capacitor-skills --skill capacitor-plugins

Then use the following prompt:

Use the `capacitor-plugins` skill from `cap-go/capacitor-skills` to install the `@capgo/capacitor-file` plugin in my project.

If you prefer Manual Setup, install the plugin by running the following commands and follow the platform-specific instructions below:

npm install @capgo/capacitor-file
npx cap sync

Android media permissions and Google Play review

On Android 13+ this plugin can request broad media permissions such as READ_MEDIA_IMAGES and READ_MEDIA_VIDEO when you call requestPermissions() for access outside your app's private directories.

Google Play only allows these photo and video permissions when access is directly related to your app's core purpose and requires persistent or frequent access to photos or videos in shared storage. If your app only needs one-time or infrequent media access, such as importing a profile picture, selecting an attachment, or choosing a file to upload, Google expects you to use a system picker instead.

Before publishing an app that requests these permissions:

  • Make sure photo or video library access is part of your app's core functionality.
  • Be ready to justify the permission usage in Play Console review.
  • Remove broad media permissions if the app can work with user-selected files only.

If Google Play review rejects the app with a message like Photo and Video Permissions policy: Permission use is not directly related to your app's core purpose, use @capgo/capacitor-file-picker or another system picker flow instead of requesting broad photo/video permissions.

See Google's Photo and Video Permissions policy for the current review requirements.

API

Capacitor File Plugin Implements file system operations similar to the Cordova File plugin

requestFileSystem(...)

requestFileSystem(options: RequestFileSystemOptions) => Promise<FileSystem>

Request a file system.

ParamTypeDescription
optionsRequestFileSystemOptions- File system request options

Returns: Promise<FileSystem>


resolveLocalFileSystemURL(...)

resolveLocalFileSystemURL(options: ResolveURLOptions) => Promise<Entry>

Resolve a file URL to an entry.

ParamTypeDescription
optionsResolveURLOptions- URL to resolve

Returns: Promise<Entry>


getFile(...)

getFile(options: GetFileOptions) => Promise<FileEntry>

Get a file entry.

ParamTypeDescription
optionsGetFileOptions- File path and options

Returns: Promise<FileEntry>


getDirectory(...)

getDirectory(options: GetDirectoryOptions) => Promise<DirectoryEntry>

Get a directory entry.

ParamTypeDescription
optionsGetDirectoryOptions- Directory path and options

Returns: Promise<DirectoryEntry>


readFile(...)

readFile(options: ReadFileOptions) => Promise<ReadFileResult>

Read a file as text or base64.

ParamTypeDescription
optionsReadFileOptions- Read options

Returns: Promise<ReadFileResult>


readAsDataURL(...)

readAsDataURL(options: ReadFileOptions) => Promise<{ data: string; }>

Read a file as a data URL (base64 with MIME type prefix).

ParamTypeDescription
optionsReadFileOptions- Read options

Returns: Promise<{ data: string; }>


writeFile(...)

writeFile(options: WriteFileOptions) => Promise<WriteFileResult>

Write data to a file.

ParamTypeDescription
optionsWriteFileOptions- Write options

Returns: Promise<WriteFileResult>


appendFile(...)

appendFile(options: WriteFileOptions) => Promise<WriteFileResult>

Append data to a file.

ParamTypeDescription
optionsWriteFileOptions- Write options (append is forced to true)

Returns: Promise<WriteFileResult>


deleteFile(...)

deleteFile(options: DeleteFileOptions) => Promise<void>

Delete a file.

ParamTypeDescription
optionsDeleteFileOptions- Delete options

mkdir(...)

mkdir(options: MkdirOptions) => Promise<void>

Create a directory.

ParamTypeDescription
optionsMkdirOptions- Directory creation options

rmdir(...)

rmdir(options: DeleteDirectoryOptions) => Promise<void>

Delete a directory.

ParamTypeDescription
optionsDeleteDirectoryOptions- Delete options

readdir(...)

readdir(options: ReaddirOptions) => Promise<ReaddirResult>

Read directory contents.

ParamTypeDescription
optionsReaddirOptions- Read options

Returns: Promise<ReaddirResult>


stat(...)

stat(options: StatOptions) => Promise<StatResult>

Get metadata about a file or directory.

ParamTypeDescription
optionsStatOptions- Stat options

Returns: Promise<StatResult>


getMetadata(...)

getMetadata(options: StatOptions) => Promise<Metadata>

Get metadata about a file or directory. Alias for stat().

ParamTypeDescription
optionsStatOptions- Stat options

Returns: Promise<Metadata>


rename(...)

rename(options: RenameOptions) => Promise<void>

Rename or move a file or directory.

ParamTypeDescription
optionsRenameOptions- Rename options

move(...)

move(options: RenameOptions) => Promise<void>

Move a file or directory. Alias for rename().

ParamTypeDescription
optionsRenameOptions- Move options

copy(...)

copy(options: CopyOptions) => Promise<CopyResult>

Copy a file or directory.

ParamTypeDescription
optionsCopyOptions- Copy options

Returns: Promise<CopyResult>


exists(...)

exists(options: ExistsOptions) => Promise<ExistsResult>

Check if a file or directory exists.

ParamTypeDescription
optionsExistsOptions- Check options

Returns: Promise<ExistsResult>


getUri(...)

getUri(options: GetUriOptions) => Promise<GetUriResult>

Get the URI for a file.

ParamTypeDescription
optionsGetUriOptions- URI options

Returns: Promise<GetUriResult>


truncate(...)

truncate(options: TruncateOptions) => Promise<void>

Truncate a file to a specified size.

ParamTypeDescription
optionsTruncateOptions- Truncate options

getDirectories()

getDirectories() => Promise<FileDirectories>

Get all known file system directories.

Returns: Promise<FileDirectories>


getFreeDiskSpace()

getFreeDiskSpace() => Promise<{ free: number; }>

Get the free disk space in bytes.

Returns: Promise<{ free: number; }>


addListener('readProgress', ...)

addListener(eventName: 'readProgress', listenerFunc: (progress: ProgressEvent) => void) => Promise<PluginListenerHandle>

Listen for read progress events.

ParamTypeDescription
eventName'readProgress'- Must be 'readProgress'
listenerFunc(progress: ProgressEvent) => void- Callback receiving progress updates

Returns: Promise<PluginListenerHandle>


addListener('writeProgress', ...)

addListener(eventName: 'writeProgress', listenerFunc: (progress: ProgressEvent) => void) => Promise<PluginListenerHandle>

Listen for write progress events.

ParamTypeDescription
eventName'writeProgress'- Must be 'writeProgress'
listenerFunc(progress: ProgressEvent) => void- Callback receiving progress updates

Returns: Promise<PluginListenerHandle>


removeAllListeners()

removeAllListeners() => Promise<void>

Remove all event listeners.


getPluginVersion()

getPluginVersion() => Promise<{ version: string; }>

Get the plugin version.

Returns: Promise<{ version: string; }>


checkPermissions()

checkPermissions() => Promise<FilePermissionStatus>

Check the current permission status for file operations. On Android, this checks for external storage permissions. On iOS and web, this always returns 'granted' as no special permissions are needed.

Returns: Promise<FilePermissionStatus>


requestPermissions(...)

requestPermissions(options?: PermissionRequestOptions | undefined) => Promise<FilePermissionStatus>

Request permissions for file operations. On Android, this requests external storage permissions needed for accessing files outside the app's private directories. On iOS and web, this always returns 'granted' as no special permissions are needed.

ParamTypeDescription
optionsPermissionRequestOptions- Optional configuration for the permission request

Returns: Promise<FilePermissionStatus>


Interfaces

FileSystem

Represents a file system

PropTypeDescription
namestringThe name of the file system
rootDirectoryEntryThe root directory of the file system

DirectoryEntry

Represents a directory entry

PropTypeDescription
isFilefalseTrue if this is a file
isDirectorytrueTrue if this is a directory

RequestFileSystemOptions

Options for requesting a file system

PropTypeDescription
typeFileSystemTypeThe type of file system to request
sizenumberRequested size in bytes (may not be enforced on all platforms)

Entry

Represents a file or directory entry

PropTypeDescription
isFilebooleanTrue if this is a file
isDirectorybooleanTrue if this is a directory
namestringThe name of the file or directory
fullPathstringThe full path relative to the filesystem root
nativeURLstringThe native file:// URI

ResolveURLOptions

Options for resolving a URL to an entry

PropTypeDescription
urlstringThe URL to resolve (file:// or cdvfile://)

FileEntry

Represents a file entry

PropTypeDescription
isFiletrueTrue if this is a file
isDirectoryfalseTrue if this is a directory

GetFileOptions

Options for getting a file

PropTypeDescription
pathstringPath to the file
directoryDirectoryBase directory
optionsGetOptionsOptions for creating the file

GetOptions

Options for creating or getting files/directories

PropTypeDescription
createbooleanCreate the file/directory if it doesn't exist
exclusivebooleanIf true and create is true, throw error if file/directory already exists

GetDirectoryOptions

Options for getting a directory

PropTypeDescription
pathstringPath to the directory
directoryDirectoryBase directory
optionsGetOptionsOptions for creating the directory

ReadFileResult

Result of reading a file

PropTypeDescription
datastringFile contents as string (text) or base64 (binary)

ReadFileOptions

Options for reading a file

PropTypeDescription
pathstringPath to the file
directoryDirectoryBase directory
encodingEncodingEncoding for text files (omit for binary/base64)
offsetnumberByte offset to start reading from (default: 0)
lengthnumberNumber of bytes to read (default: read to end of file)

WriteFileResult

Result of writing a file

PropTypeDescription
uristringThe URI of the written file

WriteFileOptions

Options for writing a file

PropTypeDescription
pathstringPath to the file
directoryDirectoryBase directory
datastringData to write (string for text, base64 for binary)
encodingEncodingEncoding for text files
appendbooleanIf true, append to existing file instead of overwriting
recursivebooleanCreate intermediate directories if they don't exist
positionnumberByte position to start writing at (for random access writes). If not specified, writes from beginning or appends based on 'append' flag

DeleteFileOptions

Options for deleting a file or directory

PropTypeDescription
pathstringPath to the file or directory
directoryDirectoryBase directory

MkdirOptions

Options for creating a directory

PropTypeDescription
pathstringPath to the directory
directoryDirectoryBase directory
recursivebooleanCreate intermediate directories if they don't exist

DeleteDirectoryOptions

Options for deleting a directory recursively

PropTypeDescription
pathstringPath to the directory
directoryDirectoryBase directory
recursivebooleanIf true, delete contents recursively

ReaddirResult

Result of reading a directory

PropTypeDescription
entriesEntry[]List of entries in the directory

ReaddirOptions

Options for reading a directory

PropTypeDescription
pathstringPath to the directory
directoryDirectoryBase directory

StatResult

Result of getting file/directory information

PropTypeDescription
type'file' | 'directory'Type: 'file' or 'directory'
sizenumberSize in bytes
ctimenumberCreation time (if available)
mtimenumberLast modification time
uristringThe URI

StatOptions

Options for getting file information

PropTypeDescription
pathstringPath to the file or directory
directoryDirectoryBase directory

Metadata

Represents metadata about a file or directory

PropTypeDescription
modificationTimenumberLast modification date
sizenumberSize in bytes (0 for directories)

RenameOptions

Options for renaming/moving a file or directory

PropTypeDescription
fromstringCurrent path
tostringNew path
directoryDirectoryBase directory for 'from' path
toDirectoryDirectoryBase directory for 'to' path

CopyResult

Result of copy operation

PropTypeDescription
uristringThe URI of the copied file

CopyOptions

Options for copying a file or directory

PropTypeDescription
fromstringSource path
tostringDestination path
directoryDirectoryBase directory for source
toDirectoryDirectoryBase directory for destination

ExistsResult

Result of existence check

PropTypeDescription
existsbooleanTrue if the file or directory exists
type'file' | 'directory'Type if exists: 'file' or 'directory'

ExistsOptions

Options for checking if a file or directory exists

PropTypeDescription
pathstringPath to check
directoryDirectoryBase directory

GetUriResult

Result of getting a URI

PropTypeDescription
uristringThe native URI

GetUriOptions

Options for getting the URI of a file

PropTypeDescription
pathstringPath to the file
directoryDirectoryBase directory

TruncateOptions

Options for truncating a file

PropTypeDescription
pathstringPath to the file
directoryDirectoryBase directory
sizenumberSize to truncate to (default: 0)

FileDirectories

Known file system directories exposed by the plugin

PropTypeDescription
applicationDirectorystringApplication installation directory (read-only)
applicationStorageDirectorystringApplication storage directory root
dataDirectorystringPersistent private data directory
cacheDirectorystringCache directory
externalRootDirectorystringExternal root directory (Android)
externalApplicationStorageDirectorystringExternal application storage directory (Android)
externalDataDirectorystringExternal data directory (Android)
externalCacheDirectorystringExternal cache directory (Android)
documentsDirectorystringDocuments directory (iOS)
syncedDataDirectorystringSynced data directory (iOS iCloud)
libraryDirectorystringLibrary directory (iOS)
tempDirectorystringTemporary directory

PluginListenerHandle

PropType
remove() => Promise<void>

ProgressEvent

Progress event for file operations

PropTypeDescription
loadednumberBytes loaded so far
totalnumberTotal bytes (if known)
lengthComputablebooleanWhether total is computable

FilePermissionStatus

Permission status for file operations

PropTypeDescription
publicStoragePermissionStatePermission state for reading public/external storage

PermissionRequestOptions

Options for requesting permissions

PropTypeDescriptionDefault
showSettingsAlertbooleanIf true, shows an alert to open settings when permission is deniedfalse
titlestringTitle for the settings alert dialog
messagestringMessage for the settings alert dialog
openSettingsButtonTitlestringText for the "Open Settings" button
cancelButtonTitlestringText for the "Cancel" button

Type Aliases

PermissionState

'prompt' | 'prompt-with-rationale' | 'granted' | 'denied'

Enums

FileSystemType

MembersValue
TEMPORARY0
PERSISTENT1

Directory

MembersValueDescription
Documents'DOCUMENTS'The Documents directory (iOS) / files directory (Android) Persistent, user-visible, backed up
Data'DATA'The Data directory Persistent private data storage
Library'LIBRARY'The Library directory (iOS) / files directory (Android) Persistent but not visible to user
Cache'CACHE'The Cache directory Temporary cache, may be cleared by OS
External'EXTERNAL'External storage (Android only) SD card or external storage root
ExternalStorage'EXTERNAL_STORAGE'External storage data directory (Android only)
Application'APPLICATION'Application bundle/assets directory (read-only)

Encoding

MembersValue
UTF8'utf8'
ASCII'ascii'
UTF16'utf16'

Usage Examples

Reading a File

import { CapacitorFile, Directory, Encoding } from '@capgo/capacitor-file';

// Read as text
const result = await CapacitorFile.readFile({
  path: 'my-file.txt',
  directory: Directory.Documents,
  encoding: Encoding.UTF8,
});
console.log(result.data);

// Read as base64 (binary)
const binaryResult = await CapacitorFile.readFile({
  path: 'image.png',
  directory: Directory.Documents,
});
console.log(binaryResult.data); // base64 string

// Read partial file (offset and length) - great for large files!
const partialResult = await CapacitorFile.readFile({
  path: 'large-file.bin',
  directory: Directory.Documents,
  offset: 1024,    // Start at byte 1024
  length: 512,     // Read 512 bytes
});
console.log(partialResult.data); // base64 encoded chunk

Writing a File

import { CapacitorFile, Directory, Encoding } from '@capgo/capacitor-file';

// Write text
await CapacitorFile.writeFile({
  path: 'my-file.txt',
  directory: Directory.Documents,
  data: 'Hello, World!',
  encoding: Encoding.UTF8,
  recursive: true, // Create parent directories if needed
});

// Write binary (base64)
await CapacitorFile.writeFile({
  path: 'image.png',
  directory: Directory.Documents,
  data: 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==',
});

// Write at specific position (random access) - great for patching files!
await CapacitorFile.writeFile({
  path: 'data.bin',
  directory: Directory.Documents,
  data: 'PATCHED',
  encoding: Encoding.UTF8,
  position: 100,  // Write starting at byte 100
});

Creating and Reading Directories

import { CapacitorFile, Directory } from '@capgo/capacitor-file';

// Create a directory
await CapacitorFile.mkdir({
  path: 'my-folder/sub-folder',
  directory: Directory.Documents,
  recursive: true,
});

// Read directory contents
const result = await CapacitorFile.readdir({
  path: 'my-folder',
  directory: Directory.Documents,
});

for (const entry of result.entries) {
  console.log(`${entry.name} - ${entry.isFile ? 'file' : 'directory'}`);
}

Copying and Moving Files

import { CapacitorFile, Directory } from '@capgo/capacitor-file';

// Copy a file
await CapacitorFile.copy({
  from: 'original.txt',
  to: 'backup/original-copy.txt',
  directory: Directory.Documents,
  toDirectory: Directory.Documents,
});

// Move/rename a file
await CapacitorFile.rename({
  from: 'old-name.txt',
  to: 'new-name.txt',
  directory: Directory.Documents,
});

Checking File Existence

import { CapacitorFile, Directory } from '@capgo/capacitor-file';

const result = await CapacitorFile.exists({
  path: 'my-file.txt',
  directory: Directory.Documents,
});

if (result.exists) {
  console.log(`Found ${result.type}`);
}

Getting File Information

import { CapacitorFile, Directory } from '@capgo/capacitor-file';

const stat = await CapacitorFile.stat({
  path: 'my-file.txt',
  directory: Directory.Documents,
});

console.log(`Size: ${stat.size} bytes`);
console.log(`Modified: ${new Date(stat.mtime)}`);
console.log(`Type: ${stat.type}`);

Migration from cordova-plugin-file

This plugin provides similar functionality to cordova-plugin-file with a more modern API. Here's a quick comparison:

Cordova File PluginThis Plugin
window.resolveLocalFileSystemURL()CapacitorFile.resolveLocalFileSystemURL()
directoryEntry.getFile()CapacitorFile.getFile()
directoryEntry.getDirectory()CapacitorFile.getDirectory()
fileReader.readAsText()CapacitorFile.readFile({ encoding: Encoding.UTF8 })
fileReader.readAsDataURL()CapacitorFile.readAsDataURL()
fileWriter.write()CapacitorFile.writeFile()
entry.remove()CapacitorFile.deleteFile()
entry.moveTo()CapacitorFile.move()
entry.copyTo()CapacitorFile.copy()
directoryEntry.removeRecursively()CapacitorFile.rmdir({ recursive: true })
cordova.file.dataDirectoryDirectory.Data
cordova.file.documentsDirectoryDirectory.Documents
cordova.file.cacheDirectoryDirectory.Cache

License

MPL-2.0

版本与发布记录

@capgo/capacitor-file 共发布 26 个版本,首次发布于 2025/11/29;过去 12 个月发布了 26 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
8.0.24latest2026/10/1525 天前
8.0.232026/10/1327 天前
8.0.222026/10/091 个月前
8.0.212026/10/091 个月前
8.0.202026/10/081 个月前
8.0.192026/10/081 个月前

关于 @capgo/capacitor-file 的常见问题

@capgo/capacitor-file 是什么?

Capacitor plugin for file system operations, compatible with Cordova File plugin API

如何安装 @capgo/capacitor-file?

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

@capgo/capacitor-file 支持 TypeScript 吗?

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

@capgo/capacitor-file 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@capgo/capacitor-file 可以商用吗?

@capgo/capacitor-file 使用 MPL-2.0 许可。弱 Copyleft:可以商用,也可以和闭源代码一起使用;但如果分发时修改了 MPL 授权的文件,这些文件的修改需以 MPL 开源。以上为概括,不构成法律意见,请以许可原文为准。

@capgo/capacitor-file 的下载量有多少?

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

@capgo/capacitor-file 还在维护吗?

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