-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcreateblock.js
More file actions
74 lines (68 loc) · 3.18 KB
/
createblock.js
File metadata and controls
74 lines (68 loc) · 3.18 KB
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
64
65
66
67
68
69
70
71
72
73
74
'use strict';
// Использование: node createBlock.js [имя блока] [доп. расширения через пробел]
const fs = require('fs');
const pjson = require('./package.json');
const dirs = pjson.config.directories;
const mkdirp = require('mkdirp');
let blockName = process.argv[2];
let defaultExtensions = ['html', 'less']; // расширения по умолчанию
let extensions = uniqueArray(defaultExtensions.concat(process.argv.slice(3)));
if(blockName) {
let dirPath = dirs.source + '/blocks/' + blockName + '/';
mkdirp(dirPath, function(err){
if(err) {
console.error('[NTH] Отмена операции: ' + err);
}
else {
console.log('[NTH] Создание папки ' + dirPath + ' (создана, если ещё не существует)');
extensions.forEach(function(extention){
let filePath = dirPath + blockName + '.' + extention;
let fileContent = '';
let fileCreateMsg = '';
if(extention == 'less') {
fileContent = '// Для импорта в диспетчер подключений: @import \'' + dirs.source + '/blocks/' + blockName + '/' + blockName + '.less\';\n\n@import \'../../less/variables.less\'; // только для удобства обращения к переменным\n\n\n.' + blockName + ' {\n \n}\n';
fileCreateMsg = '[NTH] Для импорта стилей: @import \'' + dirs.source + '/blocks/' + blockName + '/' + blockName + '.less\';';
}
else if(extention == 'html') {
fileContent = '<!--DEV\n\nНужно убрать пробел между @-ами:\n\n@ @include(\'blocks/' + blockName + '/' + blockName + '.html\')\n\n-->\n<div class="' + blockName + '">content</div>\n';
// fileCreateMsg = '[NTH] Для вставки разметки: @@include(\'blocks/' + blockName + '/' + blockName + '.html\') Подробнее: https://www.npmjs.com/package/gulp-file-include';
}
if(fileExist(filePath) === false) {
fs.writeFile(filePath, fileContent, function(err) {
if(err) {
return console.log('[NTH] Файл НЕ создан: ' + err);
}
console.log('[NTH] Файл создан: ' + filePath);
if(fileCreateMsg) {
console.warn(fileCreateMsg);
}
});
}
else {
console.log('[NTH] Файл НЕ создан: ' + filePath + ' уже существует');
}
});
}
});
}
else {
console.log('[NTH] Отмена операции: не указан блок');
}
// Оставить в массиве только уникальные значения (убрать повторы)
function uniqueArray(arr) {
var objectTemp = {};
for (var i = 0; i < arr.length; i++) {
var str = arr[i];
objectTemp[str] = true; // запомнить строку в виде свойства объекта
}
return Object.keys(objectTemp);
}
// Проверка существования файла
function fileExist(path) {
const fs = require('fs');
try {
fs.statSync(path);
} catch(err) {
return !(err && err.code === 'ENOENT');
}
}