|
@@ -3,7 +3,6 @@
|
|
|
/* eslint-disable no-undef */
|
|
|
/* eslint-disable unicorn/prefer-module */
|
|
|
|
|
|
-// const autoprefixer = require('autoprefixer')
|
|
|
const browserSync = require('browser-sync').create()
|
|
|
const cleanCss = require('gulp-clean-css')
|
|
|
const del = require('del')
|
|
@@ -12,12 +11,12 @@ const npmDist = require('gulp-npm-dist')
|
|
|
const sass = require('gulp-sass')
|
|
|
const wait = require('gulp-wait')
|
|
|
const postcss = require('gulp-postcss')
|
|
|
-// const rtlcss = require('rtlcss')
|
|
|
+const rename = require('gulp-rename')
|
|
|
const sourcemaps = require('gulp-sourcemaps')
|
|
|
const fileinclude = require('gulp-file-include')
|
|
|
-
|
|
|
const esbuild = require('esbuild')
|
|
|
-// const { getTarget } = require('./get.browserslist.target')
|
|
|
+
|
|
|
+sass.compiler = require('sass')
|
|
|
|
|
|
const pkg = require('./package')
|
|
|
const year = new Date().getFullYear()
|
|
@@ -64,7 +63,12 @@ const paths = {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-function postcssCallback() {
|
|
|
+const sassOptions = {
|
|
|
+ outputStyle: 'expanded',
|
|
|
+ includePaths: ['./node_modules/']
|
|
|
+}
|
|
|
+
|
|
|
+function postcssOptions() {
|
|
|
return {
|
|
|
map: {
|
|
|
inline: false,
|
|
@@ -79,16 +83,29 @@ function postcssCallback() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+function postcssRtlOptions() {
|
|
|
+ return {
|
|
|
+ map: {
|
|
|
+ inline: false,
|
|
|
+ annotation: true,
|
|
|
+ sourcesContent: true
|
|
|
+ },
|
|
|
+ plugins: [
|
|
|
+ require('autoprefixer')({
|
|
|
+ cascade: false
|
|
|
+ }),
|
|
|
+ require('rtlcss')({})
|
|
|
+ ]
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
// Compile SCSS
|
|
|
gulp.task('scss', () => {
|
|
|
return gulp.src(paths.src.scss + '/adminlte.scss')
|
|
|
.pipe(wait(500))
|
|
|
.pipe(sourcemaps.init())
|
|
|
- .pipe(sass({
|
|
|
- outputStyle: 'expanded',
|
|
|
- includePaths: ['./node_modules/']
|
|
|
- }).on('error', sass.logError))
|
|
|
- .pipe(postcss(postcssCallback))
|
|
|
+ .pipe(sass(sassOptions).on('error', sass.logError))
|
|
|
+ .pipe(postcss(postcssOptions))
|
|
|
.pipe(sourcemaps.write('.'))
|
|
|
.pipe(gulp.dest(paths.temp.css))
|
|
|
.pipe(browserSync.stream())
|
|
@@ -101,7 +118,6 @@ gulp.task('ts', () => {
|
|
|
js: banner
|
|
|
},
|
|
|
bundle: true,
|
|
|
- color: true,
|
|
|
format: 'iife',
|
|
|
sourcemap: true,
|
|
|
target: ['chrome60'],
|
|
@@ -161,14 +177,31 @@ gulp.task('serve', gulp.series('scss', 'ts', 'html', 'index', 'assets', 'vendor'
|
|
|
}))
|
|
|
|
|
|
// Minify CSS
|
|
|
-gulp.task('minify:css', () => {
|
|
|
+gulp.task('minify:dist:css', () => {
|
|
|
return gulp.src([
|
|
|
- paths.dist.css + '/adminlte.css'
|
|
|
- ])
|
|
|
+ paths.dist.css + '/**/*.css'
|
|
|
+ ], { base: paths.dist.css })
|
|
|
+ .pipe(sourcemaps.init({ loadMaps: true }))
|
|
|
.pipe(cleanCss())
|
|
|
+ .pipe(rename({ suffix: '.min' }))
|
|
|
+ .pipe(sourcemaps.write('.'))
|
|
|
.pipe(gulp.dest(paths.dist.css))
|
|
|
})
|
|
|
|
|
|
+// Minify JS
|
|
|
+gulp.task('minify:dist:js', () => {
|
|
|
+ return esbuild.build({
|
|
|
+ entryPoints: [paths.dist.js + '/adminlte.js'],
|
|
|
+ format: 'iife',
|
|
|
+ minify: true,
|
|
|
+ sourcemap: true,
|
|
|
+ target: ['chrome60'],
|
|
|
+ outfile: paths.dist.js + '/adminlte.min.js'
|
|
|
+ }).catch(
|
|
|
+ error => console.error(error)
|
|
|
+ )
|
|
|
+})
|
|
|
+
|
|
|
// Copy assets
|
|
|
gulp.task('copy:dist:assets', () => {
|
|
|
return gulp.src(paths.src.assets)
|
|
@@ -185,15 +218,52 @@ gulp.task('copy:dist:css', () => {
|
|
|
return gulp.src([paths.src.scss + '/adminlte.scss'])
|
|
|
.pipe(wait(500))
|
|
|
.pipe(sourcemaps.init())
|
|
|
- .pipe(sass({
|
|
|
- outputStyle: 'expanded',
|
|
|
- includePaths: ['./node_modules/']
|
|
|
- }).on('error', sass.logError))
|
|
|
- .pipe(postcss(postcssCallback))
|
|
|
+ .pipe(sass(sassOptions).on('error', sass.logError))
|
|
|
+ .pipe(postcss(postcssOptions))
|
|
|
.pipe(sourcemaps.write('.'))
|
|
|
.pipe(gulp.dest(paths.dist.css))
|
|
|
})
|
|
|
|
|
|
+gulp.task('copy:dist:css:dark', () => {
|
|
|
+ return gulp.src([paths.src.scss + '/dark/*.scss'])
|
|
|
+ .pipe(wait(500))
|
|
|
+ .pipe(sourcemaps.init())
|
|
|
+ .pipe(sass(sassOptions).on('error', sass.logError))
|
|
|
+ .pipe(postcss(postcssOptions))
|
|
|
+ .pipe(sourcemaps.write('.'))
|
|
|
+ .pipe(gulp.dest(paths.dist.css + '/dark'))
|
|
|
+})
|
|
|
+
|
|
|
+gulp.task('copy:dist:css:rtl', () => {
|
|
|
+ return gulp.src([
|
|
|
+ paths.dist.css + '/*.css',
|
|
|
+ paths.dist.css + '/dark/*.css'
|
|
|
+ ])
|
|
|
+ .pipe(wait(500))
|
|
|
+ .pipe(sourcemaps.init({ loadMaps: true }))
|
|
|
+ .pipe(postcss(postcssRtlOptions))
|
|
|
+ .pipe(rename({ suffix: '.rtl' }))
|
|
|
+ .pipe(sourcemaps.write('.'))
|
|
|
+ .pipe(gulp.dest(paths.dist.css + '/rtl'))
|
|
|
+})
|
|
|
+
|
|
|
+// Compile and copy ts/js
|
|
|
+gulp.task('copy:dist:js', () => {
|
|
|
+ return esbuild.build({
|
|
|
+ entryPoints: [paths.src.ts + '/adminlte.ts'],
|
|
|
+ banner: {
|
|
|
+ js: banner
|
|
|
+ },
|
|
|
+ bundle: true,
|
|
|
+ format: 'iife',
|
|
|
+ sourcemap: true,
|
|
|
+ target: ['chrome60'],
|
|
|
+ outfile: paths.dist.js + '/adminlte.js'
|
|
|
+ }).catch(
|
|
|
+ error => console.error(error)
|
|
|
+ )
|
|
|
+})
|
|
|
+
|
|
|
// Copy Html
|
|
|
gulp.task('copy:dist:html', () => {
|
|
|
return gulp.src([paths.src.html])
|
|
@@ -226,7 +296,7 @@ gulp.task('copy:dist:vendor', () => {
|
|
|
.pipe(gulp.dest(paths.dist.vendor))
|
|
|
})
|
|
|
|
|
|
-gulp.task('build', gulp.series('clean:dist', 'copy:dist:css', 'copy:dist:html', 'copy:dist:html:index', 'copy:dist:assets', 'copy:dist:vendor'))
|
|
|
+gulp.task('build', gulp.series('clean:dist', 'copy:dist:css', 'copy:dist:css:dark', 'copy:dist:css:rtl', 'minify:dist:css', 'copy:dist:js', 'minify:dist:js', 'copy:dist:html', 'copy:dist:html:index', 'copy:dist:assets', 'copy:dist:vendor'))
|
|
|
|
|
|
// Default
|
|
|
gulp.task('default', gulp.series('serve'))
|