Improve Gulp

pull/3729/head
Daniel 2021-05-17 03:44:52 +05:30
parent 96196217d4
commit be71fb2963
8 changed files with 338 additions and 283 deletions

View File

@ -1,3 +1,4 @@
/* eslint-disable no-console */
/* eslint-disable camelcase */ /* eslint-disable camelcase */
/* eslint-disable no-undef */ /* eslint-disable no-undef */
/* eslint-disable unicorn/prefer-module */ /* eslint-disable unicorn/prefer-module */
@ -15,12 +16,24 @@ const postcss = require('gulp-postcss')
const sourcemaps = require('gulp-sourcemaps') const sourcemaps = require('gulp-sourcemaps')
const fileinclude = require('gulp-file-include') const fileinclude = require('gulp-file-include')
const esbuild = require('esbuild')
// const { getTarget } = require('./get.browserslist.target')
const pkg = require('./package')
const year = new Date().getFullYear()
const banner = `/*!
* AdminLTE v${pkg.version} (${pkg.homepage})
* Copyright 2014-${year} ${pkg.author}
* Licensed under MIT (https://github.com/ColorlibHQ/AdminLTE/blob/master/LICENSE)
*/`
// Define paths // Define paths
const paths = { const paths = {
dist: { dist: {
base: './dist/', base: './dist/',
css: './dist/css', css: './dist/css',
js: './dist/js',
html: './dist/pages', html: './dist/pages',
assets: './dist/assets', assets: './dist/assets',
img: './dist/assets/img', img: './dist/assets/img',
@ -37,12 +50,14 @@ const paths = {
assets: './src/assets/**/*.*', assets: './src/assets/**/*.*',
partials: './src/partials/**/*.html', partials: './src/partials/**/*.html',
scss: './src/scss', scss: './src/scss',
ts: './src/ts',
node_modules: './node_modules/', node_modules: './node_modules/',
vendor: './vendor' vendor: './vendor'
}, },
temp: { temp: {
base: './.temp/', base: './.temp/',
css: './.temp/css', css: './.temp/css',
js: './.temp/js',
html: './.temp/pages', html: './.temp/pages',
assets: './.temp/assets', assets: './.temp/assets',
vendor: './.temp/vendor' vendor: './.temp/vendor'
@ -79,6 +94,23 @@ gulp.task('scss', () => {
.pipe(browserSync.stream()) .pipe(browserSync.stream())
}) })
gulp.task('ts', () => {
return esbuild.build({
entryPoints: [paths.src.ts + '/adminlte.ts'],
banner: {
js: banner
},
bundle: true,
color: true,
format: 'iife',
sourcemap: true,
target: ['chrome60'],
outfile: paths.temp.js + '/adminlte.js'
}).catch(
error => console.error(error)
)
})
gulp.task('index', () => { gulp.task('index', () => {
return gulp.src([paths.src.base + '*.html']) return gulp.src([paths.src.base + '*.html'])
.pipe(fileinclude({ .pipe(fileinclude({
@ -116,12 +148,13 @@ gulp.task('vendor', () => {
.pipe(gulp.dest(paths.temp.vendor)) .pipe(gulp.dest(paths.temp.vendor))
}) })
gulp.task('serve', gulp.series('scss', 'html', 'index', 'assets', 'vendor', () => { gulp.task('serve', gulp.series('scss', 'ts', 'html', 'index', 'assets', 'vendor', () => {
browserSync.init({ browserSync.init({
server: paths.temp.base server: paths.temp.base
}) })
gulp.watch([paths.src.scss + '/**/*.scss', paths.src.scss + '/adminlte.scss'], gulp.series('scss')) gulp.watch([paths.src.scss], gulp.series('scss'))
gulp.watch([paths.src.ts], gulp.series('ts'))
gulp.watch([paths.src.html, paths.src.base + '*.html', paths.src.partials], gulp.series('html', 'index')) gulp.watch([paths.src.html, paths.src.base + '*.html', paths.src.partials], gulp.series('html', 'index'))
gulp.watch([paths.src.assets], gulp.series('assets')) gulp.watch([paths.src.assets], gulp.series('assets'))
gulp.watch([paths.src.vendor], gulp.series('vendor')) gulp.watch([paths.src.vendor], gulp.series('vendor'))

View File

@ -2,293 +2,135 @@
<html lang="en"> <html lang="en">
<!-- For RTL verison --> <!-- For RTL verison -->
<!-- <html lang="en" dir="rtl"> --> <!-- <html lang="en" dir="rtl"> -->
<head> <head>
<meta charset="UTF-8"> @@include('./_head.html', {
<meta http-equiv="X-UA-Compatible" content="IE=edge"> "path": ".",
<meta name="viewport" content="width=device-width, initial-scale=1.0"> "title": "AdminLTE - Free Bootstrap 5 Admin Dashboard"
<!-- The page supports both dark and light color schemes, and the page author prefers / default is light. --> })
<meta name="color-scheme" content="light dark"> <!-- <link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css"> -->
<title>AdminLTE v4</title> </head>
<!-- For dark mode use dist/css/alt/adminlte.pcs.css, remove dist/css/adminlte.css -->
<!-- <link rel="stylesheet" href="dist/css/dark/adminlte-dark.css"> -->
<!-- For RTL verison -->
<!-- <link rel="stylesheet" href="dist/css/rtl/adminlte.rtl.css"> -->
<link rel="stylesheet" href="dist/css/adminlte.css">
<link rel="stylesheet" href="./node_modules/@fortawesome/fontawesome-free/css/all.min.css">
<link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
@@include('./_head.html', {
"path": ".",
"title": "Volt - Free Bootstrap 5 Admin Dashboard"
})
</head>
<body class="layout-fixed"> <body class="layout-fixed">
<div class="wrapper"> <div class="wrapper">
<!-- Navbar --> @@include('./dashboard/_topbar.html', {
<nav class="main-header navbar navbar-expand"> "path": "."
<div class="container-fluid"> })
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link sidebar-full-icon" data-pushmenu="full" href="#" role="button"><i class="fas fa-bars"></i></a>
</li>
<li class="nav-item">
<a href="#" class="nav-link">Home</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link">Contact</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</li>
</ul>
</div>
</nav>
<!-- /.navbar -->
<!-- Main Sidebar Container --> @@include('./dashboard/_sidenav.html', {
<aside class="main-sidebar sidebar-bg-dark sidebar-color-primary shadow"> "path": "."
<div class="brand-container"> })
<a href="#" class="brand-link"> <!-- Main content -->
<img src="dist/img/AdminLTELogo.png" alt="AdminLTE Logo" class="brand-image opacity-80 shadow"> <div class="content-wrapper">
<span class="brand-text fw-light">AdminLTE 4</span> <div class="content-header">
</a> <div class="container-fluid">
<a class="pushmenu mx-1" data-pushmenu="mini" href="#" role="button"><i class="fas fa-angle-double-left"></i></a> <div class="row mb-2">
</div> <div class="col-sm-6">
<!-- Sidebar --> <div class="fs-3">Dashboard</div>
<div class="sidebar"> </div>
<nav class="mt-2"> <div class="col-sm-6">
<!-- Sidebar Menu --> <ol class="breadcrumb float-sm-end">
<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="false"> <li class="breadcrumb-item"><a href="#">Home</a></li>
<li class="nav-item menu-open"> <li class="breadcrumb-item active" aria-current="page">Library</li>
<a href="#" class="nav-link active"> </ol>
<i class="nav-icon fas fa-circle"></i> </div>
<p>
Dashboard
<i class="right fas fa-angle-left"></i>
</p>
</a>
<ul class="nav nav-treeview">
<li class="nav-item">
<a href="#" class="nav-link active">
<i class="nav-icon far fa-circle"></i>
<p>
Dashboard v1
</p>
</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link">
<i class="nav-icon far fa-circle"></i>
<p>
Dashboard v2
</p>
</a>
</li>
</ul>
</li>
<li class="nav-item menu-open">
<a href="#" class="nav-link">
<i class="nav-icon fas fa-circle"></i>
<p>
Forms
<i class="right fas fa-angle-left"></i>
</p>
</a>
<ul class="nav nav-treeview">
<li class="nav-item">
<a href="./pages/forms/general.html" class="nav-link">
<i class="nav-icon far fa-circle"></i>
<p>
General Elements
</p>
</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link">
<i class="nav-icon far fa-circle"></i>
<p>
Level 2
</p>
</a>
</li>
</ul>
</li>
<li class="nav-header">MULTI LEVEL EXAMPLE</li>
<li class="nav-item">
<a href="#" class="nav-link">
<i class="nav-icon fas fa-circle"></i>
<p>
Level 1
<i class="right fas fa-angle-left"></i>
</p>
</a>
<ul class="nav nav-treeview">
<li class="nav-item">
<a href="#" class="nav-link">
<i class="nav-icon far fa-circle"></i>
<p>
Level 2
<i class="right fas fa-angle-left"></i>
</p>
</a>
<ul class="nav nav-treeview">
<li class="nav-item">
<a href="#" class="nav-link">
<i class="nav-icon far fa-dot-circle"></i>
<p>
Level 3
</p>
</a>
</li>
</ul>
</li>
<li class="nav-item">
<a href="#" class="nav-link">
<i class="nav-icon far fa-circle"></i>
<p>
Level 2
</p>
</a>
</li>
</ul>
</li>
</ul>
</nav>
</div>
<!-- /.sidebar -->
</aside>
<!-- Main content -->
<div class="content-wrapper">
<div class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<div class="fs-3">Dashboard</div>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-end">
<li class="breadcrumb-item"><a href="#">Home</a></li>
<li class="breadcrumb-item active" aria-current="page">Library</li>
</ol>
</div> </div>
</div> </div>
</div> </div>
<div class="content">
<div class="container-fluid">
<!-- Small boxes (Stat box) -->
<div class="row">
<div class="col-lg-3 col-6">
<!-- small box -->
<div class="small-box bg-primary text-light">
<div class="inner">
<h3>150</h3>
<p>New Orders</p>
</div>
<div class="icon">
<i class="inner-icon ion ion-bag"></i>
</div>
<a href="#" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
</div>
</div>
<!-- ./col -->
<div class="col-lg-3 col-6">
<!-- small box -->
<div class="small-box bg-success text-light">
<div class="inner">
<h3>53<sup class="fs-5">%</sup></h3>
<p>Bounce Rate</p>
</div>
<div class="icon">
<i class="inner-icon ion ion-stats-bars"></i>
</div>
<a href="#" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
</div>
</div>
<!-- ./col -->
<div class="col-lg-3 col-6">
<!-- small box -->
<div class="small-box bg-warning text-light">
<div class="inner">
<h3>44</h3>
<p>User Registrations</p>
</div>
<div class="icon">
<i class="inner-icon ion ion-person-add"></i>
</div>
<a href="#" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
</div>
</div>
<!-- ./col -->
<div class="col-lg-3 col-6">
<!-- small box -->
<div class="small-box bg-danger text-light">
<div class="inner">
<h3>65</h3>
<p>Unique Visitors</p>
</div>
<div class="icon">
<i class="inner-icon ion ion-pie-graph"></i>
</div>
<a href="#" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
</div>
</div>
<!-- ./col -->
</div>
<!-- /.row -->
<!-- Main row -->
<div class="row">
<!-- Left col -->
<section class="col-lg-7">
<button type="button" class="btn btn-primary">Primary</button>
<button type="button" class="btn btn-secondary">Secondary</button>
<button type="button" class="btn btn-success">Success</button>
<button type="button" class="btn btn-danger">Danger</button>
<button type="button" class="btn btn-warning">Warning</button>
<button type="button" class="btn btn-info">Info</button>
<button type="button" class="btn btn-light">Light</button>
<button type="button" class="btn btn-dark">Dark</button>
<button type="button" class="btn btn-link">Link</button>
</section>
</div>
<!-- /.row (main row) -->
</div><!-- /.container-fluid -->
</div>
</div> </div>
<div class="content"> <!-- /.content-wrapper -->
<div class="container-fluid">
<!-- Small boxes (Stat box) -->
<div class="row">
<div class="col-lg-3 col-6">
<!-- small box -->
<div class="small-box bg-primary text-light">
<div class="inner">
<h3>150</h3>
<p>New Orders</p> @@include('./dashboard/_footer.html', {
</div> "path": "."
<div class="icon"> })
<i class="inner-icon ion ion-bag"></i>
</div>
<a href="#" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
</div>
</div>
<!-- ./col -->
<div class="col-lg-3 col-6">
<!-- small box -->
<div class="small-box bg-success text-light">
<div class="inner">
<h3>53<sup class="fs-5">%</sup></h3>
<p>Bounce Rate</p>
</div>
<div class="icon">
<i class="inner-icon ion ion-stats-bars"></i>
</div>
<a href="#" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
</div>
</div>
<!-- ./col -->
<div class="col-lg-3 col-6">
<!-- small box -->
<div class="small-box bg-warning text-light">
<div class="inner">
<h3>44</h3>
<p>User Registrations</p>
</div>
<div class="icon">
<i class="inner-icon ion ion-person-add"></i>
</div>
<a href="#" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
</div>
</div>
<!-- ./col -->
<div class="col-lg-3 col-6">
<!-- small box -->
<div class="small-box bg-danger text-light">
<div class="inner">
<h3>65</h3>
<p>Unique Visitors</p>
</div>
<div class="icon">
<i class="inner-icon ion ion-pie-graph"></i>
</div>
<a href="#" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
</div>
</div>
<!-- ./col -->
</div>
<!-- /.row -->
<!-- Main row -->
<div class="row">
<!-- Left col -->
<section class="col-lg-7">
<button type="button" class="btn btn-primary">Primary</button>
<button type="button" class="btn btn-secondary">Secondary</button>
<button type="button" class="btn btn-success">Success</button>
<button type="button" class="btn btn-danger">Danger</button>
<button type="button" class="btn btn-warning">Warning</button>
<button type="button" class="btn btn-info">Info</button>
<button type="button" class="btn btn-light">Light</button>
<button type="button" class="btn btn-dark">Dark</button>
<button type="button" class="btn btn-link">Link</button>
</section>
</div>
<!-- /.row (main row) -->
</div><!-- /.container-fluid -->
</div>
</div> </div>
<!-- /.content-wrapper --> <!-- ./wrapper -->
<!-- Main Footer --> @@include('./_scripts.html', {
<footer class="main-footer"> "path": "."
<!-- To the right --> })
<div class="float-end d-none d-sm-inline"> </body>
Anything you want
</div>
<!-- Default to the left -->
<strong>Copyright &copy; 2014-2021 <a href="https://adminlte.io">AdminLTE.io</a>.</strong> All rights reserved.
</footer>
</div>
<!-- ./wrapper -->
<!-- REQUIRED SCRIPTS -->
<!-- Bootstrap 5 -->
<script src="./node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<!-- AdminLTE App -->
<script src="dist/js/adminlte.js"></script>
</body>
</html> </html>

12
src/pages/demo.html Normal file
View File

@ -0,0 +1,12 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Demo</title>
</head>
<body>
</body>
</html>

View File

@ -1 +1,12 @@
hiiii <meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- The page supports both dark and light color schemes, and the page author prefers / default is light. -->
<meta name="color-scheme" content="light dark">
<title>@@title</title>
<!-- For dark mode use dist/css/alt/adminlte.pcs.css, remove dist/css/adminlte.css -->
<!-- <link rel="stylesheet" href="dist/css/dark/adminlte-dark.css"> -->
<!-- For RTL verison -->
<!-- <link rel="stylesheet" href="dist/css/rtl/adminlte.rtl.css"> -->
<link rel="stylesheet" href="@@path/css/adminlte.css">
<link rel="stylesheet" href="@@path/vendor/@fortawesome/fontawesome-free/css/all.min.css">

View File

@ -0,0 +1,6 @@
<!-- REQUIRED SCRIPTS -->
<!-- Bootstrap 5 -->
<script src="@@path/vendor/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<!-- AdminLTE App -->
<script src="@@path/js/adminlte.js"></script>

View File

@ -0,0 +1,9 @@
<!-- Main Footer -->
<footer class="main-footer">
<!-- To the right -->
<div class="float-end d-none d-sm-inline">
Anything you want
</div>
<!-- Default to the left -->
<strong>Copyright &copy; 2014-2021 <a href="https://adminlte.io">AdminLTE.io</a>.</strong> All rights reserved.
</footer>

View File

@ -0,0 +1,114 @@
<!-- Main Sidebar Container -->
<aside class="main-sidebar sidebar-bg-dark sidebar-color-primary shadow">
<div class="brand-container">
<a href="#" class="brand-link">
<img src="./assets/img/AdminLTELogo.png" alt="AdminLTE Logo" class="brand-image opacity-80 shadow">
<span class="brand-text fw-light">AdminLTE 4</span>
</a>
<a class="pushmenu mx-1" data-pushmenu="mini" href="#" role="button"><i class="fas fa-angle-double-left"></i></a>
</div>
<!-- Sidebar -->
<div class="sidebar">
<nav class="mt-2">
<!-- Sidebar Menu -->
<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="false">
<li class="nav-item menu-open">
<a href="#" class="nav-link active">
<i class="nav-icon fas fa-circle"></i>
<p>
Dashboard
<i class="right fas fa-angle-left"></i>
</p>
</a>
<ul class="nav nav-treeview">
<li class="nav-item">
<a href="#" class="nav-link active">
<i class="nav-icon far fa-circle"></i>
<p>
Dashboard v1
</p>
</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link">
<i class="nav-icon far fa-circle"></i>
<p>
Dashboard v2
</p>
</a>
</li>
</ul>
</li>
<li class="nav-item menu-open">
<a href="#" class="nav-link">
<i class="nav-icon fas fa-circle"></i>
<p>
Forms
<i class="right fas fa-angle-left"></i>
</p>
</a>
<ul class="nav nav-treeview">
<li class="nav-item">
<a href="./pages/forms/general.html" class="nav-link">
<i class="nav-icon far fa-circle"></i>
<p>
General Elements
</p>
</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link">
<i class="nav-icon far fa-circle"></i>
<p>
Level 2
</p>
</a>
</li>
</ul>
</li>
<li class="nav-header">MULTI LEVEL EXAMPLE</li>
<li class="nav-item">
<a href="#" class="nav-link">
<i class="nav-icon fas fa-circle"></i>
<p>
Level 1
<i class="right fas fa-angle-left"></i>
</p>
</a>
<ul class="nav nav-treeview">
<li class="nav-item">
<a href="#" class="nav-link">
<i class="nav-icon far fa-circle"></i>
<p>
Level 2
<i class="right fas fa-angle-left"></i>
</p>
</a>
<ul class="nav nav-treeview">
<li class="nav-item">
<a href="#" class="nav-link">
<i class="nav-icon far fa-dot-circle"></i>
<p>
Level 3
</p>
</a>
</li>
</ul>
</li>
<li class="nav-item">
<a href="#" class="nav-link">
<i class="nav-icon far fa-circle"></i>
<p>
Level 2
</p>
</a>
</li>
</ul>
</li>
</ul>
</nav>
</div>
<!-- /.sidebar -->
</aside>

View File

@ -0,0 +1,28 @@
<!-- Navbar -->
<nav class="main-header navbar navbar-expand">
<div class="container-fluid">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link sidebar-full-icon" data-pushmenu="full" href="#" role="button"><i class="fas fa-bars"></i></a>
</li>
<li class="nav-item">
<a href="#" class="nav-link">Home</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link">Contact</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</li>
</ul>
</div>
</nav>
<!-- /.navbar -->