forked from akveo/blur-admin
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
10 changed files
with
392 additions
and
191 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
'use strict'; | ||
|
||
var path = require('path'); | ||
var gulp = require('gulp'); | ||
var conf = require('./conf'); | ||
|
||
var $ = require('gulp-load-plugins')({ | ||
pattern: ['gulp-*', 'main-bower-files', 'uglify-save-license', 'del'] | ||
}); | ||
|
||
gulp.task('partials', function () { | ||
return gulp.src([ | ||
path.join(conf.paths.src, '/app/**/*.html'), | ||
path.join(conf.paths.tmp, '/serve/app/**/*.html') | ||
]) | ||
.pipe($.minifyHtml({ | ||
empty: true, | ||
spare: true, | ||
quotes: true | ||
})) | ||
.pipe($.angularTemplatecache('templateCacheHtml.js', { | ||
module: 'angularBestPractices', | ||
root: 'app' | ||
})) | ||
.pipe(gulp.dest(conf.paths.tmp + '/partials/')); | ||
}); | ||
|
||
gulp.task('html', ['inject', 'partials'], function () { | ||
var partialsInjectFile = gulp.src(path.join(conf.paths.tmp, '/partials/templateCacheHtml.js'), { read: false }); | ||
var partialsInjectOptions = { | ||
starttag: '<!-- inject:partials -->', | ||
ignorePath: path.join(conf.paths.tmp, '/partials'), | ||
addRootSlash: false | ||
}; | ||
|
||
var htmlFilter = $.filter('*.html', { restore: true }); | ||
var jsFilter = $.filter('**/*.js', { restore: true }); | ||
var cssFilter = $.filter('**/*.css', { restore: true }); | ||
var assets; | ||
|
||
return gulp.src(path.join(conf.paths.tmp, '/serve/*.html')) | ||
.pipe($.inject(partialsInjectFile, partialsInjectOptions)) | ||
.pipe(assets = $.useref.assets()) | ||
.pipe($.rev()) | ||
.pipe(jsFilter) | ||
.pipe($.sourcemaps.init()) | ||
.pipe($.ngAnnotate()) | ||
.pipe($.uglify({ preserveComments: $.uglifySaveLicense })).on('error', conf.errorHandler('Uglify')) | ||
.pipe($.sourcemaps.write('maps')) | ||
.pipe(jsFilter.restore) | ||
.pipe(cssFilter) | ||
.pipe($.sourcemaps.init()) | ||
.pipe($.replace('../../bower_components/bootstrap-sass/assets/fonts/bootstrap/', '../fonts/')) | ||
.pipe($.minifyCss({ processImport: false })) | ||
.pipe($.sourcemaps.write('maps')) | ||
.pipe(cssFilter.restore) | ||
.pipe(assets.restore()) | ||
.pipe($.useref()) | ||
.pipe($.revReplace()) | ||
.pipe(htmlFilter) | ||
.pipe($.minifyHtml({ | ||
empty: true, | ||
spare: true, | ||
quotes: true, | ||
conditionals: true | ||
})) | ||
.pipe(htmlFilter.restore) | ||
.pipe(gulp.dest(path.join(conf.paths.dist, '/'))) | ||
.pipe($.size({ title: path.join(conf.paths.dist, '/'), showFiles: true })); | ||
}); | ||
|
||
// Only applies for fonts from bower dependencies | ||
// Custom fonts are handled by the "other" task | ||
gulp.task('fonts', function () { | ||
return gulp.src($.mainBowerFiles()) | ||
.pipe($.filter('**/*.{eot,svg,ttf,woff,woff2}')) | ||
.pipe($.flatten()) | ||
.pipe(gulp.dest(path.join(conf.paths.dist, '/fonts/'))); | ||
}); | ||
|
||
gulp.task('other', function () { | ||
var fileFilter = $.filter(function (file) { | ||
return file.stat.isFile(); | ||
}); | ||
|
||
return gulp.src([ | ||
path.join(conf.paths.src, '/**/*'), | ||
path.join('!' + conf.paths.src, '/**/*.{html,css,js,scss}') | ||
]) | ||
.pipe(fileFilter) | ||
.pipe(gulp.dest(path.join(conf.paths.dist, '/'))); | ||
}); | ||
|
||
gulp.task('clean', function () { | ||
return $.del([path.join(conf.paths.dist, '/'), path.join(conf.paths.tmp, '/')]); | ||
}); | ||
|
||
gulp.task('build', ['html', 'fonts', 'other']); |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
/** | ||
* This file contains the variables used in other gulp files | ||
* which defines tasks | ||
* By design, we only put there very generic config values | ||
* which are used in several places to keep good readability | ||
* of the tasks | ||
*/ | ||
|
||
var gutil = require('gulp-util'); | ||
|
||
/** | ||
* The main paths of your project handle these with care | ||
*/ | ||
exports.paths = { | ||
src: 'src', | ||
dist: 'release', | ||
tmp: '.tmp', | ||
e2e: 'e2e' | ||
}; | ||
|
||
/** | ||
* Wiredep is the lib which inject bower dependencies in your project | ||
* Mainly used to inject script tags in the index.html but also used | ||
* to inject css preprocessor deps and js files in karma | ||
*/ | ||
exports.wiredep = { | ||
exclude: [/jquery/, /\/bootstrap\.js$/, /\/bootstrap-sass\/.*\.js/, /\/bootstrap\.css/], | ||
directory: 'bower_components' | ||
}; | ||
|
||
/** | ||
* Common implementation for an error handler of a Gulp plugin | ||
*/ | ||
exports.errorHandler = function(title) { | ||
'use strict'; | ||
|
||
return function(err) { | ||
gutil.log(gutil.colors.red('[' + title + ']'), err.toString()); | ||
this.emit('end'); | ||
}; | ||
}; |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
'use strict'; | ||
|
||
var path = require('path'); | ||
var gulp = require('gulp'); | ||
var conf = require('./conf'); | ||
|
||
var $ = require('gulp-load-plugins')(); | ||
|
||
var wiredep = require('wiredep').stream; | ||
var _ = require('lodash'); | ||
|
||
gulp.task('inject', ['scripts', 'styles'], function () { | ||
var injectStyles = gulp.src([ | ||
path.join(conf.paths.tmp, '/serve/app/**/*.css'), | ||
path.join('!' + conf.paths.tmp, '/serve/app/vendor.css') | ||
], { read: false }); | ||
|
||
var injectScripts = gulp.src([ | ||
path.join(conf.paths.src, '/app/**/*.module.js'), | ||
path.join(conf.paths.src, '/app/**/*.js'), | ||
path.join('!' + conf.paths.src, '/app/**/*.spec.js'), | ||
path.join('!' + conf.paths.src, '/app/**/*.mock.js'), | ||
]) | ||
.pipe($.angularFilesort()).on('error', conf.errorHandler('AngularFilesort')); | ||
|
||
var injectOptions = { | ||
ignorePath: [conf.paths.src, path.join(conf.paths.tmp, '/serve')], | ||
addRootSlash: false | ||
}; | ||
|
||
return gulp.src(path.join(conf.paths.src, '/*.html')) | ||
.pipe($.inject(injectStyles, injectOptions)) | ||
.pipe($.inject(injectScripts, injectOptions)) | ||
.pipe(wiredep(_.extend({}, conf.wiredep))) | ||
.pipe(gulp.dest(path.join(conf.paths.tmp, '/serve'))); | ||
}); |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
'use strict'; | ||
|
||
var path = require('path'); | ||
var gulp = require('gulp'); | ||
var conf = require('./conf'); | ||
|
||
var browserSync = require('browser-sync'); | ||
|
||
var $ = require('gulp-load-plugins')(); | ||
|
||
gulp.task('scripts', function () { | ||
return gulp.src(path.join(conf.paths.src, '/app/**/*.js')) | ||
.pipe($.eslint()) | ||
.pipe($.eslint.format()) | ||
.pipe(browserSync.reload({ stream: true })) | ||
.pipe($.size()) | ||
}); |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
'use strict'; | ||
|
||
var path = require('path'); | ||
var gulp = require('gulp'); | ||
var conf = require('./conf'); | ||
|
||
var browserSync = require('browser-sync'); | ||
var browserSyncSpa = require('browser-sync-spa'); | ||
|
||
var util = require('util'); | ||
|
||
var proxyMiddleware = require('http-proxy-middleware'); | ||
|
||
function browserSyncInit(baseDir, browser) { | ||
browser = browser === undefined ? 'default' : browser; | ||
|
||
var routes = null; | ||
if(baseDir === conf.paths.src || (util.isArray(baseDir) && baseDir.indexOf(conf.paths.src) !== -1)) { | ||
routes = { | ||
'/bower_components': 'bower_components' | ||
}; | ||
} | ||
|
||
var server = { | ||
baseDir: baseDir, | ||
routes: routes | ||
}; | ||
|
||
/* | ||
* You can add a proxy to your backend by uncommenting the line below. | ||
* You just have to configure a context which will we redirected and the target url. | ||
* Example: $http.get('/users') requests will be automatically proxified. | ||
* | ||
* For more details and option, https://github.com/chimurai/http-proxy-middleware/blob/v0.0.5/README.md | ||
*/ | ||
// server.middleware = proxyMiddleware('/users', {target: 'http://jsonplaceholder.typicode.com', proxyHost: 'jsonplaceholder.typicode.com'}); | ||
|
||
browserSync.instance = browserSync.init({ | ||
startPath: '/', | ||
server: server, | ||
browser: browser | ||
}); | ||
} | ||
|
||
browserSync.use(browserSyncSpa({ | ||
selector: '[ng-app]'// Only needed for angular apps | ||
})); | ||
|
||
gulp.task('serve', ['watch'], function () { | ||
browserSyncInit([path.join(conf.paths.tmp, '/serve'), conf.paths.src]); | ||
}); | ||
|
||
gulp.task('serve:dist', ['build'], function () { | ||
browserSyncInit(conf.paths.dist); | ||
}); |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
'use strict'; | ||
|
||
var path = require('path'); | ||
var gulp = require('gulp'); | ||
var conf = require('./conf'); | ||
|
||
var browserSync = require('browser-sync'); | ||
|
||
var $ = require('gulp-load-plugins')(); | ||
|
||
var wiredep = require('wiredep').stream; | ||
var _ = require('lodash'); | ||
|
||
gulp.task('styles', function () { | ||
var sassOptions = { | ||
style: 'expanded' | ||
}; | ||
|
||
var injectFiles = gulp.src([ | ||
path.join(conf.paths.src, '/app/**/*.scss'), | ||
path.join('!' + conf.paths.src, '/app/index.scss') | ||
], { read: false }); | ||
|
||
var injectOptions = { | ||
transform: function(filePath) { | ||
filePath = filePath.replace(conf.paths.src + '/app/', ''); | ||
return '@import "' + filePath + '";'; | ||
}, | ||
starttag: '// injector', | ||
endtag: '// endinjector', | ||
addRootSlash: false | ||
}; | ||
|
||
|
||
return gulp.src([ | ||
path.join(conf.paths.src, '/app/index.scss') | ||
]) | ||
.pipe($.inject(injectFiles, injectOptions)) | ||
.pipe(wiredep(_.extend({}, conf.wiredep))) | ||
.pipe($.sourcemaps.init()) | ||
.pipe($.sass(sassOptions)).on('error', conf.errorHandler('Sass')) | ||
.pipe($.autoprefixer()).on('error', conf.errorHandler('Autoprefixer')) | ||
.pipe($.sourcemaps.write()) | ||
.pipe(gulp.dest(path.join(conf.paths.tmp, '/serve/app/'))) | ||
.pipe(browserSync.reload({ stream: true })); | ||
}); |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
'use strict'; | ||
|
||
var path = require('path'); | ||
var gulp = require('gulp'); | ||
var conf = require('./conf'); | ||
|
||
var browserSync = require('browser-sync'); | ||
|
||
function isOnlyChange(event) { | ||
return event.type === 'changed'; | ||
} | ||
|
||
gulp.task('watch', ['inject'], function () { | ||
|
||
gulp.watch([path.join(conf.paths.src, '/*.html'), 'bower.json'], ['inject']); | ||
|
||
gulp.watch([ | ||
path.join(conf.paths.src, '/app/**/*.css'), | ||
path.join(conf.paths.src, '/app/**/*.scss') | ||
], function(event) { | ||
if(isOnlyChange(event)) { | ||
gulp.start('styles'); | ||
} else { | ||
gulp.start('inject'); | ||
} | ||
}); | ||
|
||
gulp.watch(path.join(conf.paths.src, '/app/**/*.js'), function(event) { | ||
if(isOnlyChange(event)) { | ||
gulp.start('scripts'); | ||
} else { | ||
gulp.start('inject'); | ||
} | ||
}); | ||
|
||
gulp.watch(path.join(conf.paths.src, '/app/**/*.html'), function(event) { | ||
browserSync.reload(event.path); | ||
}); | ||
}); |
Oops, something went wrong.