# hexo-fs

> File system module for Hexo.

Latest version **5.0.1** (published 2025-10-23) · MIT license · 0 weekly downloads

## Install

```sh
npm install hexo-fs
pnpm add hexo-fs
yarn add hexo-fs
bun add hexo-fs
```

## Health

**Score 60/100 (C)** — status: stable.

Positive: has types; no vulnerabilities; high maintenance score; high quality score.

Warnings: low downloads; no esm support.

## Facts

| | |
|---|---|
| Version | 5.0.1 |
| Published | 2025-10-23 |
| First published | 2014-12-06 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Node | >=18 |
| Dependencies | 4 |
| Unpacked size | 51.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 41 |
| Author | Tommy Chen |
| Maintainers | ertrzyiks, abnerchou, tommy351, hexobot, jlhwung, tomap, curben, yoshinorin |
| Keywords | file, file system, fs, hexo |

## Links

- npm: https://www.npmjs.com/package/hexo-fs
- Repository: https://github.com/hexojs/hexo-fs
- Homepage: https://hexo.io/
- Issues: https://github.com/hexojs/hexo-fs/issues
- npm.io page: https://npm.io/package/hexo-fs

## Dependencies (4)

- [bluebird](https://npm.io/package/bluebird.md) ^3.7.2
- [chokidar](https://npm.io/package/chokidar.md) ^4.0.3
- [hexo-util](https://npm.io/package/hexo-util.md) ^3.3.0
- [graceful-fs](https://npm.io/package/graceful-fs.md) ^4.2.10

## Alternatives

- [unionfs](https://npm.io/package/unionfs.md) — 2.2M weekly downloads
- [path-starts-with](https://npm.io/package/path-starts-with.md) — 35.9K weekly downloads
- [redzip](https://npm.io/package/redzip.md) — 1.2K weekly downloads
- [vscode-anymatch](https://npm.io/package/vscode-anymatch.md) — 848 weekly downloads
- [@ledgerhq/coin-filecoin](https://npm.io/package/@ledgerhq/coin-filecoin.md) — 793 weekly downloads

## Recent versions

- 5.0.1 (latest) — 2025-10-23
- 2.0.1 (legacy) — 2020-05-13
- 5.0.0 — 2024-12-28
- 4.1.3 — 2024-04-14
- 4.1.2 — 2024-04-14
- 4.1.1 — 2022-11-05
- 4.1.0 — 2022-11-03
- 4.0.0 — 2022-09-27
- 3.1.0 — 2020-05-22
- 3.0.1 — 2020-04-27
- 3.0.0 — 2020-04-25
- 2.0.0 — 2019-08-31
- 1.0.2 — 2018-12-20
- 1.0.1 — 2018-11-25
- 1.0.0 — 2018-10-08
- … 19 more at https://npm.io/package/hexo-fs/versions

## README

# hexo-fs

[![CI](https://github.com/hexojs/hexo-fs/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/hexojs/hexo-fs/actions/workflows/ci.yml)
[![NPM version](https://badge.fury.io/js/hexo-fs.svg)](https://www.npmjs.com/package/hexo-fs)
[![Coverage Status](https://coveralls.io/repos/github/hexojs/hexo-fs/badge.svg)](https://coveralls.io/github/hexojs/hexo-fs)

File system module for [Hexo].

## Features

- Support for both Promise and callback interface.
- Use [graceful-fs] to avoid EMFILE error and various improvements.
- Use [chokidar] for consistent file watching.

## Installation

``` bash
$ npm install hexo-fs --save
```

## Usage

``` js
const fs = require('hexo-fs');
```

> Some methods in the original fs module are not listed below, but they're available in hexo-fs.

### exists(path)

Test whether or not the given `path` exists by checking with the file system.

### existsSync(path)

Synchronous version of `fs.exists`.

### mkdirs(path)

Creates a directory and its parent directories if they does not exist.

### mkdirsSync(path)

Synchronous version of `fs.mkdirs`.

### writeFile(path, data, [options])

Writes data to a file.

Option | Description | Default
--- | --- | ---
`encoding` | File encoding | utf8
`mode` | Mode | 438 (0666 in octal)
`flag` | Flag | w

### writeFileSync(path, data, [options])

Synchronous version of `fs.writeFile`.

### appendFile(path, data, [options])

Appends data to a file.

Option | Description | Default
--- | --- | ---
`encoding` | File encoding | utf8
`mode` | Mode | 438 (0666 in octal)
`flag` | Flag | w

### appendFileSync(path, data, [options])

Synchronous version of `fs.appendFile`.

### copyFile(src, dest, [callback])

Copies a file from `src` to `dest`.

### copyDir(src, dest, [options])

Copies a directory from `src` to `dest`. It returns an array of copied files.

Option | Description | Default
--- | --- | ---
`ignoreHidden` | Ignore hidden files | true
`ignorePattern` | Ignore files which pass the regular expression |

### listDir(path, [options])

Lists files in a directory.

Option | Description | Default
--- | --- | ---
`ignoreHidden` | Ignore hidden files | true
`ignorePattern` | Ignore files which pass the regular expression |

### listDirSync(path, [options])

Synchronous version of `fs.listDir`.

### readFile(path, [options])

Reads the entire contents of a file.

Option | Description | Default
--- | --- | ---
`encoding` | File encoding | utf8
`flag` | Flag | r
`escape` | Escape UTF BOM and line ending in the content | true

### readFileSync(path, [options])

Synchronous version of `fs.readFile`.

### emptyDir(path, [options])

Deletes all files in a directory. It returns an array of deleted files.

Option | Description | Default
--- | --- | ---
`ignoreHidden` | Ignore hidden files | true
`ignorePattern` | Ignore files which pass the regular expression |
`exclude` | Ignore files in the array |

### emptyDirSync(path, [options])

Synchronous version of `fs.emptyDir`.

### rmdir(path)

Removes a directory and all files in it.

### rmdirSync(path)

Synchronous version of `fs.rmdir`.

### watch(path, [options])

Watches changes of a file or a directory.

See [Chokidar API](https://github.com/paulmillr/chokidar#api) for more info.

### ensurePath(path)

Ensures the given path is available to use or appends a number to the path.

### ensurePathSync(path)

Synchronous version of `fs.ensurePath`.

### ensureWriteStream(path, [options])

Creates the parent directories if they does not exist and returns a writable stream.

### ensureWriteStreamSync(path, [options])

Synchronous version of `fs.ensureWriteStream`.

## License

MIT

[graceful-fs]: https://github.com/isaacs/node-graceful-fs
[Hexo]: https://hexo.io/
[chokidar]: https://github.com/paulmillr/chokidar

---
_Source: https://npm.io/package/hexo-fs · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
