Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
K
kpp
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Alexandr Veselov
kpp
Commits
2d451525
Commit
2d451525
authored
Nov 17, 2018
by
Nikolay Gromov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Добавил слежение за pug и обновление файла конфига
parent
bcbb832e
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
76 additions
and
51 deletions
+76
-51
config.js
config.js
+9
-20
gulpfile.js
gulpfile.js
+65
-30
package.json
package.json
+2
-1
No files found.
config.js
View file @
2d451525
let
config
=
let
config
=
{
{
// Файлы, классы которых не анализируются при поиске БЭМ-блоков
"notGetBlocks"
:
[
"notGetBlocks"
:
[
"blocks-demo.html"
,
"blocks-demo.html"
],
],
// Классы, которые не нужно считать БЭМ-блоками
"ignoredBlocks"
:
[
"ignoredBlocks"
:
[
"no-js"
,
"no-js"
],
],
// БЭМ-блоки, используемые в проекте
"blocks"
:
[
"blocks"
:
[
"page"
,
"page"
,
"page-header"
,
"page-header"
,
"logo"
,
"logo"
,
"main-nav"
,
"main-nav"
,
"OLD-block-SHOULD-BE-REMOVED"
,
"burger"
,
"page-footer"
],
],
// SCSS-файлы, которые будут взяты в сборку стилей перед файлами БЭМ-блоков
"addStyleBefore"
:
[
"addStyleBefore"
:
[
"./src/scss/functions.scss"
,
"./src/scss/functions.scss"
,
"./src/scss/variables.scss"
,
"./src/scss/variables.scss"
,
"./src/scss/mixins.scss"
,
"./src/scss/mixins.scss"
],
],
// SCSS-файлы, которые будут взяты в сборку стилей после файлов БЭМ-блоков
"addStyleAfter"
:
[
"addStyleAfter"
:
[
"./src/scss/print.scss"
,
"./src/scss/print.scss"
],
],
// JS-файлы, которые будут взяты в сборку JS перед файлами БЭМ-блоков
"addJsBefore"
:
[],
"addJsBefore"
:
[],
// JS-файлы, которые будут взяты в сборку JS после файлов БЭМ-блоков
"addJsAfter"
:
[
"addJsAfter"
:
[
"./src/js/global-script.js"
,
"./src/js/global-script.js"
],
],
// Изображения, копируемые в папку сборки до копирования изображений блоков
"addImages"
:
[],
"addImages"
:
[],
// Добавочные файлы, копируемые в папку сборки до копирования доп. файлов блоков
"addAssets"
:
[],
"addAssets"
:
[],
// CSS-файлы, копируемые в папку сборки без обработки перед сборкой стилей
"copiedCss"
:
[],
"copiedCss"
:
[],
// JS-файлы, копируемые в папку сборки без обработки перед сборкой JS
"copiedJs"
:
[],
"copiedJs"
:
[],
// Директории проекта
"dir"
:
{
"dir"
:
{
"src"
:
"./src/"
,
"src"
:
"./src/"
,
"build"
:
"./build/"
,
"build"
:
"./build/"
,
"blocks"
:
"./src/blocks/"
,
"blocks"
:
"./src/blocks/"
}
,
}
};
};
module
.
exports
=
config
;
module
.
exports
=
config
;
gulpfile.js
View file @
2d451525
...
@@ -20,6 +20,8 @@ const pug = require('gulp-pug');
...
@@ -20,6 +20,8 @@ const pug = require('gulp-pug');
const
through2
=
require
(
'through2'
);
const
through2
=
require
(
'through2'
);
const
replace
=
require
(
'gulp-replace'
);
const
replace
=
require
(
'gulp-replace'
);
const
getClassesFromHtml
=
require
(
'get-classes-from-html'
);
const
getClassesFromHtml
=
require
(
'get-classes-from-html'
);
const
jsonFormat
=
require
(
'json-format'
);
const
browserSync
=
require
(
'browser-sync'
).
create
();
function
compilePug
()
{
function
compilePug
()
{
...
@@ -58,10 +60,13 @@ function compilePug() {
...
@@ -58,10 +60,13 @@ function compilePug() {
config
.
blocks
=
config
.
blocks
.
filter
(
item
=>
blocksList
.
indexOf
(
item
)
>=
0
);
config
.
blocks
=
config
.
blocks
.
filter
(
item
=>
blocksList
.
indexOf
(
item
)
>=
0
);
// Добавить в конец списка блоков те элементы, которые использованы в HTML, но отсутствуют в списке
// Добавить в конец списка блоков те элементы, которые использованы в HTML, но отсутствуют в списке
Array
.
prototype
.
push
.
apply
(
config
.
blocks
,
getArraysDiff
(
blocksList
,
config
.
blocks
));
Array
.
prototype
.
push
.
apply
(
config
.
blocks
,
getArraysDiff
(
blocksList
,
config
.
blocks
));
console
.
log
(
config
.
blocks
);
// Имеем список использованных сейчас на проекте блоков
//
console.log(config.blocks); // Имеем список использованных сейчас на проекте блоков
// Если есть изменения списка блоков
, нужно записать конфиг на диск
// Если есть изменения списка блоков
if
(
oldBlocksListString
!=
JSON
.
stringify
(
config
.
blocks
))
{
if
(
oldBlocksListString
!=
JSON
.
stringify
(
config
.
blocks
))
{
console
.
log
(
'Есть изменения списка используемых блоков'
);
// Записать новый конфиг
writeConfig
(
config
);
// Подновить старый список блоков
oldBlocksListString
=
JSON
.
stringify
(
config
.
blocks
);
}
}
}
}
else
{
else
{
...
@@ -73,11 +78,11 @@ function compilePug() {
...
@@ -73,11 +78,11 @@ function compilePug() {
exports
.
compilePug
=
compilePug
;
exports
.
compilePug
=
compilePug
;
function
writeMainStyleFile
(
cb
)
{
//
function writeMainStyleFile(cb) {
console
.
log
(
'111'
);
//
console.log('111');
cb
();
//
cb();
}
//
}
exports
.
writeMainStyleFile
=
writeMainStyleFile
;
//
exports.writeMainStyleFile = writeMainStyleFile;
function
clearBuildDir
()
{
function
clearBuildDir
()
{
...
@@ -88,32 +93,38 @@ function clearBuildDir() {
...
@@ -88,32 +93,38 @@ function clearBuildDir() {
}
}
exports
.
clearBuildDir
=
clearBuildDir
;
exports
.
clearBuildDir
=
clearBuildDir
;
function
reload
(
done
)
{
browserSync
.
reload
();
done
();
}
function
serve
()
{
browserSync
.
init
({
server
:
dir
.
build
,
port
:
8080
,
startPath
:
'index.html'
,
open
:
false
,
});
watch
([
dir
.
src
+
'*.pug'
,
dir
.
blocks
+
'**/*.pug'
,
],
series
(
compilePug
,
reload
));
}
exports
.
default
=
series
(
compilePug
,
serve
);;
// Функции, не являющиеся задачами Gulp ----------------------------------------
// Функции, не являющиеся задачами Gulp ----------------------------------------
/**
function
writeConfig
(
config
)
{
* Получение дефолтных файлов блока (стили, JS, картинки, доп. файлы)
var
settings
=
{
type
:
'space'
,
size
:
2
}
* @param {string} block Искомый блок
let
configText
=
'// Файл перезаписывается программно при работе автоматизации
\
nlet config =
\
n'
+
jsonFormat
(
config
,
settings
)
+
';
\
n
\
nmodule.exports = config;
\
n'
;
* @param {string} blocksDir Директория, в которой лежат все блоки
fs
.
writeFile
(
'./config.js'
,
configText
,
function
(
err
){
* @return {object} Объект с соотв. путями, если они существуют { "style": [], "js": [], "img": [], "assets": [] }
if
(
err
)
throw
err
;
*/
console
.
log
(
'---------- Записан новый config.js'
);
// function getBlockDefaultFiles(block, blocksDir = dir.blocks) {
});
// let res = {};
}
// // Существует дефолтный стилевой файл?
// let defaultStyleFilePath = blocksDir + block + '/' + block + '.scss';
// fileExist(defaultStyleFilePath) ? res.style = [defaultStyleFilePath] : res.style = [];
// // Существует дефолтный JS-файл?
// let defaultJsFilePath = blocksDir + block + '/' + block + '.js';
// fileExist(defaultJsFilePath) ? res.js = [defaultJsFilePath] : res.js = [];
// // Существует дефолтная папка с картинками?
// let defaultImgFolderPath = blocksDir + block + '/img/';
// fileExist(defaultImgFolderPath) ? res.img = [defaultImgFolderPath] : res.img = [];
// // Существует дефолтная папка с доп. файлами?
// let defaultAssetsFolderPath = blocksDir + block + '/assets/';
// fileExist(defaultAssetsFolderPath) ? res.assets = [defaultAssetsFolderPath] : res.assets = [];
// return res;
// }
/**
/**
* Проверка существования файла или папки
* Проверка существования файла или папки
...
@@ -140,6 +151,29 @@ function getArraysDiff(a1, a2) {
...
@@ -140,6 +151,29 @@ function getArraysDiff(a1, a2) {
return
a1
.
filter
(
i
=>!
a2
.
includes
(
i
)).
concat
(
a2
.
filter
(
i
=>!
a1
.
includes
(
i
)))
return
a1
.
filter
(
i
=>!
a2
.
includes
(
i
)).
concat
(
a2
.
filter
(
i
=>!
a1
.
includes
(
i
)))
}
}
/**
* Получение дефолтных файлов блока (стили, JS, картинки, доп. файлы)
* @param {string} block Искомый блок
* @param {string} blocksDir Директория, в которой лежат все блоки
* @return {object} Объект с соотв. путями, если они существуют { "style": [], "js": [], "img": [], "assets": [] }
*/
// function getBlockDefaultFiles(block, blocksDir = dir.blocks) {
// let res = {};
// // Существует дефолтный стилевой файл?
// let defaultStyleFilePath = blocksDir + block + '/' + block + '.scss';
// fileExist(defaultStyleFilePath) ? res.style = [defaultStyleFilePath] : res.style = [];
// // Существует дефолтный JS-файл?
// let defaultJsFilePath = blocksDir + block + '/' + block + '.js';
// fileExist(defaultJsFilePath) ? res.js = [defaultJsFilePath] : res.js = [];
// // Существует дефолтная папка с картинками?
// let defaultImgFolderPath = blocksDir + block + '/img/';
// fileExist(defaultImgFolderPath) ? res.img = [defaultImgFolderPath] : res.img = [];
// // Существует дефолтная папка с доп. файлами?
// let defaultAssetsFolderPath = blocksDir + block + '/assets/';
// fileExist(defaultAssetsFolderPath) ? res.assets = [defaultAssetsFolderPath] : res.assets = [];
// return res;
// }
/**
/**
* СЛУЖЕБНАЯ: Добавляет список классов из принятого HTML в переменную blocksList, используется в потоке обработки Pug.
* СЛУЖЕБНАЯ: Добавляет список классов из принятого HTML в переменную blocksList, используется в потоке обработки Pug.
* @param {object} file Обрабатываемый файл
* @param {object} file Обрабатываемый файл
...
@@ -152,6 +186,7 @@ function getClassesToBlocksList(file, enc, cb) {
...
@@ -152,6 +186,7 @@ function getClassesToBlocksList(file, enc, cb) {
cb
(
null
,
file
);
cb
(
null
,
file
);
return
;
return
;
}
}
blocksList
=
[];
// Проверяем, не является ли обрабатываемый файл исключением
// Проверяем, не является ли обрабатываемый файл исключением
let
processThisFile
=
true
;
let
processThisFile
=
true
;
config
.
notGetBlocks
.
forEach
(
function
(
item
)
{
config
.
notGetBlocks
.
forEach
(
function
(
item
)
{
...
...
package.json
View file @
2d451525
...
@@ -40,6 +40,7 @@
...
@@ -40,6 +40,7 @@
"
cross-env
"
:
"
^5.0.0
"
,
"
cross-env
"
:
"
^5.0.0
"
,
"
css-mqpacker
"
:
"
^7.0.0
"
,
"
css-mqpacker
"
:
"
^7.0.0
"
,
"
del
"
:
"
^3.0.0
"
,
"
del
"
:
"
^3.0.0
"
,
"
get-classes-from-html
"
:
"
^1.0.1
"
,
"
gh-pages
"
:
"
^2.0.1
"
,
"
gh-pages
"
:
"
^2.0.1
"
,
"
gulp
"
:
"
^4.0.0
"
,
"
gulp
"
:
"
^4.0.0
"
,
"
gulp-cheerio
"
:
"
^0.6.2
"
,
"
gulp-cheerio
"
:
"
^0.6.2
"
,
...
@@ -67,6 +68,7 @@
...
@@ -67,6 +68,7 @@
"
gulp-wait
"
:
"
0.0.2
"
,
"
gulp-wait
"
:
"
0.0.2
"
,
"
gulp.spritesmith
"
:
"
^6.3.0
"
,
"
gulp.spritesmith
"
:
"
^6.3.0
"
,
"
husky
"
:
"
^1.1.4
"
,
"
husky
"
:
"
^1.1.4
"
,
"
json-format
"
:
"
^1.0.1
"
,
"
jstransformer-markdown-it
"
:
"
^2.0.0
"
,
"
jstransformer-markdown-it
"
:
"
^2.0.0
"
,
"
lint-staged
"
:
"
^8.0.4
"
,
"
lint-staged
"
:
"
^8.0.4
"
,
"
merge-stream
"
:
"
^1.0.1
"
,
"
merge-stream
"
:
"
^1.0.1
"
,
...
@@ -81,7 +83,6 @@
...
@@ -81,7 +83,6 @@
},
},
"dependencies"
:
{
"dependencies"
:
{
"
baron
"
:
"
^3.0.3
"
,
"
baron
"
:
"
^3.0.3
"
,
"
get-classes-from-html
"
:
"
^1.0.1
"
,
"
ismobilejs
"
:
"
^0.5.1
"
,
"
ismobilejs
"
:
"
^0.5.1
"
,
"
jquery
"
:
"
^3.1.1
"
,
"
jquery
"
:
"
^3.1.1
"
,
"
jquery-migrate
"
:
"
^3.0.0
"
,
"
jquery-migrate
"
:
"
^3.0.0
"
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment