diff options
Diffstat (limited to 'static/website/bootstrap-css/bower_components/smooth-scroll/gulpfile.js')
-rw-r--r-- | static/website/bootstrap-css/bower_components/smooth-scroll/gulpfile.js | 297 |
1 files changed, 297 insertions, 0 deletions
diff --git a/static/website/bootstrap-css/bower_components/smooth-scroll/gulpfile.js b/static/website/bootstrap-css/bower_components/smooth-scroll/gulpfile.js new file mode 100644 index 0000000..77e3ff6 --- /dev/null +++ b/static/website/bootstrap-css/bower_components/smooth-scroll/gulpfile.js @@ -0,0 +1,297 @@ +/** + * Gulp Packages + */ + +// General +var gulp = require('gulp'); +var fs = require('fs'); +var del = require('del'); +var lazypipe = require('lazypipe'); +var plumber = require('gulp-plumber'); +var flatten = require('gulp-flatten'); +var tap = require('gulp-tap'); +var rename = require('gulp-rename'); +var header = require('gulp-header'); +var footer = require('gulp-footer'); +var watch = require('gulp-watch'); +var livereload = require('gulp-livereload'); +var package = require('./package.json'); + +// Scripts and tests +var jshint = require('gulp-jshint'); +var stylish = require('jshint-stylish'); +var concat = require('gulp-concat'); +var uglify = require('gulp-uglify'); +var karma = require('gulp-karma'); + +// Styles +var sass = require('gulp-sass'); +var prefix = require('gulp-autoprefixer'); +var minify = require('gulp-minify-css'); + +// SVGs +var svgmin = require('gulp-svgmin'); +var svgstore = require('gulp-svgstore'); + +// Docs +var markdown = require('gulp-markdown'); +var fileinclude = require('gulp-file-include'); + + +/** + * Paths to project folders + */ + +var paths = { + input: 'src/**/*', + output: 'dist/', + scripts: { + input: 'src/js/*', + output: 'dist/js/' + }, + styles: { + input: 'src/sass/**/*.{scss,sass}', + output: 'dist/css/' + }, + svgs: { + input: 'src/svg/*', + output: 'dist/svg/' + }, + static: 'src/static/**', + test: { + input: 'src/js/**/*.js', + karma: 'test/karma.conf.js', + spec: 'test/spec/**/*.js', + coverage: 'test/coverage/', + results: 'test/results/' + }, + docs: { + input: 'src/docs/*.{html,md,markdown}', + output: 'docs/', + templates: 'src/docs/_templates/', + assets: 'src/docs/assets/**' + } +}; + + +/** + * Template for banner to add to file headers + */ + +var banner = { + full : + '/**\n' + + ' * <%= package.name %> v<%= package.version %>\n' + + ' * <%= package.description %>, by <%= package.author.name %>.\n' + + ' * <%= package.repository.url %>\n' + + ' * \n' + + ' * Free to use under the MIT License.\n' + + ' * http://gomakethings.com/mit/\n' + + ' */\n\n', + min : + '/**' + + ' <%= package.name %> v<%= package.version %>, by Chris Ferdinandi' + + ' | <%= package.repository.url %>' + + ' | Licensed under MIT: http://gomakethings.com/mit/' + + ' */\n' +}; + + +/** + * Gulp Taks + */ + +// Lint, minify, and concatenate scripts +gulp.task('build:scripts', ['clean:dist'], function() { + var jsTasks = lazypipe() + .pipe(header, banner.full, { package : package }) + .pipe(gulp.dest, paths.scripts.output) + .pipe(rename, { suffix: '.min' }) + .pipe(uglify) + .pipe(header, banner.min, { package : package }) + .pipe(gulp.dest, paths.scripts.output); + + return gulp.src(paths.scripts.input) + .pipe(plumber()) + .pipe(tap(function (file, t) { + if ( file.isDirectory() ) { + var name = file.relative + '.js'; + return gulp.src(file.path + '/*.js') + .pipe(concat(name)) + .pipe(jsTasks()); + } + })) + .pipe(jsTasks()); +}); + +// Process, lint, and minify Sass files +gulp.task('build:styles', ['clean:dist'], function() { + return gulp.src(paths.styles.input) + .pipe(plumber()) + .pipe(sass({ + outputStyle: 'expanded', + sourceComments: true + })) + .pipe(flatten()) + .pipe(prefix({ + browsers: ['last 2 version', '> 1%'], + cascade: true, + remove: true + })) + .pipe(header(banner.full, { package : package })) + .pipe(gulp.dest(paths.styles.output)) + .pipe(rename({ suffix: '.min' })) + .pipe(minify()) + .pipe(header(banner.min, { package : package })) + .pipe(gulp.dest(paths.styles.output)); +}); + +// Generate SVG sprites +gulp.task('build:svgs', ['clean:dist'], function () { + return gulp.src(paths.svgs.input) + .pipe(plumber()) + .pipe(tap(function (file, t) { + if ( file.isDirectory() ) { + var name = file.relative + '.svg'; + return gulp.src(file.path + '/*.svg') + .pipe(svgmin()) + .pipe(svgstore({ + fileName: name, + prefix: 'icon-', + inlineSvg: true + })) + .pipe(gulp.dest(paths.svgs.output)); + } + })) + .pipe(svgmin()) + .pipe(svgstore({ + fileName: 'icons.svg', + prefix: 'icon-', + inlineSvg: true + })) + .pipe(gulp.dest(paths.svgs.output)); +}); + +// Copy static files into output folder +gulp.task('copy:static', ['clean:dist'], function() { + return gulp.src(paths.static) + .pipe(plumber()) + .pipe(gulp.dest(paths.output)); +}); + +// Lint scripts +gulp.task('lint:scripts', function () { + return gulp.src(paths.scripts.input) + .pipe(plumber()) + .pipe(jshint()) + .pipe(jshint.reporter('jshint-stylish')); +}); + +// Remove prexisting content from output and test folders +gulp.task('clean:dist', function () { + del.sync([ + paths.output, + paths.test.coverage, + paths.test.results + ]); +}); + +// Run unit tests +gulp.task('test:scripts', function() { + return gulp.src([paths.test.input].concat([paths.test.spec])) + .pipe(plumber()) + .pipe(karma({ configFile: paths.test.karma })) + .on('error', function(err) { throw err; }); +}); + +// Generate documentation +gulp.task('build:docs', ['compile', 'clean:docs'], function() { + return gulp.src(paths.docs.input) + .pipe(plumber()) + .pipe(fileinclude({ + prefix: '@@', + basepath: '@file' + })) + .pipe(tap(function (file, t) { + if ( /\.md|\.markdown/.test(file.path) ) { + return t.through(markdown); + } + })) + .pipe(header(fs.readFileSync(paths.docs.templates + '/_header.html', 'utf8'))) + .pipe(footer(fs.readFileSync(paths.docs.templates + '/_footer.html', 'utf8'))) + .pipe(gulp.dest(paths.docs.output)); +}); + +// Copy distribution files to docs +gulp.task('copy:dist', ['compile', 'clean:docs'], function() { + return gulp.src(paths.output + '/**') + .pipe(plumber()) + .pipe(gulp.dest(paths.docs.output + '/dist')); +}); + +// Copy documentation assets to docs +gulp.task('copy:assets', ['clean:docs'], function() { + return gulp.src(paths.docs.assets) + .pipe(plumber()) + .pipe(gulp.dest(paths.docs.output + '/assets')); +}); + +// Remove prexisting content from docs folder +gulp.task('clean:docs', function () { + return del.sync(paths.docs.output); +}); + +// Spin up livereload server and listen for file changes +gulp.task('listen', function () { + livereload.listen(); + gulp.watch(paths.input).on('change', function(file) { + gulp.start('default'); + gulp.start('refresh'); + }); +}); + +// Run livereload after file change +gulp.task('refresh', ['compile', 'docs'], function () { + livereload.changed(); +}); + + +/** + * Task Runners + */ + +// Compile files +gulp.task('compile', [ + 'lint:scripts', + 'clean:dist', + 'copy:static', + 'build:scripts', + 'build:svgs', + 'build:styles' +]); + +// Generate documentation +gulp.task('docs', [ + 'clean:docs', + 'build:docs', + 'copy:dist', + 'copy:assets' +]); + +// Generate documentation +gulp.task('tests', [ + 'test:scripts' +]); + +// Compile files, generate docs, and run unit tests (default) +gulp.task('default', [ + 'compile', + 'docs', + 'tests' +]); + +// Compile files, generate docs, and run unit tests when something changes +gulp.task('watch', [ + 'listen', + 'default' +]);
\ No newline at end of file |