summaryrefslogtreecommitdiff
path: root/static/website/bootstrap-css/bower_components/smooth-scroll/gulpfile.js
diff options
context:
space:
mode:
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.js297
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