From 076c7e90dcc162d4dc0e783660f4b45f331139ad Mon Sep 17 00:00:00 2001 From: Vasily Guzov Date: Sun, 13 Oct 2024 16:19:19 +0300 Subject: [PATCH] [setup] add script for quick create function with tests --- add-component.mjs | 56 +++++++++++++++++++++++++++++++++++++++++++++++ package.json | 3 ++- 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 add-component.mjs diff --git a/add-component.mjs b/add-component.mjs new file mode 100644 index 0000000..0dbe457 --- /dev/null +++ b/add-component.mjs @@ -0,0 +1,56 @@ +import fs from "fs"; +import path from "path"; + +const defaultPath = "./lib/"; + +const componentFolderPath = process.argv[3] ? process.argv[3] : defaultPath; +const componentName = process.argv[2]; + +if (!componentName) { + console.error("Please provide a module name."); + process.exit(1); +} + +const folderPath = path.join(componentFolderPath, componentName); +const componentFilePath = path.join(folderPath, `${componentName}.ts`); +const testFile = path.join(folderPath, `${componentName}.test.ts`); +const indexPath = path.join(folderPath, "index.ts"); + +if (!fs.existsSync(folderPath)) { + fs.mkdirSync(folderPath, { recursive: true }); +} + +const componentContent = `export function ${componentName}() { + //your code here +}; +`; + +fs.writeFileSync(componentFilePath, componentContent); + +const testContent = `import { describe, it, expect } from "vitest"; +import { ${componentName} } from "./${componentName}.ts"; + +describe("${componentName}", () => { + let sortedArray = [-12, 1, 4, 6, 22]; + + it("${componentName}", () => { + expect(${componentName}(sortedArray, 4)).toBe(2); + }); + + it("${componentName}", () => { + expect(${componentName}(sortedArray, 3)).toBe(-1); + }); +}); +`; + +fs.writeFileSync(testFile, testContent); + +const indexContent = `import { ${componentName} } from "./${componentName}"; + +export default ${componentName}; +`; + +fs.writeFileSync(indexPath, indexContent); + +console.log(`Component ${componentName} created successfully at ${folderPath}`); + diff --git a/package.json b/package.json index 8113ff8..1fbc908 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,8 @@ "dev": "vite", "build": "tsc && vite build", "test": "vitest", - "coverage": "vitest run --coverage" + "coverage": "vitest run --coverage", + "add:module": "node ./add-component.mjs" }, "devDependencies": { "typescript": "^5.1.3",