Перед началом работы нужно установить зависимости:
npm install
Одноразовая сборка:
npm start
Запуск живой сборки на локальном сервере:
npm run live
Сборка без автоматической перезагрузки страниц:
npm run no-server
Шаблоны собираются из папки templates
с помощью twig. Составные части для всех старниц лежат в modules
. Универсальные блоки в blocks
. Блоки конкретных страниц лежат в папке самой страницы. Например, блоки главной страницы в папке frontpage
. Боевые файлы автоматически собираются в корне проекта. Основной шаблон лежит в core/layout.twig
. Страницы включают в себя основной шаблон. Код пишется внутри блока body
:
{% extends "core/layout.twig" %}
{% block body %}
...
{% endblock %}
Чтобы добавить возможность передавать в шаблоны данные (например, расставлять контент в рандомном порядке) необходимо создать файл templates/data.json
и в gulpfile.js
заменить таск шаблонизации на следующий:
gulp.task('twig', function() {
gulp.src(paths.templates + '*.twig')
.pipe(plumber({errorHandler: onError}))
.pipe(data(function() {
if (fs.existsSync('templates/data.json')) {
return JSON.parse(fs.readFileSync(paths.json));
}
}))
.pipe(twig())
.pipe(gulp.dest(paths.html))
.pipe(reload({stream: true}));
});
Далее — добавить в таск watch
:
gulp.watch('templates/data.json', ['twig']);
Верстаются в assets/source/styles/styles.scss
, компилируются в assets/css/style.css
. Разделение на смысловые слои. Сначала core — фундамент: переменные, сетка, дефолтные стили.
Переменные :
$helvetica: "Helvetica Neue", Arial, sans-serif;
Вложенность для элементов и модификаторов в БЭМе:
.block {
...
&__element {
...
}
&--modifier {
...
}
}
Картинки кладутся в assets/source/img/
и с помощью gulp-imagemin минифицируются в папку assets/img/
.
Можно писать на es2015 — подключен и работает Babel. Включен jQuery 3.