Commit e614d75f authored by Yuri Bondarenko's avatar Yuri Bondarenko

up

parent 8c5700f7
...@@ -2,32 +2,16 @@ ...@@ -2,32 +2,16 @@
"parserOptions": { "parserOptions": {
"ecmaVersion": 7, "ecmaVersion": 7,
"sourceType": "module", "sourceType": "module",
"ecmaFeatures": { "ecmaFeatures": {}
}
}, },
"env": { "env": {
"browser": true, "browser": true,
"jquery": true, "jquery": false,
"node": false "node": false
}, },
"extends": "eslint:recommended", "extends": "eslint:recommended",
"rules": { "rules": {
"indent": [ "indent": ["error", "tab"],
"error", "linebreak-style": ["error", "unix"]
"tab"
],
"linebreak-style": [
"error",
"unix"
],
"quotes": [
"error",
"single"
],
"semi": [
"error",
"always"
]
} }
} }
{
"useTabs": true,
"tabWidth": 4
}
{ {
"rules": { "rules": {
"at-rule-no-unknown": [true, { "at-rule-no-unknown": [
"ignoreAtRules": [ true,
"rules" {
] "ignoreAtRules": ["rules"]
}], }
],
"block-no-empty": null, "block-no-empty": null,
"color-no-invalid-hex": true, "color-no-invalid-hex": true,
"comment-no-empty": true, "comment-no-empty": true,
"declaration-block-no-duplicate-properties": [ "declaration-block-no-duplicate-properties": [
true, true,
{ {
"ignore": [ "ignore": ["consecutive-duplicates-with-different-values"]
"consecutive-duplicates-with-different-values"
]
} }
], ],
"declaration-block-no-shorthand-property-overrides": true, "declaration-block-no-shorthand-property-overrides": true,
...@@ -42,9 +41,7 @@ ...@@ -42,9 +41,7 @@
"blockless-after-same-name-blockless", "blockless-after-same-name-blockless",
"first-nested" "first-nested"
], ],
"ignore": [ "ignore": ["after-comment"]
"after-comment"
]
} }
], ],
"at-rule-name-case": "lower", "at-rule-name-case": "lower",
...@@ -61,23 +58,15 @@ ...@@ -61,23 +58,15 @@
"comment-empty-line-before": [ "comment-empty-line-before": [
"always", "always",
{ {
"ignore": [ "ignore": ["stylelint-commands"]
"stylelint-commands"
]
} }
], ],
"comment-whitespace-inside": "always", "comment-whitespace-inside": "always",
"custom-property-empty-line-before": [ "custom-property-empty-line-before": [
"always", "always",
{ {
"except": [ "except": ["after-custom-property", "first-nested"],
"after-custom-property", "ignore": ["after-comment", "inside-single-line-block"]
"first-nested"
],
"ignore": [
"after-comment",
"inside-single-line-block"
]
} }
], ],
"declaration-bang-space-after": "never", "declaration-bang-space-after": "never",
...@@ -93,14 +82,8 @@ ...@@ -93,14 +82,8 @@
"declaration-empty-line-before": [ "declaration-empty-line-before": [
"always", "always",
{ {
"except": [ "except": ["after-declaration", "first-nested"],
"after-declaration", "ignore": ["after-comment", "inside-single-line-block"]
"first-nested"
],
"ignore": [
"after-comment",
"inside-single-line-block"
]
} }
], ],
"function-comma-newline-after": "always-multi-line", "function-comma-newline-after": "always-multi-line",
...@@ -131,9 +114,7 @@ ...@@ -131,9 +114,7 @@
"rule-empty-line-before": [ "rule-empty-line-before": [
"always-multi-line", "always-multi-line",
{ {
"ignore": [ "ignore": ["after-comment"]
"after-comment"
]
} }
], ],
"selector-attribute-brackets-space-inside": "never", "selector-attribute-brackets-space-inside": "never",
......
...@@ -7,7 +7,8 @@ ...@@ -7,7 +7,8 @@
"dbaeumer.vscode-eslint", "dbaeumer.vscode-eslint",
"shinnn.stylelint", "shinnn.stylelint",
"mkaufman.htmlhint", "mkaufman.htmlhint",
"formulahendry.terminal" "formulahendry.terminal",
"esbenp.prettier-vscode"
], ],
// List of extensions recommended by VS Code that should not be recommended for users of this workspace. // List of extensions recommended by VS Code that should not be recommended for users of this workspace.
"unwantedRecommendations": [ "unwantedRecommendations": [
......
/* ======================================================== */ /* ======================================================== */
/* global require */ /* global require */
const gulp = require( 'gulp' ); // Собственно gulp const { task, src, dest, watch, series, parallel } = require("gulp"); // Собственно gulp
const pump = require( 'pump' ); // отслеживание ошибок
const clean = require( 'gulp-clean' ); // удаление файлов и каталогов const clean = require("gulp-clean"); // удаление файлов и каталогов
const xslt = require( 'gulp-xslt' ); const include = require("gulp-file-include");
const version = require("gulp-version-number"); // версионность файлов
const postcss = require( 'gulp-postcss' ); // Пост-обработка CSS const postcss = require("gulp-postcss"); // Пост-обработка CSS
const postcssPresetEnv = require( 'postcss-preset-env' ); // CSS Next const postcssPresetEnv = require("postcss-preset-env"); // CSS Next
const atImport = require('postcss-import'); // парсинг и включение импорта CSS const atImport = require("postcss-import"); // парсинг и включение импорта CSS
const sourcemaps = require( 'gulp-sourcemaps' ); // карты исходного кода const sourcemaps = require("gulp-sourcemaps"); // карты исходного кода
const webpack = require( 'webpack-stream' ); const webpack = require("webpack-stream");
const compiler = require( 'webpack' ); const compiler = require("webpack");
const imagemin = require( 'gulp-image' ); // оптимизация картинок const imagemin = require("gulp-image"); // оптимизация картинок
const cache = require( 'gulp-cache' ); const cache = require("gulp-cache");
const browserSync = require( 'browser-sync' ).create(); // обновление налету const browsersync = require("browser-sync").create(); // обновление налету
/* ========================================================== */ /* ========================================================== */
...@@ -32,7 +32,7 @@ const postcssOptions = [ ...@@ -32,7 +32,7 @@ const postcssOptions = [
stage: 0, stage: 0,
autoprefixer: { autoprefixer: {
grid: true, grid: true,
browsers: [ 'last 4 versions', 'ie >= 11', 'iOS >= 9' ] browsers: ["last 4 versions", "ie >= 11", "iOS >= 9"]
} }
}) })
]; ];
...@@ -43,182 +43,238 @@ const postcssOptions = [ ...@@ -43,182 +43,238 @@ const postcssOptions = [
* CLEAN * CLEAN
* Полная очистка * Полная очистка
*/ */
gulp.task( 'CLEAN', function( cb ){ const Clean = cb => {
pump([ cb();
gulp.src( [ './dev', './prod' ], { read: false } ), return src(["./dev", "./prod"], { read: false, allowEmpty: true }).pipe(
clean() clean()
], cb ); );
}); };
task("CLEAN", Clean);
/** /**
* CSS * CSS
*/ */
gulp.task( 'dev:css', function( cb ){ const devCss = cb => {
cb();
// Собираем свои стили return src("./src/assets/css/*.css")
pump([ .pipe(sourcemaps.init())
gulp.src( './src/assets/css/*.css' ), .pipe(postcss(postcssOptions))
sourcemaps.init(), .pipe(sourcemaps.write("."))
postcss( postcssOptions ), .pipe(dest("../prodalim/frontend/web/assets/css"))
sourcemaps.write( '.' ), .pipe(browsersync.stream());
gulp.dest( './dev/assets/css' ), };
browserSync.stream()
], cb );
});
// Собираем CSS // Собираем CSS
gulp.task( 'prod:css', function( cb ){ const prodCss = cb => {
cb();
// Собираем свои стили return src("./src/assets/css/*.css")
pump([ .pipe(postcss(postcssOptions))
gulp.src( './src/assets/css/*.css' ), .pipe(dest("./prod/assets/css"));
postcss( postcssOptions ), };
gulp.dest( './prod/assets/css' ),
], cb );
});
// ================== JS ============================ // ================== JS ============================
// Компилируем и собираем все js файлы проекта // Компилируем и собираем все js файлы проекта
gulp.task( 'dev:js', function( cb ){ const devJs = cb => {
cb();
// ES5 return (
pump([ src("./src/assets/js/*.js")
gulp.src( './src/assets/js/*.js' ), .pipe(
webpack( require( './webpack.dev.js' ), compiler, function( err, stats ){ webpack(require("./webpack.dev.js"), compiler, function(
err,
stats
) {
// console.log( err, stats ); // console.log( err, stats );
}), })
gulp.dest( './dev/assets/js' ) )
], cb ); // .pipe( dest( './dev/assets/js' ) )
.pipe(dest("../prodalim/frontend/web/assets/js"))
}); .pipe(browsersync.stream())
);
};
// Обрабатываем js файлы библиотек и проекта // Обрабатываем js файлы библиотек и проекта
gulp.task( 'prod:js', function(){ const prodJs = cb => {
cb();
// ES5 return src("./src/assets/js/*.js")
pump([ .pipe(
gulp.src( './src/assets/js/*.js' ), webpack(require("./webpack.prod.js"), compiler, function(
webpack( require( './webpack.prod.js' ), compiler, function( err, stats ){ err,
stats
) {
// console.log( err, stats ); // console.log( err, stats );
}), })
gulp.dest( './prod/assets/js' ) )
]); .pipe(dest("./prod/assets/js"));
};
});
// ================== IMG ============================ // ================== IMG ============================
// Оптимизация картинок для dev // Оптимизация картинок для dev
gulp.task('dev:img', function( cb ) { const devImgCommon = cb => {
pump([ cb();
gulp.src( [ return src([
'./src/assets/img/**/*', "!./src/favicon/**/*",
'./src/components/**/*.png', "!./src/assets/**/*",
'./src/components/**/*.jpg', "!./src/components/**/*",
'./src/components/**/*.jpeg', "./src/**/*.png",
'./src/components/**/*.gif', "./src/**/*.jpg",
'./src/components/**/*.svg' ] "./src/**/*.jpeg",
), "./src/**/*.gif",
cache( "./src/**/*.svg"
imagemin() ])
), .pipe(cache(imagemin()))
gulp.dest( './dev/assets/img' ) .pipe(dest("./dev"));
], cb ); };
});
const devImgComponents = cb => {
cb();
return src([
"./src/assets/img/**/*",
"./src/components/**/*.png",
"./src/components/**/*.jpg",
"./src/components/**/*.jpeg",
"./src/components/**/*.gif",
"./src/components/**/*.svg"
])
.pipe(cache(imagemin()))
.pipe(dest("./dev/assets/img"));
};
// Оптимизация картинок для prod // Оптимизация картинок для prod
gulp.task('prod:img', function( cb ) { const prodImgCommon = cb => {
pump([ cb();
gulp.src( [ return src([
'./src/assets/img/**/*', "src/**/*.png",
'./src/components/**/*.png', "src/**/*.jpg",
'./src/components/**/*.jpg', "src/**/*.jpeg",
'./src/components/**/*.jpeg', "src/**/*.gif",
'./src/components/**/*.gif', "src/**/*.svg",
'./src/components/**/*.svg' ] "!src/favicon/",
), "!src/assets/",
cache( "!src/components/"
imagemin() ])
), .pipe(cache(imagemin()))
gulp.dest( './prod/assets/img' ) .pipe(dest("prod"));
], cb ); };
});
const prodImgComponents = cb => {
cb();
return src([
"src/assets/img/**/*",
"src/components/**/*.png",
"src/components/**/*.jpg",
"src/components/**/*.jpeg",
"src/components/**/*.gif",
"src/components/**/*.svg"
])
.pipe(cache(imagemin()))
.pipe(dest("prod/assets/img"));
};
// ================== HTML ============================ // ================== HTML ============================
// HTML для dev // HTML для dev
gulp.task( 'dev:html', function( cb ){ const devHtml = () => {
return src([
// HTML "src/**/*.html",
pump([ "!src/assets/*.html",
gulp.src( './src/**/*.xml' ), "!src/components/**/*.html"
xslt( './src/components/common/common.xsl' ), ])
gulp.dest( './dev' ) .pipe(
], cb ); include({
prefix: "@@",
pump([ basepath: "@file",
gulp.src( [ context: {
'./src/favicon.ico', env: "DEV",
'./src/robots.txt' path: "/assets"
] ), }
gulp.dest( './dev' ) })
]); )
}); .pipe(
version({
value: "%MDS%",
append: {
key: "v",
to: ["css", "js", ["image", "%TS%"]]
}
})
)
.pipe(dest("./dev"));
};
// HTML для prod // HTML для prod
gulp.task( 'prod:html', function( cb ){ const prodHtml = cb => {
pump([ cb();
gulp.src( './src/**/*.xml' ), return src([
xslt( './src/components/common/common.xsl' ), "src/**/*.html",
gulp.dest( './prod' ) "!src/assets/*.html",
], cb ); "!src/components/**/*.html"
])
pump([ .pipe(
gulp.src( [ include({
'./src/favicon.ico', prefix: "@@",
'./src/robots.txt', basepath: "@file",
] ), context: {
gulp.dest( './prod' ) env: "PROD",
]); path: "/assets"
}
}); })
)
.pipe(
version({
value: "%MDS%",
append: {
key: "v",
to: ["css", "js", ["image", "%TS%"]]
}
})
)
.pipe(dest("./prod"));
};
// ================== DEV ============================ // ================== DEV ============================
// Слежение за dev // Слежение за dev
gulp.task( 'DEV', [ 'dev:img', 'dev:css', 'dev:js', 'dev:html' ], function() { function browserSync() {
browsersync.init({
browserSync.init({ /* server: {
server: { baseDir: '../prodalim/frontend/web/'
baseDir: './dev/' }, */
} proxy: "prodalim.local"
// port: 3000
}); });
}
gulp.watch( './src/assets/css/*.css' , ['dev:css']);
gulp.watch( './src/components/**/*.css' , ['dev:css']); function browserSyncReload(done) {
browsersync.reload();
gulp.watch( './src/assets/js/*.js', [ 'dev:js' ] ).on('change', browserSync.reload); done();
gulp.watch( './src/components/**/*.js', [ 'dev:js' ] ).on('change', browserSync.reload); }
gulp.watch( './dev/assets/js/**/*' ).on('change', browserSync.reload);
task(
gulp.watch( './src/**/*.xml', [ 'dev:html' ] ); "DEV",
gulp.watch( './dev/*.html' ).on('change', browserSync.reload); series(devImgCommon, devImgComponents, devCss, devJs, devHtml, () => {
watch(["./src/assets/css/*.css", "./src/components/**/*.css"], devCss);
gulp.watch( './src/assets/img/**/*', [ 'dev:img' ] );
gulp.watch( './src/components/**/*.gif', [ 'dev:img' ] ); watch(["./src/assets/js/*.js", "./src/components/**/*.js"], devJs);
gulp.watch( './src/components/**/*.jpg', [ 'dev:img' ] );
gulp.watch( './src/components/**/*.jpeg', [ 'dev:img' ] ); watch("./src/**/*.html", series(devHtml, browserSyncReload));
gulp.watch( './src/components/**/*.png', [ 'dev:img' ] );
gulp.watch( './src/components/**/*.svg', [ 'dev:img' ] ); watch(
gulp.watch( './dev/assets/img/**/*' ).on( 'change', browserSync.reload ); [
}); "./src/assets/img/**/*",
"./src/components/**/*.gif",
"./src/components/**/*.jpg",
"./src/components/**/*.jpeg",
"./src/components/**/*.png",
"./src/components/**/*.svg"
],
parallel(devImgCommon, devImgComponents)
);
browserSync();
})
);
// ================== PROD ============================ // ================== PROD ============================
// Публикация на prod // Публикация на prod
gulp.task( 'PROD', function(){ task(
gulp.start( 'prod:img', 'prod:css', 'prod:js', 'prod:html' ); "PROD",
}); series(prodImgCommon, prodImgComponents, prodCss, prodJs, prodHtml)
\ No newline at end of file );
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -4,26 +4,36 @@ ...@@ -4,26 +4,36 @@
/* global module */ /* global module */
module.exports = { module.exports = {
mode: 'development', // mode: 'development',
mode: "production",
entry: { entry: {
app: './src/assets/js/app.js' app: "./src/assets/js/app.js"
}, },
output: { output: {
filename: '[name].js' filename: "[name].js"
}, },
devtool: 'source-map', devtool: "source-map",
module: { module: {
rules: [ rules: [
{ {
test: /\.js$/, test: /\.js$/,
exclude: /node_modules/, // exclude: /node_modules/,
exclude: /node_modules\/(?!(dom7|swiper|ssr-window)\/).*/,
use: { use: {
loader: 'babel-loader', loader: "babel-loader",
options: { options: {
presets: [ presets: [
[ '@babel/preset-env', { [
useBuiltIns: 'usage' "@babel/preset-env",
} ] {
useBuiltIns: "usage",
targets: [
"last 4 versions",
"ie >= 11",
"iOS >= 9"
]
}
]
] ]
} }
} }
......
...@@ -4,26 +4,35 @@ ...@@ -4,26 +4,35 @@
/* global module */ /* global module */
module.exports = { module.exports = {
mode: 'production', mode: "production",
entry: { entry: {
app: './src/assets/js/app.js' app: "./src/assets/js/app.js"
}, },
output: { output: {
filename: '[name].js' filename: "[name].js"
}, },
// devtool: 'source-map', // devtool: 'source-map',
module: { module: {
rules: [ rules: [
{ {
test: /\.js$/, test: /\.js$/,
exclude: /node_modules/, // exclude: /node_modules/,
exclude: /node_modules\/(?!(dom7|swiper|ssr-window)\/).*/,
use: { use: {
loader: 'babel-loader', loader: "babel-loader",
options: { options: {
presets: [ presets: [
[ '@babel/preset-env', { [
useBuiltIns: 'usage' "@babel/preset-env",
} ] {
useBuiltIns: "usage",
targets: [
"last 4 versions",
"ie >= 11",
"iOS >= 9"
]
}
]
] ]
} }
} }
......
This source diff could not be displayed because it is too large. You can view the blob instead.
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