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

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

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