mirror of
https://github.com/BobbyWibowo/lolisafe.git
synced 2024-12-12 23:46:22 +00:00
ea37e0b7d3
Reduced album title max length from 280 to 70. Existing albums with longer titles will have their titles truncated in their public pages, but the original titles will still remain in db. "Load images for preview" will now properly display its saved value. Increased max parallel uploads to 10. "yarn develop" will now also restart safe if some Nunjuck templates are edited (_globals.njk, _layout.njk, and album.njk). Better meta tags generation. Bumped v1 version string.
133 lines
2.9 KiB
JavaScript
133 lines
2.9 KiB
JavaScript
const gulp = require('gulp')
|
|
const cssnano = require('cssnano')
|
|
const del = require('del')
|
|
const buble = require('gulp-buble')
|
|
const eslint = require('gulp-eslint')
|
|
const gulpif = require('gulp-if')
|
|
const nodemon = require('gulp-nodemon')
|
|
const postcss = require('gulp-postcss')
|
|
const postcssPresetEnv = require('postcss-preset-env')
|
|
const sourcemaps = require('gulp-sourcemaps')
|
|
const stylelint = require('gulp-stylelint')
|
|
const terser = require('gulp-terser')
|
|
|
|
// Put built files for development on a Git-ignored directory.
|
|
// This will prevent IDE's Git from unnecessarily
|
|
// building diff's during development.
|
|
const dist = process.env.NODE_ENV === 'development'
|
|
? './dist-dev'
|
|
: './dist'
|
|
|
|
/** TASKS: LINT */
|
|
|
|
gulp.task('lint:js', () => {
|
|
return gulp.src('./src/**/*.js', {
|
|
ignore: './src/libs/**/*'
|
|
})
|
|
.pipe(eslint())
|
|
.pipe(eslint.failAfterError())
|
|
})
|
|
|
|
gulp.task('lint:css', () => {
|
|
return gulp.src('./src/**/*.css', {
|
|
ignore: './src/libs/**/*'
|
|
})
|
|
.pipe(stylelint())
|
|
})
|
|
|
|
gulp.task('lint', gulp.parallel('lint:js', 'lint:css'))
|
|
|
|
/** TASKS: CLEAN */
|
|
|
|
gulp.task('clean:css', () => {
|
|
return del([
|
|
`${dist}/**/*.css`,
|
|
`${dist}/**/*.css.map`
|
|
])
|
|
})
|
|
|
|
gulp.task('clean:js', () => {
|
|
return del([
|
|
`${dist}/**/*.js`,
|
|
`${dist}/**/*.js.map`
|
|
])
|
|
})
|
|
|
|
gulp.task('clean:rest', () => {
|
|
return del([
|
|
`${dist}/*`
|
|
])
|
|
})
|
|
|
|
gulp.task('clean', gulp.parallel('clean:css', 'clean:js', 'clean:rest'))
|
|
|
|
/** TASKS: BUILD */
|
|
|
|
gulp.task('build:css', () => {
|
|
const plugins = [
|
|
postcssPresetEnv()
|
|
]
|
|
|
|
// Minify on production
|
|
if (process.env.NODE_ENV !== 'development')
|
|
plugins.push(cssnano())
|
|
|
|
return gulp.src('./src/**/*.css')
|
|
.pipe(sourcemaps.init())
|
|
.pipe(postcss(plugins))
|
|
.pipe(sourcemaps.write('.'))
|
|
.pipe(gulp.dest(dist))
|
|
})
|
|
|
|
gulp.task('build:js', () => {
|
|
return gulp.src('./src/**/*.js')
|
|
.pipe(sourcemaps.init())
|
|
.pipe(buble())
|
|
// Minify on production
|
|
.pipe(gulpif(process.env.NODE_ENV !== 'development', terser()))
|
|
.pipe(sourcemaps.write('.'))
|
|
.pipe(gulp.dest(dist))
|
|
})
|
|
|
|
gulp.task('build', gulp.parallel('build:css', 'build:js'))
|
|
|
|
gulp.task('default', gulp.series('lint', 'clean', 'build'))
|
|
|
|
/** TASKS: WATCH (SKIP LINTER) */
|
|
|
|
gulp.task('watch:css', () => {
|
|
return gulp.watch([
|
|
'src/**/*.css'
|
|
], gulp.series('clean:css', 'build:css'))
|
|
})
|
|
|
|
gulp.task('watch:js', () => {
|
|
return gulp.watch([
|
|
'src/**/*.js'
|
|
], gulp.series('clean:js', 'build:js'))
|
|
})
|
|
|
|
gulp.task('watch:src', gulp.parallel('watch:css', 'watch:js'))
|
|
|
|
gulp.task('nodemon', done => {
|
|
return nodemon({
|
|
script: './lolisafe.js',
|
|
env: process.env,
|
|
watch: [
|
|
'lolisafe.js',
|
|
'logger.js',
|
|
'config.js',
|
|
'controllers/',
|
|
'database/',
|
|
'routes/',
|
|
'views/_globals.njk',
|
|
'views/_layout.njk',
|
|
'views/album.njk'
|
|
],
|
|
ext: 'js',
|
|
done
|
|
})
|
|
})
|
|
|
|
gulp.task('watch', gulp.series('clean', 'build', gulp.parallel('watch:src', 'nodemon')))
|