Temp fixes to reproducing a proper `gulp serve`

This commit is contained in:
Avery Magnotti 2017-02-05 17:53:21 -05:00
parent 2f99eb4e2c
commit 027cd49afb
2 changed files with 73 additions and 26 deletions

View File

@ -1,9 +1,22 @@
'use strict';
// Include Gulp & tools we'll use
var autoprefixer = require('gulp-autoprefixer');
var useref = require('gulp-useref');
var vulcanize = require('vulcanize');
var size = require('gulp-size');
var gulp = require('gulp');
var $ = require('gulp-load-plugins')();
var ghPages = require('gulp-gh-pages');
var gulpIf = require('gulp-if');
var jscs = require('gulp-jscs');
var jscsStylish = require('gulp-jscs-stylish');
var htmlExtract = require('gulp-html-extract');
var imagemin = require('gulp-imagemin');
var cleanCSS = require('gulp-clean-css');
var changed = require('gulp-changed');
var del = require('del');
var uglify = require('gulp-uglify');
var jshint = require('gulp-jshint');
var runSequence = require('run-sequence');
var browserSync = require('browser-sync');
var reload = browserSync.reload;
@ -45,57 +58,57 @@ var styleTask = function(stylesPath, srcs) {
return gulp.src(srcs.map(function(src) {
return path.join('app', stylesPath, src);
}))
.pipe($.changed(stylesPath, {
.pipe(changed(stylesPath, {
extension: '.css'
}))
.pipe($.autoprefixer(AUTOPREFIXER_BROWSERS))
.pipe(autoprefixer(AUTOPREFIXER_BROWSERS))
.pipe(gulp.dest('.tmp/' + stylesPath))
.pipe($.minifyCss())
.pipe(cleanCSS())
.pipe(gulp.dest(dist(stylesPath)))
.pipe($.size({
.pipe(size({
title: stylesPath
}));
};
var imageOptimizeTask = function(src, dest) {
return gulp.src(src)
.pipe($.imagemin({
.pipe(imagemin({
progressive: true,
interlaced: true
}))
.pipe(gulp.dest(dest))
.pipe($.size({
.pipe(size({
title: 'images'
}));
};
var optimizeHtmlTask = function(src, dest) {
var assets = $.useref.assets({
var assets = useref.assets({
searchPath: ['.tmp', 'app']
});
return gulp.src(src)
.pipe(assets)
// Concatenate and minify JavaScript
.pipe($.if('*.js', $.uglify({
.pipe(gulpIf('*.js', uglify({
preserveComments: 'some'
})))
// Concatenate and minify styles
// In case you are still using useref build blocks
.pipe($.if('*.css', $.minifyCss()))
.pipe(gulpIf('*.css', cleanCSS()))
.pipe(assets.restore())
.pipe($.useref())
.pipe(useref())
// Minify any HTML
.pipe($.if('*.html', $.minifyHtml({
.pipe(gulpIf('*.html', minifyHTML({
quotes: true,
empty: true,
spare: true
})))
.pipe($.if('*.html', inlinesource()))
.pipe(gulpIf('*.html', inlinesource()))
.pipe(replace('window.debug = true;', ''))
// Output files
.pipe(gulp.dest(dest))
.pipe($.size({
.pipe(size({
title: 'html'
}));
};
@ -134,12 +147,12 @@ gulp.task('lint', ['ensureFiles'], function() {
}))
// JSCS has not yet a extract option
.pipe($.if('*.html', $.htmlExtract()))
.pipe($.jshint())
.pipe($.jscs())
.pipe($.jscsStylish.combineWithHintResults())
.pipe($.jshint.reporter('jshint-stylish'))
.pipe($.if(!browserSync.active, $.jshint.reporter('fail')));
.pipe(gulpIf('*.html', htmlExtract()))
.pipe(jshint())
.pipe(jscs())
.pipe(jscsStylish.combineWithHintResults())
.pipe(jshint.reporter('jshint-stylish'))
.pipe(gulpIf(!browserSync.active, jshint.reporter('fail')));
});
// Optimize images
@ -166,7 +179,7 @@ gulp.task('copy', function() {
]).pipe(gulp.dest(dist('bower_components')));
return merge(app, bower)
.pipe($.size({
.pipe(size({
title: 'copy'
}));
});
@ -175,7 +188,7 @@ gulp.task('copy', function() {
gulp.task('fonts', function() {
return gulp.src(['app/fonts/**'])
.pipe(gulp.dest(dist('fonts')))
.pipe($.size({
.pipe(size({
title: 'fonts'
}));
});
@ -190,7 +203,7 @@ gulp.task('html', function() {
// Vulcanize granular configuration
gulp.task('vulcanize', function() {
return gulp.src('app/elements/elements.html')
.pipe($.vulcanize({
.pipe(vulcanize({
stripComments: true,
stripExclude:['app/bower_components/font-roboto/roboto.html'],
inlineCss: true,
@ -200,7 +213,7 @@ gulp.task('vulcanize', function() {
empty: true
}))
.pipe(gulp.dest(dist('elements')))
.pipe($.size({
.pipe(size({
title: 'vulcanize'
}));
});
@ -329,11 +342,11 @@ gulp.task('deploy-gh-pages', function() {
return gulp.src(dist('**/*'))
// Check if running task from Travis CI, if so run using GH_TOKEN
// otherwise run using ghPages defaults.
.pipe($.if(process.env.TRAVIS === 'true', $.ghPages({
.pipe(gulpIf(process.env.TRAVIS === 'true', ghPages({
remoteUrl: 'https://$GH_TOKEN@github.com/polymerelements/polymer-starter-kit.git',
silent: true,
branch: 'gh-pages'
}), $.ghPages()));
}), ghPages()));
});
// Load tasks for web-component-tester

34
tasks/ensure-files.js Normal file
View File

@ -0,0 +1,34 @@
var fs = require('fs');
/**
* @param {Array<string>} files
* @param {Function} cb
*/
function ensureFiles(files, cb) {
var missingFiles = files.reduce(function(prev, filePath) {
var fileFound = false;
try {
fileFound = fs.statSync(filePath).isFile();
} catch (e) { }
if (!fileFound) {
prev.push(filePath + ' Not Found');
}
return prev;
}, []);
if (missingFiles.length) {
var err = new Error('Missing Required Files\n' + missingFiles.join('\n'));
}
if (cb) {
cb(err);
} else if (err) {
throw err;
}
}
module.exports = ensureFiles;