mirror of
https://github.com/DOI-DO/j40-cejst-2.git
synced 2025-02-23 01:54:18 -08:00
55 lines
1.8 KiB
JavaScript
55 lines
1.8 KiB
JavaScript
const fs = require('fs');
|
|
const { component, sass, sassType, test, barrel } = require('./component_templates.js');
|
|
|
|
// grab component name from terminal argument
|
|
const [name] = process.argv.slice(2);
|
|
if (!name) throw new Error('You must include a component name.');
|
|
|
|
const dir = `./src/components/${name}/`;
|
|
|
|
// throw an error if the file already exists
|
|
if (fs.existsSync(dir)) throw new Error('A component with that name already exists.');
|
|
|
|
// create the folder
|
|
fs.mkdirSync(dir);
|
|
|
|
function writeFileErrorHandler(err) {
|
|
if (err) throw err;
|
|
}
|
|
|
|
// component.tsx
|
|
fs.writeFile(`${dir}/${name}.tsx`, component(name), writeFileErrorHandler);
|
|
// component.module.scss
|
|
fs.writeFile(`${dir}/${name}.module.scss`, sass(name), writeFileErrorHandler);
|
|
// component.module.scss.d.ts
|
|
fs.writeFile(`${dir}/${name}.module.scss.d.ts`, sassType(name), writeFileErrorHandler);
|
|
// test.tsx
|
|
fs.writeFile(`${dir}/${name}.test.tsx`, test(name), writeFileErrorHandler);
|
|
// index.tsx
|
|
fs.writeFile(`${dir}/index.ts`, barrel(name), writeFileErrorHandler);
|
|
|
|
////////////////
|
|
/// Optional ///
|
|
////////////////
|
|
|
|
// insert new component into 'components/index.ts file
|
|
|
|
/* fs.readFile('./src/components/index.ts', 'utf8', function(err, data) {
|
|
if (err) throw err;
|
|
|
|
// grab all components and combine them with new component
|
|
const currentComponents = data.match(/(?<=import )(.*?)(?= from)/g);
|
|
const newComponents = [name, ...currentComponents].sort();
|
|
|
|
// create the import and export statements
|
|
const importStatements = newComponents
|
|
.map(importName => `import ${importName} from './${importName}';\n`)
|
|
.join('');
|
|
const exportStatements = `export {\n${newComponents
|
|
.map(component => ` ${component},\n`)
|
|
.join('')}};\n`;
|
|
|
|
const fileContent = `${importStatements}\n${exportStatements}`;
|
|
|
|
fs.writeFile(`./src/components/index.ts`, fileContent, writeFileErrorHandler);
|
|
}); */
|