Commit 802dcfdb authored by Nikolay Gromov's avatar Nikolay Gromov

Завёл сборку библиотеки блоков

parent ead43076
...@@ -39,9 +39,7 @@ src/ ...@@ -39,9 +39,7 @@ src/
## Прочие команды ## Прочие команды
`npm run build` — Сборка со сжатыми css- и js-файлами `npm run deploy` — Сборка проекта и отправка содержимого папки сборки на gh-pages
`npm run deploy` — Сборка проекта без карт кода и отправка содержимого папки сборки на gh-pages
## Как начать новый проект c этим репозиторием ## Как начать новый проект c этим репозиторием
......
...@@ -9,7 +9,8 @@ let config = ...@@ -9,7 +9,8 @@ let config =
], ],
"alwaysAddBlocks": [ "alwaysAddBlocks": [
"sprite-svg", "sprite-svg",
"sprite-png" "sprite-png",
"object-fit-polyfill",
], ],
"addStyleBefore": [ "addStyleBefore": [
"src/scss/functions.scss", "src/scss/functions.scss",
......
...@@ -14,7 +14,6 @@ const jsonFormat = require('json-format'); ...@@ -14,7 +14,6 @@ const jsonFormat = require('json-format');
const browserSync = require('browser-sync').create(); const browserSync = require('browser-sync').create();
const debug = require('gulp-debug'); const debug = require('gulp-debug');
const sass = require('gulp-sass'); const sass = require('gulp-sass');
const gulpIf = require('gulp-if');
const webpackStream = require('webpack-stream'); const webpackStream = require('webpack-stream');
const buffer = require('vinyl-buffer'); const buffer = require('vinyl-buffer');
const uglify = require('gulp-uglify'); const uglify = require('gulp-uglify');
...@@ -211,7 +210,10 @@ exports.writeSassImportsFile = writeSassImportsFile; ...@@ -211,7 +210,10 @@ exports.writeSassImportsFile = writeSassImportsFile;
function compileSass() { function compileSass() {
return src(`${dir.src}scss/style.scss`, { sourcemaps: true }) return src([
`${dir.src}scss/style.scss`,
`${dir.blocks}blocks-library/blocks-library.scss`,
], { sourcemaps: true })
.pipe(plumber()) .pipe(plumber())
.pipe(debug({title: 'Compiles:'})) .pipe(debug({title: 'Compiles:'}))
.pipe(sass({includePaths: [__dirname+'/']})) .pipe(sass({includePaths: [__dirname+'/']}))
...@@ -249,8 +251,12 @@ function buildJs() { ...@@ -249,8 +251,12 @@ function buildJs() {
.pipe(plumber()) .pipe(plumber())
.pipe(webpackStream({ .pipe(webpackStream({
mode: 'development', mode: 'development',
entry: {
'bundle': `./${dir.src}js/entry.js`,
'blocks-library': `./${dir.blocks}blocks-library/blocks-library.js`,
},
output: { output: {
filename: 'bundle.js', filename: '[name].js',
}, },
module: { module: {
rules: [ rules: [
...@@ -268,49 +274,12 @@ function buildJs() { ...@@ -268,49 +274,12 @@ function buildJs() {
// jquery: 'jQuery' // jquery: 'jQuery'
// } // }
})) }))
.pipe(gulpIf(!isDev, uglify())) .pipe(uglify())
.pipe(dest(`${dir.build}js`)); .pipe(dest(`${dir.build}js`));
} }
exports.buildJs = buildJs; exports.buildJs = buildJs;
// function writeBlocksLibSass(cb) {
// let allBlocksWithStyleFiles = getDirectories('scss');
// let styleImports = '';
// config.addStyleBefore.forEach(function(src) {
// styleImports += `@import "${src}";\n`;
// });
// allBlocksWithStyleFiles.forEach(function(block) {
// let src = `${dir.blocks}${block}/${block}.scss`;
// styleImports += `@import "${src}";\n`;
// });
// config.addStyleAfter.forEach(function(src) {
// styleImports += `@import "${src}";\n`;
// });
// fs.writeFileSync(`${dir.src}scss/blocks-lib.scss`, styleImports);
// cb();
// }
// exports.writeBlocksLibSass = writeBlocksLibSass;
// function writeBlocksLibJs(cb) {
// let allBlocksWithJsFiles = getDirectories('js');
// let jsRequires = '';
// config.addJsBefore.forEach(function(src) {
// jsRequires += `require('${src}');\n`;
// });
// allBlocksWithJsFiles.forEach(function(block) {
// jsRequires += `require('../blocks/${block}/${block}.js');\n`;
// });
// config.addJsAfter.forEach(function(src) {
// jsRequires += `require('${src}');\n`;
// });
// fs.writeFileSync(`${dir.src}js/blocks-lib.js`, jsRequires);
// cb();
// }
// exports.writeBlocksLibJs = writeBlocksLibJs;
function clearBuildDir() { function clearBuildDir() {
return del([ return del([
`${dir.build}**/*`, `${dir.build}**/*`,
...@@ -346,6 +315,7 @@ function serve() { ...@@ -346,6 +315,7 @@ function serve() {
compilePugFast, compilePugFast,
parallel(writeSassImportsFile, writeJsRequiresFile), parallel(writeSassImportsFile, writeJsRequiresFile),
parallel(compileSass, buildJs), parallel(compileSass, buildJs),
// buildJsLibrary,
reload reload
)); ));
......
require('../main-nav/main-nav.js');
require('../burger/burger.js');
require('../scroll-link/scroll-link.js');
require('../to-top/to-top.js');
require('../off-canvas/off-canvas.js');
require('../modal/modal.js');
require('../tabs/tabs.js');
require('../baron/baron.js');
require('../../js/script.js');
// В этом файле должны быть стили для БЭМ-блока blocks-library, его элементов, @import "../../scss/functions.scss";
// модификаторов, псевдоселекторов, псевдоэлементов, @media-условий... @import "../../scss/variables.scss";
// Очередность: http://nicothin.github.io/idiomatic-pre-CSS/#priority @import "../../scss/mixins.scss";
@import "../alert/alert.scss";
@import "../baron/baron.scss";
@import "../breadcrumbs/breadcrumbs.scss";
@import "../btn/btn.scss";
@import "../burger/burger.scss";
@import "../close/close.scss";
@import "../code/code.scss";
@import "../comment/comment.scss";
@import "../embed-responsive/embed-responsive.scss";
@import "../field-actions/field-actions.scss";
@import "../field-checkbox/field-checkbox.scss";
@import "../field-file/field-file.scss";
@import "../field-radio/field-radio.scss";
@import "../field-range/field-range.scss";
@import "../field-select/field-select.scss";
@import "../field-text/field-text.scss";
@import "../field-toggler/field-toggler.scss";
@import "../fields-group/fields-group.scss";
@import "../form/form.scss";
@import "../label/label.scss";
@import "../loader/loader.scss";
@import "../logo/logo.scss";
@import "../main-nav/main-nav.scss";
@import "../menu/menu.scss";
@import "../modal/modal.scss";
@import "../object-fit-polyfill/object-fit-polyfill.scss";
@import "../off-canvas/off-canvas.scss";
@import "../or/or.scss";
@import "../page/page.scss";
@import "../page-footer/page-footer.scss";
@import "../page-header/page-header.scss";
@import "../pagination/pagination.scss";
@import "../progress/progress.scss";
@import "../scroll-link/scroll-link.scss";
@import "../sprite-png/sprite-png.scss";
@import "../sprite-svg/sprite-svg.scss";
@import "../table/table.scss";
@import "../table-responsive/table-responsive.scss";
@import "../tabs/tabs.scss";
@import "../thumb/thumb.scss";
@import "../to-top/to-top.scss";
@import "../tooltip/tooltip.scss";
@import "../../scss/print.scss";
.blocks-library { .blocks-library {
......
...@@ -5,7 +5,6 @@ block meta ...@@ -5,7 +5,6 @@ block meta
meta(name='description', content='') meta(name='description', content='')
block append head block append head
link(rel='stylesheet', href='css/blocks-lib.css')
style. style.
.components-demo { .components-demo {
display: block; display: block;
......
...@@ -18,7 +18,7 @@ html(class='no-js page', lang='ru') ...@@ -18,7 +18,7 @@ html(class='no-js page', lang='ru')
link(rel='apple-touch-icon', sizes='180x180', href='/img/favicon/apple-touch-icon.png') link(rel='apple-touch-icon', sizes='180x180', href='/img/favicon/apple-touch-icon.png')
link(rel='icon', type='image/png', sizes='32x32', href='/img/favicon/favicon-32x32.png') link(rel='icon', type='image/png', sizes='32x32', href='/img/favicon/favicon-32x32.png')
link(rel='icon', type='image/png', sizes='16x16', href='/img/favicon/favicon-16x16.png') link(rel='icon', type='image/png', sizes='16x16', href='/img/favicon/favicon-16x16.png')
link(rel='manifest', href='/site.webmanifest') link(rel='manifest', href='/img/favicon/site.webmanifest')
link(rel='mask-icon', href='/img/favicon/safari-pinned-tab.svg', color='#5bbad5') link(rel='mask-icon', href='/img/favicon/safari-pinned-tab.svg', color='#5bbad5')
meta(name='msapplication-TileColor', content='#5bbad5') meta(name='msapplication-TileColor', content='#5bbad5')
meta(name='theme-color', content='#000') meta(name='theme-color', content='#000')
...@@ -30,6 +30,7 @@ html(class='no-js page', lang='ru') ...@@ -30,6 +30,7 @@ html(class='no-js page', lang='ru')
block head block head
link(rel='stylesheet', href='css/style.css') link(rel='stylesheet', href='css/style.css')
link(rel='stylesheet', href='css/blocks-library.css')
script. script.
document.documentElement.className = document.documentElement.className.replace('no-js', 'js'); document.documentElement.className = document.documentElement.className.replace('no-js', 'js');
...@@ -55,4 +56,4 @@ html(class='no-js page', lang='ru') ...@@ -55,4 +56,4 @@ html(class='no-js page', lang='ru')
.off-canvas__overlay(data-toggle='off-canvas') .off-canvas__overlay(data-toggle='off-canvas')
block page-bottom block page-bottom
script(src='js/blocks-lib.js') script(src='js/blocks-library.js')
...@@ -18,7 +18,7 @@ html(class='no-js page', lang='ru') ...@@ -18,7 +18,7 @@ html(class='no-js page', lang='ru')
link(rel='apple-touch-icon', sizes='180x180', href='/img/favicon/apple-touch-icon.png') link(rel='apple-touch-icon', sizes='180x180', href='/img/favicon/apple-touch-icon.png')
link(rel='icon', type='image/png', sizes='32x32', href='/img/favicon/favicon-32x32.png') link(rel='icon', type='image/png', sizes='32x32', href='/img/favicon/favicon-32x32.png')
link(rel='icon', type='image/png', sizes='16x16', href='/img/favicon/favicon-16x16.png') link(rel='icon', type='image/png', sizes='16x16', href='/img/favicon/favicon-16x16.png')
link(rel='manifest', href='/site.webmanifest') link(rel='manifest', href='/img/favicon/site.webmanifest')
link(rel='mask-icon', href='/img/favicon/safari-pinned-tab.svg', color='#5bbad5') link(rel='mask-icon', href='/img/favicon/safari-pinned-tab.svg', color='#5bbad5')
meta(name='msapplication-TileColor', content='#5bbad5') meta(name='msapplication-TileColor', content='#5bbad5')
meta(name='theme-color', content='#000') meta(name='theme-color', content='#000')
......
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