You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
423 lines
16 KiB
423 lines
16 KiB
(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'),
|
|
cleanCSS = require('gulp-clean-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/'
|
|
},
|
|
custom: {
|
|
root: 'custom/',
|
|
styles: 'custom/css/',
|
|
scripts: 'custom/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/history.js',
|
|
'src/js/keyboard.js',
|
|
'src/js/mousewheel.js',
|
|
'src/js/parallax.js',
|
|
'src/js/zoom.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/history.js',
|
|
'src/js/keyboard.js',
|
|
'src/js/mousewheel.js',
|
|
'src/js/parallax.js',
|
|
'src/js/zoom.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/history.js',
|
|
'src/js/keyboard.js',
|
|
'src/js/mousewheel.js',
|
|
'src/js/parallax.js',
|
|
'src/js/zoom.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/zoom.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'),
|
|
modules: require('./modules.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'),
|
|
customBanner: [
|
|
'/**',
|
|
' * Swiper <%= pkg.version %> - Custom Build',
|
|
' * <%= pkg.description %>',
|
|
' * ',
|
|
' * Included modules: <%= modulesList %>',
|
|
' * ',
|
|
' * <%= 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 + 'zoom.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(cleanCSS({
|
|
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));
|
|
});
|
|
|
|
/* =================================
|
|
Custom Build
|
|
================================= */
|
|
gulp.task('custom', function () {
|
|
var modules = process.argv.slice(3);
|
|
modules = modules.toString();
|
|
if (modules === '') {
|
|
modules = [];
|
|
}
|
|
else {
|
|
modules = modules.substring(1).replace(/ /g, '').replace(/,,/g, ',');
|
|
modules = modules.split(',');
|
|
}
|
|
var modulesJs = [], modulesLess = [];
|
|
var i, module;
|
|
modulesJs.push.apply(modulesJs, swiper.modules.core_intro.js);
|
|
modulesLess.push.apply(modulesLess, swiper.modules.core_intro.less);
|
|
|
|
for (i = 0; i < modules.length; i++) {
|
|
module = swiper.modules[modules[i]];
|
|
if (!(module)) continue;
|
|
|
|
if (module.dependencies && module.dependencies.length > 0) {
|
|
modules.push.apply(modules, module.dependencies);
|
|
}
|
|
if (module.js.length > 0) {
|
|
modulesJs.push.apply(modulesJs, module.js);
|
|
}
|
|
if (module.less && module.less.length > 0) {
|
|
modulesLess.push.apply(modulesLess, module.less);
|
|
}
|
|
}
|
|
modulesJs.push.apply(modulesJs, swiper.modules.core_outro.js);
|
|
modulesLess.push.apply(modulesLess, swiper.modules.core_outro.less);
|
|
|
|
// Unique
|
|
var customJsList = [];
|
|
var customLessList = [];
|
|
for (i = 0; i < modulesJs.length; i++) {
|
|
if (customJsList.indexOf(modulesJs[i]) < 0) customJsList.push(modulesJs[i]);
|
|
}
|
|
for (i = 0; i < modulesLess.length; i++) {
|
|
if (customLessList.indexOf(modulesLess[i]) < 0) customLessList.push(modulesLess[i]);
|
|
}
|
|
|
|
// JS
|
|
gulp.src(customJsList)
|
|
.pipe(tap(function (file, t){
|
|
addJSIndent (file, t);
|
|
}))
|
|
.pipe(concat(swiper.filename + '.custom.js'))
|
|
.pipe(header(swiper.customBanner, { pkg : swiper.pkg, date: swiper.date, modulesList: modules.join(',') } ))
|
|
.pipe(jshint())
|
|
.pipe(jshint.reporter(stylish))
|
|
.pipe(gulp.dest(paths.custom.scripts))
|
|
|
|
.pipe(uglify())
|
|
.pipe(header(swiper.customBanner, { pkg : swiper.pkg, date: swiper.date, modulesList: modules.join(',') }))
|
|
.pipe(rename(function(path) {
|
|
path.basename = path.basename + '.min';
|
|
}))
|
|
.pipe(gulp.dest(paths.custom.scripts));
|
|
|
|
// CSSes
|
|
gulp.src(customLessList)
|
|
.pipe(concat(swiper.filename + '.custom.less'))
|
|
.pipe(less({
|
|
paths: [ path.join(__dirname, 'less', 'includes') ]
|
|
}))
|
|
.pipe(header(swiper.customBanner, { pkg : swiper.pkg, date: swiper.date, modulesList: modules.join(',') } ))
|
|
.pipe(gulp.dest(paths.custom.styles))
|
|
|
|
.pipe(cleanCSS({
|
|
advanced: false,
|
|
aggressiveMerging: false
|
|
}))
|
|
.pipe(header(swiper.customBanner, { pkg : swiper.pkg, date: swiper.date, modulesList: modules.join(',') }))
|
|
.pipe(rename(function(path) {
|
|
path.basename = path.basename + '.min';
|
|
}))
|
|
.pipe(gulp.dest(paths.custom.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' ]);
|
|
})(); |