create-react-component-folder-jovpet
Version:
Creates single react component folder structure. Forked version with enhanced scss
122 lines (109 loc) • 2.65 kB
JavaScript
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,
};