This repository has been archived by the owner on Jul 3, 2024. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcomponent.js
63 lines (51 loc) · 1.76 KB
/
component.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/**
* Хелпер для создания блоков с .html, .scss и .js-файлами
*
* node ./component.js "hours" "about" "etc"
*/
const fs = require('fs');
const path = require('path');
// директория компонентов
const componentsPath = './app/src/components/';
const componentFiles = {
html : `<section class="{component}">\n\t<div class="{component}__wrap wrap">\n\t\t\n\t\</div>\n</section><!-- /section.{component} -->`,
scss : `.{component} {\n\t$b : '.{component}';\n\t\n}\n`
};
const args = process.argv.slice(2);
if ( args !== '' )
{
args.map(component => createComponent(component));
} else {
console.log('Не задано имя блока');
}
/**
* Создание компонента
*/
function createComponent(component) {
createFolder(component); // директория
createFiles(component); // директория
}
/**
* Создание директории компонента
*/
function createFolder(component) {
fs.mkdir(componentsPath + component, (err) => {
if (err) throw err;
console.log(`Директория компонента ${component} успешно создана`);
});
}
/**
* Создание файлов компонента
*/
function createFiles(component) {
const componentPath = path.join(componentsPath, component);
Object.keys(componentFiles).forEach(extension => {
const fileName = `${component}.${extension}`;
const fileSource = componentFiles[extension].replace(/\{component}/g, component);
const filePath = path.join(componentPath, fileName);
fs.writeFile(filePath, fileSource, 'utf8', (err) => {
if (err) throw err;
console.log(`Файл ${fileName} компонента ${component} успешно создан`)
});
});
}