UNPKG

create-react-component-folder-jovpet

Version:

Creates single react component folder structure. Forked version with enhanced scss

122 lines (109 loc) 2.65 kB
const fs = require('fs'); const mkdirp = require('mkdirp'); /** * Native async / await for reading file in node * @param {String} path - fs.readFile path * @param {String} opts - fs.readFile options * @returns {Promise<Buffer>} */ async function readFileAsync(path, opts = 'utf8') { return new Promise((resolve, reject) => { fs.readFile(path, opts, (err, data) => { if (err) { return reject(err); } return resolve(data); }); }); } /** * Native async / await for writing file in node * @param {String} path - fs.readFile path * @param {String} data - file content * @param {String} opts - fs.readFile options * @returns {Promise} */ async function writeFileAsync(path, data, opts = 'utf8') { return new Promise((resolve, reject) => { fs.writeFile(path, data, opts, (err) => { if (err) { return reject(err); } return resolve(); }); }); } /** * Native async / await for reading directorys in node * @param {String} path - fs.readFile path * @returns {Promise<String[]>} */ function readDirAsync(path) { return new Promise((resolve, reject) => { fs.readdir(path, (err, filenames) => { if (err) { return reject(err); } return resolve(filenames); }); }); } /** * Native async / await for checking if file exists in node * @param {String} path - fs.readFile path */ async function existsSyncAsync(path) { return new Promise((resolve, reject) => { const exists = fs.existsSync(path); if (exists) { reject(new Error('Directory Exists')); } else { resolve(path); } }); } /** * Native async / await for creating directory in node * @param {String} dir - directory path * @returns {Promise | Promise<String>} */ async function createDirectory(dir) { return new Promise((resolve, reject) => { try { fs.exists(dir, (exists) => { if (!exists) { return mkdirp(dir) .then(() => resolve(dir)) .catch((err) => reject(err)); } return resolve(dir); }); } catch (error) { reject(new Error(`Failed to create directory ${dir}`)); } }); } /** * Checks if path is directory * * @param {String} path - folder path * @returns {Promise<Boolean>} */ function isDirectory(path) { return new Promise((resolve, reject) => { fs.lstat(path, (err, stats) => { if (err) { return reject(err); } return resolve(stats.isDirectory()); }); }); } module.exports = { readFileAsync, writeFileAsync, readDirAsync, existsSyncAsync, createDirectory, isDirectory, };