From 3820ee461da6ad05754115ffea74c1ff616b4b75 Mon Sep 17 00:00:00 2001 From: Chang Wang Date: Mon, 28 Sep 2015 23:58:53 -0400 Subject: [PATCH] inject resources from build directory. obviates rev-manifest. --- gulpfile.js | 50 +++++++++++++++----------------------------------- package.json | 1 + src/index.jade | 6 ++++-- 3 files changed, 20 insertions(+), 37 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index bb03478..06a3e63 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -22,6 +22,7 @@ var stylus = require('gulp-stylus'); var uglify = require('gulp-uglify'); var watchify = require('watchify'); var watch = require('gulp-watch'); +var inject = require('gulp-inject'); /*eslint "no-process-env":0 */ var production = process.env.NODE_ENV === 'production'; @@ -51,10 +52,8 @@ var config = { watch: './src/assets/**/*.*', destination: './public/' }, - revision: { - source: ['./public/**/*.css', './public/**/*.js'], - base: path.join(__dirname, 'public'), - destination: './public/' + inject: { + resources: ['./public/**/*.css', './public/**/*.js'] } }; @@ -83,7 +82,9 @@ gulp.task('scripts', function() { .pipe(source(config.scripts.filename)); if(production) { - pipeline = pipeline.pipe(streamify(uglify())); + pipeline = pipeline + .pipe(streamify(uglify())) + .pipe(streamify(rev())); } else { pipeline = pipeline.pipe(transform(function() { return exorcist(config.scripts.destination + config.scripts.filename + '.map'); @@ -93,12 +94,15 @@ gulp.task('scripts', function() { return pipeline.pipe(gulp.dest(config.scripts.destination)); }); -gulp.task('templates', function() { +gulp.task('templates', production ? ['styles', 'scripts'] : [], function() { + var resources = gulp.src(config.inject.resources, {read: false}); + var pipeline = gulp.src(config.templates.source) .pipe(jade({ pretty: !production })) .on('error', handleError) + .pipe(inject(resources, {ignorePath: 'public', removeTags: true})) .pipe(gulp.dest(config.templates.destination)); if(production) { @@ -125,7 +129,9 @@ gulp.task('styles', function() { .on('error', handleError) .pipe(prefix('last 2 versions', 'Chrome 34', 'Firefox 28', 'iOS 7')); - if(!production) { + if(production) { + pipeline = pipeline.pipe(rev()); + } else { pipeline = pipeline.pipe(sourcemaps.write('.')); } @@ -182,31 +188,5 @@ gulp.task('watch', function() { }).emit('update'); }); -var buildTasks = ['templates', 'styles', 'assets']; - -gulp.task('revision', buildTasks.concat(['scripts']), function() { - return gulp.src(config.revision.source, {base: config.revision.base}) - .pipe(rev()) - .pipe(gulp.dest(config.revision.destination)) - .pipe(rev.manifest()) - .pipe(gulp.dest('./')); -}); - -gulp.task('replace-revision-references', ['revision', 'templates'], function() { - var revisions = require('./rev-manifest.json'); - - var pipeline = gulp.src(config.templates.revision); - - pipeline = Object.keys(revisions).reduce(function(stream, key) { - return stream.pipe(replace(key, revisions[key])); - }, pipeline); - - return pipeline.pipe(gulp.dest(config.templates.destination)); -}); - -gulp.task('build', function() { - rimraf.sync(config.destination); - gulp.start(buildTasks.concat(['scripts', 'revision', 'replace-revision-references'])); -}); - -gulp.task('default', buildTasks.concat(['watch', 'server'])); +gulp.task('build', ['styles', 'assets', 'scripts', 'templates']); +gulp.task('default', ['styles', 'assets', 'templates', 'watch', 'server']); diff --git a/package.json b/package.json index 7b6ba93..744a693 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "gulp": "~3.8.1", "gulp-autoprefixer": "1.0.1", "gulp-duration": "0.0.0", + "gulp-inject": "^3.0.0", "gulp-jade": "~0.9.0", "gulp-replace": "^0.5.3", "gulp-rev": "^4.0.0", diff --git a/src/index.jade b/src/index.jade index 76a4bf6..c5ab11f 100644 --- a/src/index.jade +++ b/src/index.jade @@ -2,7 +2,9 @@ doctype html html head title Gulp template - link(rel='stylesheet', href='css/style.css') + // inject:css + // endinject body h1 Hello world! - script(src='js/bundle.js') + // inject:js + // endinject