Trabalho com pastas em Node.js

O módulo nativo fs do Node.js fornece diversos métodos versáteis para trabalhar com pastas.

Valide se uma pasta existe

Utilize fs.access() para validar se a pasta existe e o Node.js pode acessá-la com suas permissões.

Crie uma nova pasta

Utilize fs.mkdir() ou fs.mkdirSync() para criar uma nova pasta.

const fs = require('fs')
const folderName = '/Users/pauloluan/test'
try {
if (!fs.existsSync(folderName)) {
fs.mkdirSync(folderName)
}
} catch (err) {
console.error(err)
}

Leia o conteúdo de um diretório

Utilize fs.readdir() ou fs.readdirSync() para ler os conteúdos de um diretório.

Esse trecho de código lê o conteúdo de uma pasta, ambos arquivos e subpastas, e retorna o caminho relativo deles:

const fs = require('fs')
const path = require('path')
const folderPath = '/Users/pauloluan'
fs.readdirSync(folderPath)

Você pode obter o caminho inteiro:

fs.readdirSync(folderPath).map(fileName => {
return path.join(folderPath, fileName)
})

Você também pode filtrar os resultados para retornar apenas os arquivos, excluindo as pastas:

const isFile = fileName => {
return fs.lstatSync(fileName).isFile()
}
fs.readdirSync(folderPath).map(fileName => {
return path.join(folderPath, fileName)
})
.filter(isFile)

Renomeie uma pasta

Utilize fs.rename() ou fs.renameSync() para renomear uma pasta. O primeiro parâmetro é o caminho atual, o segundo o novo caminho:

const fs = require('fs')
fs.rename('/Users/pauloluan', '/Users/roger', err => {
if (err) {
console.error(err)
return
}
// feito
})

fs.renameSync() é a versão síncrona:

const fs = require('fs')
try {
fs.renameSync('/Users/pauloluan', '/Users/roger')
} catch (err) {
console.error(err)
}

Delete uma pasta

Utilize fs.rmdir() ou fs.rmdirSync() para deletar uma pasta.

Deletar uma pasta que tem conteúdo pode ser mais complicado do que o esperado.

Nesse caso é melhor instalar o módulo fs-extra, que é bem popular e atualizado. É uma substituição do módulo fs, que possui mais funcionalidades.

Nesse caso o método que você quer é o remove().

Instale usando

npm install fs-extra

e use-o assim:

const fs = require('fs-extra')
const folder = '/Users/pauloluan'
fs.remove(folder, err => {
console.error(err)
})

Também pode ser utilizado com promises:

fs.remove(folder)
.then(() => {
//done
})
.catch(err => {
console.error(err)
})

ou com async/await:

async function removeFolder(folder) {
try {
await fs.remove(folder)
//done
} catch (err) {
console.error(err)
}
}
const folder = '/Users/pauloluan'
removeFolder(folder)