react-shortcuts-cli
Version:
A Smart way to create React Component Boilerplate which includes (jsx , css and test files) at one's fingertips
18 lines (17 loc) • 2.44 kB
JavaScript
var fs = require("fs"); const { dirname: e } = require("path"); var path = require("path"), absPath = path.join(process.cwd()), args = process.argv.slice(2), regex = /^[A-Za-z]*[A-Za-z][A-Za-z0-9-. _]*$/g, argName = args[0]; args.length > 1 && (console.log("Enter valid directory name..... for example: HelloWorld"), process.exit()), "--v" == argName && (console.log("react-shortcuts-cli - 1.0.1"), process.exit()), regex.test(argName) || (console.log("Enter valid directory name..... for example: HelloWorldTwo"), process.exit()); var currCompName = argName.charAt(0).toUpperCase() + argName.slice(1), indexContent = `import ${currCompName} from "./${currCompName}.jsx";
export default ${currCompName}`, cssContent = "", compContent = `import React from 'react'
import './${currCompName}.css'
export default function ${currCompName} () {
return (
<div>${currCompName}</div>
)
}`, testContent = `import React from 'react';
import { render, screen } from '@testing-library/react';
import ${currCompName} from "./${currCompName}"
test('renders learn react link', () => {
render(<${currCompName} />);
const linkElement = screen.getByText(/${currCompName}/i);
expect(linkElement).toBeInTheDocument();
});
`; function _initComponent() { try { readDirectory(function (e) { let t = e, r = [{ filename: "index.js", content: indexContent }, t ? { filename: `${currCompName}.tsx`, content: compContent } : { filename: `${currCompName}.jsx`, content: compContent }, { filename: `${currCompName}.css`, content: cssContent }, t ? { filename: `${currCompName}.test.tsx`, content: testContent } : { filename: `${currCompName}.test.jsx`, content: testContent }]; fs.existsSync(absPath) || fs.mkdirSync(absPath, e => { e ? console.log(e) : console.log("components directory created...") }), createComponentDir(currCompName, r) }) } catch (e) { console.log(e) } } function readDirectory(e) { return e(!!fs.existsSync(path.join(absPath, "../..", "tsconfig.json"))) } function createComponentDir(e, t) { var r = path.join(absPath, `${e}`); fs.existsSync(r) ? console.log("components already exists..") : fs.mkdir(r, r => { r ? console.log("error occured") : (console.log("file created sucessfully"), t.forEach(t => { var r = path.join(absPath, `${e}/${t.filename}`); fs.writeFile(r, t.content, e => { e ? console.error(e) : console.log("file created sucessfully...") }) })) }) } _initComponent();
;