UNPKG

make-components

Version:

a tool create components in Vue app in the required folder

63 lines (49 loc) 1.66 kB
#!/usr/bin/env node const path = require('path'); const fs = require('fs'); const componentName = process.argv[2]; const registerFile = path.resolve('src/js/vue/registry/imports.js'); const folderName = path.resolve(`src/js/vue/global-components/${componentName}`); const componentFile = `${folderName}/${componentName}.vue`; let lines; try { if (!fs.existsSync(folderName)) { fs.mkdirSync(folderName, { recursive: true }); } else { console.error("Component Folder already exists!"); } } catch(err) {} try { // read contents of the file const data = fs.readFileSync(registerFile, 'UTF-8'); // split the contents by new line lines = data.split(/\r?\n/); } catch (err) { console.error(err); process.exit() } // Capitalize String const capitalize = (s) => { if (typeof s !== 'string') return ''; return s.charAt(0).toUpperCase() + s.slice(1) }; // Split the component name let capitalizedComponentName = ' Vue' + componentName.split('-').map((c) => capitalize(c)).join(''); let componentLine = `${capitalizedComponentName}: import(/* webpackChunkName: "global-components/${componentName}" */ '../global-components/${componentName}/${componentName}'),`; let innerLines = lines.slice(1, lines.length - 1); innerLines.push(componentLine); fs.writeFileSync(registerFile, [lines[0], ...innerLines, lines[lines.length - 1]].join('\n')); let componentFileTemplate = `<template> </template> <script> export default { }; </script> `; try { if (fs.existsSync(folderName)) { fs.writeFileSync(componentFile, componentFileTemplate); } else { console.error("Component file already exists!"); } } catch(err) {}