Commit 188af2ce authored by Nikolay Gromov's avatar Nikolay Gromov

Вынес настройки проекта в отдельный JSON

parent 65d86857
......@@ -39,14 +39,14 @@
</tbody>
</table>
Если при вызове `npm start` ничего не происходит, смотрите `./package.json`, он содержит синтаксическую ошибку. [Линтер JSON-а](http://jsonlint.com/)
Если при вызове `npm start` ничего не происходит, смотрите `./projectConfig.json`, он содержит синтаксическую ошибку. Проверить можно [линтером](http://jsonlint.com/)
## Парадигма
- Используется именование классов, файлов и переменных по БЭМ.
- Список использованных в проекте БЭМ-блоков и доп. файлов указан в `./package.json`.
- Список использованных в проекте БЭМ-блоков и доп. файлов указан в `./projectConfig.json`.
- Каждый БЭМ-блок в своей папке внутри `./src/blocks/` (стили, js, картинки, разметка; обязателен только стилевой файл).
- Есть глобальные файлы: стилевые, js, шрифты, картинки.
- Диспетчер подключения стилей `./src/scss/style.scss` генерируется автоматически при старте любой gulp-задачи.
......@@ -57,7 +57,7 @@
### Стили
Файл-диспетчер подключений (`.src/scss/style.scss`) формируется автоматически на основании указанных в `./package.json` блоков и доп. файлов. Писать в этот файл что-либо руками бессмысленно: при старте автоматизации файл будет перезаписан.
Файл-диспетчер подключений (`.src/scss/style.scss`) формируется автоматически на основании указанных в `./projectConfig.json` блоков и доп. файлов. Писать в этот файл что-либо руками бессмысленно: при старте автоматизации файл будет перезаписан.
Используемый постпроцессинг:
......@@ -91,7 +91,7 @@ demo-block/ # Папка блока
### Подключение блоков
Список используемых блоков и дополнительных подключаемых файлов указан в `./package.json`, в секции `configProject`.
Список используемых блоков и дополнительных подключаемых файлов указан в `./projectConfig.json`.
`blocks` — объект с блоками, используемыми на проекте. Каждый блок — отдельная папка с файлами, по умолчанию лежат в `./src/blocks/`.
......@@ -115,10 +115,10 @@ demo-block/ # Папка блока
**ВНИМАНИЕ!** Это JSON. Это строгий синтаксис, у последнего элемента в любом контексте не должно быть запятой в конце строки.
#### Пример секции в `./package.json`
#### Пример секции в `./projectConfig.json`
```json
"configProject": {
{
"blocks": {
"page-header": [],
"page-footer": [
......
......@@ -4,10 +4,10 @@
// Использование: node createBlock.js [имя блока] [доп. расширения через пробел]
const fs = require('fs'); // будем работать с файловой системой
const pjson = require('./package.json'); // получим настройки из package.json
const dirs = pjson.configProject.dirs; // отдельно имеем объект с директориями
const mkdirp = require('mkdirp'); // зависимость
const fs = require('fs');
const projectConfig = require('./projectConfig.json');
const dirs = projectConfig.dirs;
const mkdirp = require('mkdirp');
let blockName = process.argv[2]; // получим имя блока
let defaultExtensions = ['scss', 'html', 'img']; // расширения по умолчанию
......@@ -40,19 +40,19 @@ if(blockName) {
fileContent = '// В этом файле должны быть стили только для БЭМ-блока ' + blockName + ', его элементов, \n// модификаторов, псевдоселекторов, псевдоэлементов, @media-условий...\n// Не пишите здесь другие селекторы.\n\n.' + blockName + ' {\n \n}\n';
// fileCreateMsg = '';
// Добавим созданный файл в ./package.json
// Добавим созданный файл
let hasThisBlock = false;
for (let block in pjson.configProject.blocks) {
for (let block in projectConfig.blocks) {
if(block === blockName) {
hasThisBlock = true;
break;
}
}
if(!hasThisBlock) {
pjson.configProject.blocks[blockName] = [];
let newPackageJson = JSON.stringify(pjson, "", 2);
fs.writeFileSync('./package.json', newPackageJson);
fileCreateMsg = '[NTH] Подключение блока добавлено в package.json';
projectConfig.blocks[blockName] = [];
let newPackageJson = JSON.stringify(projectConfig, "", 2);
fs.writeFileSync('./projectConfig.json', newPackageJson);
fileCreateMsg = '[NTH] Подключение блока добавлено в projectConfig.json';
}
}
......
{
"name": "NTH-start-project",
"version": "2.0.0",
"version": "2.0.1",
"description": "Start a library of blocks and technical solutions for HTML/CSS/js page layout.",
"author": "Nikolay Gromov",
"license": "MIT",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment