fs-extra是fs的一个扩展,提供了非常多的便利API,并且继承了fs所有方法和为fs方法添加了promise的支持。
它应该是 fs 的替代品。
安装
undefined
npm install fs-extra -S
用法
应该总是fs-extra代替fs使用,所有fs方法都附在fs-extra,fs如果未传递回调,则所有方法都将返回promise 不再需要这个
jsx
const fs = require('fs');
你现在可以这样做
jsx
const fs = require('fs-extra');
如果你希望明确表示你在使用fs-extra,可以将fs标识符改为fse
jsx
const fse = require('fs-extra')
你可以保留两者使用,但它是多余的,因为 fs-extra 继承了fs
jsx
const fs = require('fs');
const fse = require('fs-extra')
Sync vs Async vs Async/Await
大多数方法默认为异步,如果未传递回调,则所有异步方法将返回一个promise。 一个典型的例子:
tsx
const fs = require('fs-extra')
// 异步方法,返回promise
fs.copy('/tmp/myfile', '/tmp/mynewfile')
.then(() => console.log('success!'))
.catch(err => console.error(err))
// 异步方法,回调函数
fs.copy('/tmp/myfile', '/tmp/mynewfile', err => {
if (err) return console.error(err)
console.log('success!')
})
// 同步方法,注意必须使用try catch包裹着才能捕获错误
try {
fs.copySync('/tmp/myfile', '/tmp/mynewfile')
console.log('success!')
} catch (err) {
console.error(err)
}
// Async/Await:
async function copyFiles () {
try {
await fs.copy('/tmp/myfile', '/tmp/mynewfile')
console.log('success!')
} catch (err) {
console.error(err)
}
}
copyFiles()
API Methods
下面的所有方法都是fs-extra扩展方法
async
- copy
- emptyDir
- ensureFile
- ensureDir
- ensureLink
- ensureSymlink
- mkdirp
- mkdirs
- move
- outputFile
- outputJson
- pathExists
- readJson
- remove
- writeJson
sync
- copySync
- emptyDirSync
- ensureFileSync
- ensureDirSync
- ensureLinkSync
- ensureSymlinkSync
- mkdirpSync
- mkdirsSync
- moveSync
- outputFileSync
- outputJsonSync
- pathExistsSync
- readJsonSync
- removeSync
- writeJsonSync