Node.jsでディレクトリを再帰的に作成/削除するためのnpmパッケージとしてmkdirpやrimrafがありますが、現代のNode.js(v14.14.0以降)において、それらはもはや必要ありません。
ディレクトリを再帰的に作成する方法
mkdir -pのようにディレクトリを再帰的に作成するには、fs.mkdirのrecursiveオプションを使います。
コールバックAPIを使う場合:
const fs = require('fs')
const dir = process.argv[2]
console.log(`try creating ${dir} directory`)
fs.mkdir(dir, { recursive: true }, (e) => {
if (e) {
console.error(e)
} else {
console.log(`created ${dir} directory`)
}
})
Promise APIを使う場合:
const fs = require('fs').promises
const dir = process.argv[2]
console.log(`try creating ${dir} directory`)
fs.mkdir(dir, { recursive: true })
.then(() => console.log(`created ${dir} directory`))
.catch((e) => console.error(e))
なお、fs.mkdirにrecursiveオプションが追加されたのはv10.12.0です。
ディレクトリを再帰的に削除する方法
rm -rfのようにディレクトリを再帰的に削除するには、fs.rmのrecursiveオプションとforceオプションを使います。
コールバックAPIを使う場合:
const fs = require('fs')
const dir = process.argv[2]
console.log(`try deleting ${dir} directory`)
fs.rm(dir, { recursive: true, force: true }, (e) => {
if (e) {
console.error(e)
} else {
console.log(`deleted ${dir} directory`)
}
})
Promise APIを使う場合:
const fs = require('fs').promises
const dir = process.argv[2]
console.log(`try deleting ${dir} directory`)
fs.rm(dir, { recursive: true, force: true })
.then(() => console.log(`deleted ${dir} directory`))
.catch((e) => console.error(e))
なお、fs.rmが追加されたのはv14.14.0です。
↧