Enable live reloading for browsersync
This commit is contained in:
parent
ac903b87e0
commit
4c6dfbf2c5
4 changed files with 718 additions and 55 deletions
42
gulpfile.js
42
gulpfile.js
|
@ -1,6 +1,6 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const { src, dest, series, parallel } = require('gulp');
|
const { src, dest, series, parallel, watch } = require('gulp');
|
||||||
const browserSync = require('browser-sync').create();
|
const browserSync = require('browser-sync').create();
|
||||||
const del = require('del');
|
const del = require('del');
|
||||||
const babel = require('gulp-babel');
|
const babel = require('gulp-babel');
|
||||||
|
@ -9,6 +9,11 @@ const terser = require('gulp-terser');
|
||||||
const htmlmin = require('gulp-htmlmin');
|
const htmlmin = require('gulp-htmlmin');
|
||||||
const imagemin = require('gulp-imagemin');
|
const imagemin = require('gulp-imagemin');
|
||||||
const sourcemaps = require('gulp-sourcemaps');
|
const sourcemaps = require('gulp-sourcemaps');
|
||||||
|
const mode = require('gulp-mode')({
|
||||||
|
modes: ["production", "development"],
|
||||||
|
default: "development",
|
||||||
|
verbose: false
|
||||||
|
});
|
||||||
const webpack_stream = require('webpack-stream');
|
const webpack_stream = require('webpack-stream');
|
||||||
const webpack_config = require('./webpack.prod.js');
|
const webpack_config = require('./webpack.prod.js');
|
||||||
const inject = require('gulp-inject');
|
const inject = require('gulp-inject');
|
||||||
|
@ -16,13 +21,21 @@ const postcss = require('gulp-postcss');
|
||||||
const cssnano = require('cssnano');
|
const cssnano = require('cssnano');
|
||||||
const autoprefixer = require('autoprefixer');
|
const autoprefixer = require('autoprefixer');
|
||||||
|
|
||||||
function devBrowser() {
|
function serve() {
|
||||||
browserSync.init({
|
browserSync.init({
|
||||||
server: {
|
server: {
|
||||||
baseDir: "./dist"
|
baseDir: "./dist"
|
||||||
},
|
},
|
||||||
port: 8080
|
port: 8080
|
||||||
});
|
});
|
||||||
|
|
||||||
|
watch(['src/**/*.js', '!src/bundle.js'], javascript);
|
||||||
|
watch('src/bundle.js', webpack);
|
||||||
|
watch('src/**/*.css', css);
|
||||||
|
watch(['src/**/*.html', '!src/index.html'], html);
|
||||||
|
watch(['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'], images);
|
||||||
|
watch(['src/**/*.json', 'src/**/*.ico'], copy);
|
||||||
|
watch('src/index.html', injectBundle);
|
||||||
}
|
}
|
||||||
|
|
||||||
function setStandalone() {
|
function setStandalone() {
|
||||||
|
@ -38,7 +51,7 @@ function clean() {
|
||||||
|
|
||||||
function javascript() {
|
function javascript() {
|
||||||
return src(['src/**/*.js', '!src/bundle.js'], {base: './src/'})
|
return src(['src/**/*.js', '!src/bundle.js'], {base: './src/'})
|
||||||
.pipe(sourcemaps.init({loadMaps: true}))
|
.pipe(mode.development(sourcemaps.init({loadMaps: true})))
|
||||||
.pipe(babel({
|
.pipe(babel({
|
||||||
presets: ['@babel/preset-env']
|
presets: ['@babel/preset-env']
|
||||||
}))
|
}))
|
||||||
|
@ -46,41 +59,47 @@ function javascript() {
|
||||||
keep_fnames: true,
|
keep_fnames: true,
|
||||||
mangle: false
|
mangle: false
|
||||||
}))
|
}))
|
||||||
.pipe(sourcemaps.write('.'))
|
.pipe(mode.development(sourcemaps.write('.')))
|
||||||
.pipe(dest('dist/'));
|
.pipe(dest('dist/'))
|
||||||
|
.pipe(browserSync.stream());;
|
||||||
}
|
}
|
||||||
|
|
||||||
function webpack() {
|
function webpack() {
|
||||||
return webpack_stream(webpack_config)
|
return webpack_stream(webpack_config)
|
||||||
.pipe(dest('dist/'));
|
.pipe(dest('dist/'))
|
||||||
|
.pipe(browserSync.stream());
|
||||||
}
|
}
|
||||||
|
|
||||||
function css() {
|
function css() {
|
||||||
return src('src/**/*.css', {base: './src/'})
|
return src('src/**/*.css', {base: './src/'})
|
||||||
.pipe(sourcemaps.init({loadMaps: true}))
|
.pipe(mode.development(sourcemaps.init({loadMaps: true})))
|
||||||
.pipe(postcss([
|
.pipe(postcss([
|
||||||
autoprefixer(),
|
autoprefixer(),
|
||||||
cssnano()
|
cssnano()
|
||||||
]))
|
]))
|
||||||
.pipe(sourcemaps.write('.'))
|
.pipe(mode.development(sourcemaps.write('.')))
|
||||||
.pipe(dest('dist/'));
|
.pipe(dest('dist/'))
|
||||||
|
.pipe(browserSync.stream());
|
||||||
}
|
}
|
||||||
|
|
||||||
function html() {
|
function html() {
|
||||||
return src(['src/**/*.html', '!src/index.html'], {base: './src/'})
|
return src(['src/**/*.html', '!src/index.html'], {base: './src/'})
|
||||||
.pipe(htmlmin({ collapseWhitespace: true }))
|
.pipe(htmlmin({ collapseWhitespace: true }))
|
||||||
.pipe(dest('dist/'));
|
.pipe(dest('dist/'))
|
||||||
|
.pipe(browserSync.stream());
|
||||||
}
|
}
|
||||||
|
|
||||||
function images() {
|
function images() {
|
||||||
return src(['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'], {base: './src/'})
|
return src(['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'], {base: './src/'})
|
||||||
.pipe(imagemin())
|
.pipe(imagemin())
|
||||||
.pipe(dest('dist/'))
|
.pipe(dest('dist/'))
|
||||||
|
.pipe(browserSync.stream());
|
||||||
}
|
}
|
||||||
|
|
||||||
function copy() {
|
function copy() {
|
||||||
return src(['src/**/*.json', 'src/**/*.ico'], {base: './src/'})
|
return src(['src/**/*.json', 'src/**/*.ico'], {base: './src/'})
|
||||||
.pipe(dest('dist/'))
|
.pipe(dest('dist/'))
|
||||||
|
.pipe(browserSync.stream());
|
||||||
}
|
}
|
||||||
|
|
||||||
function injectBundle() {
|
function injectBundle() {
|
||||||
|
@ -89,7 +108,8 @@ function injectBundle() {
|
||||||
src(['src/scripts/apploader.js'], {read: false}, {base: './src/'}), {relative: true}
|
src(['src/scripts/apploader.js'], {read: false}, {base: './src/'}), {relative: true}
|
||||||
))
|
))
|
||||||
.pipe(dest('dist/'))
|
.pipe(dest('dist/'))
|
||||||
|
.pipe(browserSync.stream());
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.default = series(clean, parallel(javascript, webpack, css, html, images, copy), injectBundle)
|
exports.default = series(clean, parallel(javascript, webpack, css, html, images, copy), injectBundle)
|
||||||
exports.run = series(exports.default, setStandalone, devBrowser)
|
exports.serve = series(exports.default, setStandalone, serve)
|
||||||
|
|
|
@ -22,10 +22,13 @@
|
||||||
"gulp-htmlmin": "^5.0.1",
|
"gulp-htmlmin": "^5.0.1",
|
||||||
"gulp-imagemin": "^7.1.0",
|
"gulp-imagemin": "^7.1.0",
|
||||||
"gulp-inject": "^5.0.5",
|
"gulp-inject": "^5.0.5",
|
||||||
|
"gulp-mode": "^1.0.2",
|
||||||
"gulp-postcss": "^8.0.0",
|
"gulp-postcss": "^8.0.0",
|
||||||
|
"gulp-sass": "^4.0.2",
|
||||||
"gulp-sourcemaps": "^2.6.5",
|
"gulp-sourcemaps": "^2.6.5",
|
||||||
"gulp-terser": "^1.2.0",
|
"gulp-terser": "^1.2.0",
|
||||||
"html-webpack-plugin": "^3.2.0",
|
"html-webpack-plugin": "^3.2.0",
|
||||||
|
"node-sass": "^4.13.1",
|
||||||
"style-loader": "^1.1.3",
|
"style-loader": "^1.1.3",
|
||||||
"stylelint": "^13.1.0",
|
"stylelint": "^13.1.0",
|
||||||
"stylelint-config-rational-order": "^0.1.2",
|
"stylelint-config-rational-order": "^0.1.2",
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
const common = require("./webpack.common");
|
const common = require("./webpack.common");
|
||||||
const merge = require("webpack-merge");
|
const merge = require("webpack-merge");
|
||||||
const HtmlWebpackPlugin = require('html-webpack-plugin');
|
|
||||||
const ConcatPlugin = require('webpack-concat-plugin');
|
|
||||||
|
|
||||||
module.exports = merge(common, {
|
module.exports = merge(common, {
|
||||||
mode: "development",
|
mode: "development",
|
||||||
|
@ -28,15 +26,5 @@ module.exports = merge(common, {
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
}
|
||||||
plugins: [
|
|
||||||
new HtmlWebpackPlugin({
|
|
||||||
filename: 'index.html',
|
|
||||||
template: 'index.html'
|
|
||||||
}),
|
|
||||||
new ConcatPlugin({
|
|
||||||
name: 'scripts/apploader.js',
|
|
||||||
filesToConcat: ['./standalone.js', './scripts/apploader.js']
|
|
||||||
})
|
|
||||||
]
|
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue