Last active
July 1, 2017 02:35
-
-
Save ilunie/3e6d4c7c06693df2a7f5 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Gulp Packages | |
* https://github.com/cferdinandi/gulp-boilerplate/blob/master/gulpfile.js#L94 | |
*/ | |
// 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 optimizejs = require('gulp-optimize-js'); | |
// 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/' | |
}, | |
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 %>: <%= package.description %>\n' + | |
' * (c) ' + new Date().getFullYear() + ' <%= package.author.name %>\n' + | |
' * <%= package.license %> License\n' + | |
' * <%= package.repository.url %>\n' + | |
' */\n\n', | |
min : | |
'/*!' + | |
' <%= package.name %> v<%= package.version %>' + | |
' | (c) ' + new Date().getFullYear() + ' <%= package.author.name %>' + | |
' | <%= package.license %> License' + | |
' | <%= package.repository.url %>' + | |
' */\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(optimizejs) | |
.pipe(gulp.dest, paths.scripts.output) | |
.pipe(rename, { suffix: '.min' }) | |
.pipe(uglify) | |
.pipe(optimizejs) | |
.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()); | |
}); | |
// Lint scripts | |
gulp.task('lint:scripts', function () { | |
return gulp.src(paths.scripts.input) | |
.pipe(plumber()) | |
.pipe(jshint()) | |
.pipe(jshint.reporter('jshint-stylish')); | |
}); | |
// Remove pre-existing content from output folders | |
gulp.task('clean:dist', function () { | |
del.sync([ | |
paths.output | |
]); | |
}); | |
// 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', | |
'build:scripts' | |
]); | |
// Generate documentation | |
gulp.task('docs', [ | |
'clean:docs', | |
'build:docs', | |
'copy:dist', | |
'copy:assets' | |
]); | |
// Compile files and generate docs (default) | |
gulp.task('default', [ | |
'compile', | |
'docs' | |
]); | |
// Compile files and generate docs when something changes | |
gulp.task('watch', [ | |
'listen', | |
'default' | |
]); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var elixir = require('laravel-elixir'); | |
var paths = { | |
jquery: './vendor/bower_components/jquery/dist/', | |
fontawesome: './vendor/bower_components/font-awesome/' | |
} | |
elixir(function (mix) { | |
elixir.config.sourcemaps = false; | |
mix.sass(['app.scss'], 'resources/assets/css'); | |
mix.styles([ | |
'app.css' | |
]); | |
/* copy fonts in public directory */ | |
mix.copy(paths.fontawesome + 'fonts', 'public/fonts'); | |
mix.scripts([ | |
paths.jquery + 'jquery.min.js' | |
], 'public/js/vendor.js', './'); /* provide the base directory */ | |
}); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment