Commit e614d75f authored by Yuri Bondarenko's avatar Yuri Bondarenko

up

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