create-react-app-ts
Version:
Scalable starter boilerplate for React applications
58 lines (46 loc) • 967 B
JavaScript
const { join } = require('path');
const {
lstatSync,
mkdirSync,
symlinkSync,
readdirSync,
readlinkSync,
createReadStream,
createWriteStream
} = require('fs');
const mkdir = dir => {
try {
// @ts-ignore
mkdirSync(dir, 0755);
} catch (e) {
if (e.code !== 'EEXIST') {
throw e;
}
}
};
const copy = (src, dest) => {
const from = createReadStream(src);
const to = createWriteStream(dest);
from.pipe(to);
};
const copyDir = (src, dest, filter) => {
mkdir(dest);
const files = readdirSync(src);
for (const file of files) {
const from = join(src, file);
const to = join(dest, file);
const current = lstatSync(from);
if (typeof filter === 'function' && filter(file)) {
continue;
}
if (current.isDirectory()) {
copyDir(from, to);
} else if (current.isSymbolicLink()) {
const symlink = readlinkSync(from);
symlinkSync(symlink, to);
} else {
copy(from, to);
}
}
};
module.exports = { mkdir, copy, copyDir };