Introduction to fs-extra
fs-extra is a popular Node.js package that extends the native file system module fs with additional convenient methods. It provides dozens of useful APIs that make file manipulation tasks easier and more intuitive in Node.js.
Key Features of fs-extra
copy()
: Copies a file or directory.ensureDir()
: Ensures that a directory exists. If the directory structure does not exist, it creates it.emptyDir()
: Empties a directory, but does not delete it.move()
: Moves a file or directory.remove()
: Removes a file or directory.readJson()
: Reads a JSON file and parses it into an object.writeJson()
: Writes an object to a JSON file.readFile()
: Reads the contents of a file.writeFile()
: Writes data to a file, replacing the file if it already exists.outputFile()
: Ensures that the directory exists and writes data to a file, replacing the file if it already exists.pathExists()
: Checks if a path exists.
API Examples
copy()
const fs = require('fs-extra'); fs.copy('/tmp/myfile', '/tmp/mynewfile') .then(() => console.log('File copied!')) .catch(err => console.error(err));
ensureDir()
const fs = require('fs-extra'); fs.ensureDir('/tmp/some/dir') .then(() => console.log('Directory ensured!')) .catch(err => console.error(err));
emptyDir()
const fs = require('fs-extra'); fs.emptyDir('/tmp/some/dir') .then(() => console.log('Directory emptied!')) .catch(err => console.error(err));
move()
const fs = require('fs-extra'); fs.move('/tmp/oldPath', '/tmp/newPath') .then(() => console.log('File moved!')) .catch(err => console.error(err));
remove()
const fs = require('fs-extra'); fs.remove('/tmp/myfile') .then(() => console.log('File removed!')) .catch(err => console.error(err));
readJson()
const fs = require('fs-extra'); fs.readJson('/tmp/myfile.json') .then(obj => console.log(obj)) .catch(err => console.error(err));
writeJson()
const fs = require('fs-extra'); fs.writeJson('/tmp/myfile.json', { name: 'JP' }) .then(() => console.log('JSON file written!')) .catch(err => console.error(err));
readFile()
const fs = require('fs-extra'); fs.readFile('/tmp/myfile.txt', 'utf8') .then(data => console.log(data)) .catch(err => console.error(err));
writeFile()
const fs = require('fs-extra'); fs.writeFile('/tmp/myfile.txt', 'Hello, world!') .then(() => console.log('File written!')) .catch(err => console.error(err));
outputFile()
const fs = require('fs-extra'); fs.outputFile('/tmp/myfile.txt', 'Some text') .then(() => console.log('File output!')) .catch(err => console.error(err));
pathExists()
const fs = require('fs-extra'); fs.pathExists('/tmp/myfile') .then(exists => console.log(exists ? 'Path exists!' : 'Path does not exist!')) .catch(err => console.error(err));
App Example
Here’s a simple Node.js application that makes use of multiple fs-extra APIs to manage a JSON configuration file:
const fs = require('fs-extra'); const configPath = '/tmp/config.json'; async function manageConfig() { // Ensure the config directory exists await fs.ensureDir('/tmp'); // Check if config file exists const configExists = await fs.pathExists(configPath); // If config file does not exist, create it if (!configExists) { await fs.writeJson(configPath, { app: 'myApp', version: '1.0.0' }); console.log('Config file created!'); } else { // Read the existing config file const config = await fs.readJson(configPath); console.log('Config file read:', config); // Update the config file config.version = '1.1.0'; await fs.writeJson(configPath, config); console.log('Config file updated!'); } // Move the config file to a new directory await fs.move(configPath, '/tmp/newConfig/config.json'); console.log('Config file moved!'); // Remove the old config path if it exists await fs.remove('/tmp/config.json'); console.log('Old config path removed!'); } manageConfig().catch(err => console.error(err));
By leveraging fs-extra, you can easily handle file operations with consistent and reliable code, allowing you to focus on building your application rather than managing the file system manually.
Hash: baa7356b4f0c2575dee44bd5f6d501229f80ea3a4d3bcaa5e3d2a118df6bd4ee