mirror of
https://github.com/jellyfin/jellyfin-web.git
synced 2024-11-18 11:28:23 -07:00
309 lines
12 KiB
JavaScript
309 lines
12 KiB
JavaScript
(function(){
|
|
'use strict';
|
|
var gulp = require('gulp'),
|
|
connect = require('gulp-connect'),
|
|
open = require('gulp-open'),
|
|
less = require('gulp-less'),
|
|
rename = require('gulp-rename'),
|
|
header = require('gulp-header'),
|
|
path = require('path'),
|
|
uglify = require('gulp-uglify'),
|
|
sourcemaps = require('gulp-sourcemaps'),
|
|
minifyCSS = require('gulp-minify-css'),
|
|
tap = require('gulp-tap'),
|
|
concat = require('gulp-concat'),
|
|
jshint = require('gulp-jshint'),
|
|
stylish = require('jshint-stylish'),
|
|
fs = require('fs'),
|
|
paths = {
|
|
root: './',
|
|
build: {
|
|
root: 'build/',
|
|
styles: 'build/css/',
|
|
scripts: 'build/js/'
|
|
},
|
|
dist: {
|
|
root: 'dist/',
|
|
styles: 'dist/css/',
|
|
scripts: 'dist/js/'
|
|
},
|
|
playground: {
|
|
root: 'playground/'
|
|
},
|
|
source: {
|
|
root: 'src/',
|
|
styles: 'src/less/',
|
|
scripts: 'src/js/*.js'
|
|
},
|
|
},
|
|
swiper = {
|
|
filename: 'swiper',
|
|
jsFiles: [
|
|
'src/js/wrap-start.js',
|
|
'src/js/swiper-intro.js',
|
|
'src/js/core.js',
|
|
'src/js/effects.js',
|
|
'src/js/lazy-load.js',
|
|
'src/js/scrollbar.js',
|
|
'src/js/controller.js',
|
|
'src/js/hashnav.js',
|
|
'src/js/keyboard.js',
|
|
'src/js/mousewheel.js',
|
|
'src/js/parallax.js',
|
|
'src/js/plugins.js',
|
|
'src/js/emitter.js',
|
|
'src/js/a11y.js',
|
|
'src/js/init.js',
|
|
'src/js/swiper-outro.js',
|
|
'src/js/swiper-proto.js',
|
|
'src/js/dom.js',
|
|
'src/js/get-dom-lib.js',
|
|
'src/js/dom-plugins.js',
|
|
'src/js/wrap-end.js',
|
|
'src/js/amd.js'
|
|
],
|
|
jQueryFiles : [
|
|
'src/js/wrap-start.js',
|
|
'src/js/swiper-intro.js',
|
|
'src/js/core.js',
|
|
'src/js/effects.js',
|
|
'src/js/lazy-load.js',
|
|
'src/js/scrollbar.js',
|
|
'src/js/controller.js',
|
|
'src/js/hashnav.js',
|
|
'src/js/keyboard.js',
|
|
'src/js/mousewheel.js',
|
|
'src/js/parallax.js',
|
|
'src/js/plugins.js',
|
|
'src/js/emitter.js',
|
|
'src/js/a11y.js',
|
|
'src/js/init.js',
|
|
'src/js/swiper-outro.js',
|
|
'src/js/swiper-proto.js',
|
|
'src/js/get-dom-lib.js',
|
|
'src/js/dom-plugins.js',
|
|
'src/js/wrap-end.js',
|
|
'src/js/amd.js'
|
|
],
|
|
jQueryUMDFiles : [
|
|
'src/js/wrap-start-umd.js',
|
|
'src/js/swiper-intro.js',
|
|
'src/js/core.js',
|
|
'src/js/effects.js',
|
|
'src/js/lazy-load.js',
|
|
'src/js/scrollbar.js',
|
|
'src/js/controller.js',
|
|
'src/js/hashnav.js',
|
|
'src/js/keyboard.js',
|
|
'src/js/mousewheel.js',
|
|
'src/js/parallax.js',
|
|
'src/js/plugins.js',
|
|
'src/js/emitter.js',
|
|
'src/js/a11y.js',
|
|
'src/js/init.js',
|
|
'src/js/swiper-outro.js',
|
|
'src/js/swiper-proto.js',
|
|
'src/js/get-jquery.js',
|
|
'src/js/dom-plugins.js',
|
|
'src/js/wrap-end-umd.js',
|
|
],
|
|
Framework7Files : [
|
|
'src/js/swiper-intro-f7.js',
|
|
'src/js/core.js',
|
|
'src/js/effects.js',
|
|
'src/js/lazy-load.js',
|
|
'src/js/scrollbar.js',
|
|
'src/js/controller.js',
|
|
'src/js/parallax.js',
|
|
'src/js/plugins.js',
|
|
'src/js/emitter.js',
|
|
'src/js/a11y.js',
|
|
'src/js/init.js',
|
|
'src/js/swiper-outro.js',
|
|
'src/js/swiper-proto.js',
|
|
],
|
|
pkg: require('./bower.json'),
|
|
banner: [
|
|
'/**',
|
|
' * Swiper <%= pkg.version %>',
|
|
' * <%= pkg.description %>',
|
|
' * ',
|
|
' * <%= pkg.homepage %>',
|
|
' * ',
|
|
' * Copyright <%= date.year %>, <%= pkg.author %>',
|
|
' * The iDangero.us',
|
|
' * http://www.idangero.us/',
|
|
' * ',
|
|
' * Licensed under <%= pkg.license.join(" & ") %>',
|
|
' * ',
|
|
' * Released on: <%= date.month %> <%= date.day %>, <%= date.year %>',
|
|
' */',
|
|
''].join('\n'),
|
|
date: {
|
|
year: new Date().getFullYear(),
|
|
month: ('January February March April May June July August September October November December').split(' ')[new Date().getMonth()],
|
|
day: new Date().getDate()
|
|
}
|
|
};
|
|
|
|
function addJSIndent (file, t, minusIndent) {
|
|
var addIndent = ' ';
|
|
var filename = file.path.split('src/js/')[1];
|
|
if (['wrap-start.js', 'wrap-start-umd.js', 'wrap-end.js', 'wrap-end-umd.js', 'amd.js'].indexOf(filename) !== -1) {
|
|
addIndent = '';
|
|
}
|
|
if (filename === 'swiper-intro.js' || filename === 'swiper-intro-f7.js' || filename === 'swiper-outro.js' || filename === 'dom.js' || filename === 'get-dom-lib.js' || filename === 'get-jquery.js' || filename === 'dom-plugins.js' || filename === 'swiper-proto.js') addIndent = ' ';
|
|
if (minusIndent) {
|
|
addIndent = addIndent.substring(4);
|
|
}
|
|
if (addIndent !== '') {
|
|
var fileLines = fs.readFileSync(file.path).toString().split('\n');
|
|
var newFileContents = '';
|
|
for (var i = 0; i < fileLines.length; i++) {
|
|
newFileContents += addIndent + fileLines[i] + (i === fileLines.length ? '' : '\n');
|
|
}
|
|
file.contents = new Buffer(newFileContents);
|
|
}
|
|
}
|
|
gulp.task('scripts', function (cb) {
|
|
gulp.src(swiper.jsFiles)
|
|
.pipe(tap(function (file, t){
|
|
addJSIndent (file, t);
|
|
}))
|
|
.pipe(sourcemaps.init())
|
|
.pipe(concat(swiper.filename + '.js'))
|
|
.pipe(header(swiper.banner, { pkg : swiper.pkg, date: swiper.date } ))
|
|
.pipe(jshint())
|
|
.pipe(jshint.reporter(stylish))
|
|
.pipe(sourcemaps.write('./maps/'))
|
|
.pipe(gulp.dest(paths.build.scripts));
|
|
|
|
|
|
gulp.src(swiper.jQueryFiles)
|
|
.pipe(tap(function (file, t){
|
|
addJSIndent (file, t);
|
|
}))
|
|
.pipe(sourcemaps.init())
|
|
.pipe(concat(swiper.filename + '.jquery.js'))
|
|
.pipe(header(swiper.banner, { pkg : swiper.pkg, date: swiper.date } ))
|
|
.pipe(sourcemaps.write('./maps/'))
|
|
.pipe(gulp.dest(paths.build.scripts));
|
|
gulp.src(swiper.jQueryUMDFiles)
|
|
.pipe(tap(function (file, t){
|
|
addJSIndent (file, t);
|
|
}))
|
|
.pipe(sourcemaps.init())
|
|
.pipe(concat(swiper.filename + '.jquery.umd.js'))
|
|
.pipe(header(swiper.banner, { pkg : swiper.pkg, date: swiper.date } ))
|
|
.pipe(sourcemaps.write('./maps/'))
|
|
.pipe(gulp.dest(paths.build.scripts));
|
|
gulp.src(swiper.Framework7Files)
|
|
.pipe(tap(function (file, t){
|
|
addJSIndent (file, t, true);
|
|
}))
|
|
.pipe(sourcemaps.init())
|
|
.pipe(concat(swiper.filename + '.framework7.js'))
|
|
.pipe(header(swiper.banner, { pkg : swiper.pkg, date: swiper.date } ))
|
|
.pipe(sourcemaps.write('./maps/'))
|
|
.pipe(gulp.dest(paths.build.scripts))
|
|
.pipe(connect.reload());
|
|
cb();
|
|
});
|
|
gulp.task('styles', function (cb) {
|
|
|
|
gulp.src(paths.source.styles + 'swiper.less')
|
|
.pipe(less({
|
|
paths: [ path.join(__dirname, 'less', 'includes') ]
|
|
}))
|
|
.pipe(header(swiper.banner, { pkg : swiper.pkg, date: swiper.date }))
|
|
.pipe(rename(function(path) {
|
|
path.basename = swiper.filename;
|
|
}))
|
|
.pipe(gulp.dest(paths.build.styles))
|
|
.pipe(connect.reload());
|
|
|
|
gulp.src([
|
|
paths.source.styles + 'core.less',
|
|
paths.source.styles + 'navigation-f7.less',
|
|
paths.source.styles + 'effects.less',
|
|
paths.source.styles + 'scrollbar.less',
|
|
paths.source.styles + 'preloader-f7.less',
|
|
])
|
|
.pipe(concat(swiper.filename + '.framework7.less'))
|
|
.pipe(header('/* === Swiper === */\n'))
|
|
.pipe(gulp.dest(paths.build.styles));
|
|
cb();
|
|
});
|
|
gulp.task('build', ['scripts', 'styles'], function (cb) {
|
|
cb();
|
|
});
|
|
|
|
gulp.task('dist', function () {
|
|
gulp.src([paths.build.scripts + swiper.filename + '.js'])
|
|
.pipe(gulp.dest(paths.dist.scripts))
|
|
.pipe(sourcemaps.init())
|
|
.pipe(uglify())
|
|
.pipe(header(swiper.banner, { pkg : swiper.pkg, date: swiper.date }))
|
|
.pipe(rename(function(path) {
|
|
path.basename = swiper.filename + '.min';
|
|
}))
|
|
.pipe(sourcemaps.write('./maps'))
|
|
.pipe(gulp.dest(paths.dist.scripts));
|
|
|
|
gulp.src([paths.build.scripts + swiper.filename + '.jquery.js'])
|
|
.pipe(gulp.dest(paths.dist.scripts))
|
|
.pipe(sourcemaps.init())
|
|
.pipe(uglify())
|
|
.pipe(header(swiper.banner, { pkg : swiper.pkg, date: swiper.date } ))
|
|
.pipe(rename(function(path) {
|
|
path.basename = swiper.filename + '.jquery.min';
|
|
}))
|
|
.pipe(sourcemaps.write('./maps'))
|
|
.pipe(gulp.dest(paths.dist.scripts));
|
|
|
|
gulp.src([paths.build.scripts + swiper.filename + '.jquery.umd.js'])
|
|
.pipe(gulp.dest(paths.dist.scripts))
|
|
.pipe(sourcemaps.init())
|
|
.pipe(uglify())
|
|
.pipe(header(swiper.banner, { pkg : swiper.pkg, date: swiper.date } ))
|
|
.pipe(rename(function(path) {
|
|
path.basename = swiper.filename + '.jquery.umd.min';
|
|
}))
|
|
.pipe(sourcemaps.write('./maps'))
|
|
.pipe(gulp.dest(paths.dist.scripts));
|
|
|
|
gulp.src(paths.build.styles + '*.css')
|
|
.pipe(gulp.dest(paths.dist.styles))
|
|
.pipe(minifyCSS({
|
|
advanced: false,
|
|
aggressiveMerging: false,
|
|
}))
|
|
.pipe(header(swiper.banner, { pkg : swiper.pkg, date: swiper.date }))
|
|
.pipe(rename(function(path) {
|
|
path.basename = swiper.filename + '.min';
|
|
}))
|
|
.pipe(gulp.dest(paths.dist.styles));
|
|
});
|
|
|
|
gulp.task('watch', function () {
|
|
gulp.watch(paths.source.scripts, [ 'scripts' ]);
|
|
gulp.watch(paths.source.styles + '*.less', [ 'styles' ]);
|
|
});
|
|
|
|
gulp.task('connect', function () {
|
|
return connect.server({
|
|
root: [ paths.root ],
|
|
livereload: true,
|
|
port:'3000'
|
|
});
|
|
});
|
|
|
|
gulp.task('open', function () {
|
|
return gulp.src(paths.playground.root + 'index.html').pipe(open({ uri: 'http://localhost:3000/' + paths.playground.root + 'index.html'}));
|
|
});
|
|
|
|
gulp.task('server', [ 'watch', 'connect', 'open' ]);
|
|
|
|
gulp.task('default', [ 'server' ]);
|
|
})();
|