Die Methode mkdir
hat die Fähigkeit, alle Verzeichnisse in einem Pfad rekursiv zu erstellen, die nicht vorhanden sind, und diejenigen zu ignorieren, die es tun.
Aus der Node.js v10/11 Dokumentation:
// Erstellt /tmp/a/apple, unabhängig davon, ob `/tmp` und /tmp/a existieren.
fs.mkdir('/tmp/a/apple', { recursive: true }, (err) => {
if (err) throw err;
});
HINWEIS: Du musst zuerst das eingebaute Modul fs
importieren.
Hier ist nun ein etwas robusteres Beispiel, das native ECMAScript Module nutzt (mit aktivierter Flagge und der .mjs-Erweiterung), Nicht-Root-Pfade behandelt und vollständige Pfadnamen berücksichtigt:
import fs from 'fs';
import path from 'path';
function createDirectories(pathname) {
const __dirname = path.resolve();
pathname = pathname.replace(/^\.*\/|\/?[^\/]+\.[a-z]+|\/$/g, ''); // Entferne führende Verzeichnis-Marker und Entferne Endung /Dateiname-Erweiterung
fs.mkdir(path.resolve(__dirname, pathname), { recursive: true }, e => {
if (e) {
console.error(e);
} else {
console.log('Erfolg');
}
});
}
Du kannst es wie folgt verwenden createDirectories('/components/widget/widget.js');
.
Und natürlich würdest du wahrscheinlich auch etwas ausgefeilteres verwenden wollen, indem du Versprechen mit async/await verwendest, um die Dateierstellung in einer verständlicheren, synchron aussehenden Weise zu nutzen, wenn die Verzeichnisse erstellt werden; aber das geht über den Rahmen der Frage hinaus.