43 lines
1.1 KiB
JavaScript
43 lines
1.1 KiB
JavaScript
|
|
import fs from 'fs';
|
||
|
|
|
||
|
|
// https://github.dev/leoroese/template-cli/blob/628dd24db7df399ebb520edd0bc301bc7b5e8b66/index.js#L19
|
||
|
|
const createDirectoryContents = (
|
||
|
|
templatePath,
|
||
|
|
targetDirPath,
|
||
|
|
copyPrettierRules
|
||
|
|
) => {
|
||
|
|
const filesToCreate = fs.readdirSync(templatePath);
|
||
|
|
|
||
|
|
filesToCreate.forEach(file => {
|
||
|
|
if (!copyPrettierRules && file === '.prettierrc') {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
const origFilePath = `${templatePath}/${file}`;
|
||
|
|
|
||
|
|
// get stats about the current file
|
||
|
|
const stats = fs.statSync(origFilePath);
|
||
|
|
|
||
|
|
if (stats.isFile()) {
|
||
|
|
const contents = fs.readFileSync(origFilePath, 'utf8');
|
||
|
|
|
||
|
|
// Rename
|
||
|
|
if (file === '.npmignore') file = '.gitignore';
|
||
|
|
|
||
|
|
const writePath = `${targetDirPath}/${file}`;
|
||
|
|
fs.writeFileSync(writePath, contents, 'utf8');
|
||
|
|
} else if (stats.isDirectory()) {
|
||
|
|
fs.mkdirSync(`${targetDirPath}/${file}`);
|
||
|
|
|
||
|
|
// recursive call
|
||
|
|
createDirectoryContents(
|
||
|
|
`${templatePath}/${file}`,
|
||
|
|
`${targetDirPath}/${file}`,
|
||
|
|
copyPrettierRules
|
||
|
|
);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
};
|
||
|
|
|
||
|
|
export default createDirectoryContents;
|