Merge pull request #30 from cheapsteak/inject-resources

Inject resources from build directory. obviates rev-manifest.
This commit is contained in:
Riku Rouvila
2015-09-30 20:19:46 +03:00
3 changed files with 20 additions and 37 deletions

View File

@@ -22,6 +22,7 @@ var stylus = require('gulp-stylus');
var uglify = require('gulp-uglify'); var uglify = require('gulp-uglify');
var watchify = require('watchify'); var watchify = require('watchify');
var watch = require('gulp-watch'); var watch = require('gulp-watch');
var inject = require('gulp-inject');
/*eslint "no-process-env":0 */ /*eslint "no-process-env":0 */
var production = process.env.NODE_ENV === 'production'; var production = process.env.NODE_ENV === 'production';
@@ -51,10 +52,8 @@ var config = {
watch: './src/assets/**/*.*', watch: './src/assets/**/*.*',
destination: './public/' destination: './public/'
}, },
revision: { inject: {
source: ['./public/**/*.css', './public/**/*.js'], resources: ['./public/**/*.css', './public/**/*.js']
base: path.join(__dirname, 'public'),
destination: './public/'
} }
}; };
@@ -83,7 +82,9 @@ gulp.task('scripts', function() {
.pipe(source(config.scripts.filename)); .pipe(source(config.scripts.filename));
if(production) { if(production) {
pipeline = pipeline.pipe(streamify(uglify())); pipeline = pipeline
.pipe(streamify(uglify()))
.pipe(streamify(rev()));
} else { } else {
pipeline = pipeline.pipe(transform(function() { pipeline = pipeline.pipe(transform(function() {
return exorcist(config.scripts.destination + config.scripts.filename + '.map'); 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)); 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) var pipeline = gulp.src(config.templates.source)
.pipe(jade({ .pipe(jade({
pretty: !production pretty: !production
})) }))
.on('error', handleError) .on('error', handleError)
.pipe(inject(resources, {ignorePath: 'public', removeTags: true}))
.pipe(gulp.dest(config.templates.destination)); .pipe(gulp.dest(config.templates.destination));
if(production) { if(production) {
@@ -125,7 +129,9 @@ gulp.task('styles', function() {
.on('error', handleError) .on('error', handleError)
.pipe(prefix('last 2 versions', 'Chrome 34', 'Firefox 28', 'iOS 7')); .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('.')); pipeline = pipeline.pipe(sourcemaps.write('.'));
} }
@@ -182,31 +188,5 @@ gulp.task('watch', function() {
}).emit('update'); }).emit('update');
}); });
var buildTasks = ['templates', 'styles', 'assets']; gulp.task('build', ['styles', 'assets', 'scripts', 'templates']);
gulp.task('default', ['styles', 'assets', 'templates', 'watch', 'server']);
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']));

View File

@@ -32,6 +32,7 @@
"gulp": "~3.8.1", "gulp": "~3.8.1",
"gulp-autoprefixer": "1.0.1", "gulp-autoprefixer": "1.0.1",
"gulp-duration": "0.0.0", "gulp-duration": "0.0.0",
"gulp-inject": "^3.0.0",
"gulp-jade": "~0.9.0", "gulp-jade": "~0.9.0",
"gulp-replace": "^0.5.3", "gulp-replace": "^0.5.3",
"gulp-rev": "^4.0.0", "gulp-rev": "^4.0.0",

View File

@@ -2,7 +2,9 @@ doctype html
html html
head head
title Gulp template title Gulp template
link(rel='stylesheet', href='css/style.css') // inject:css
// endinject
body body
h1 Hello world! h1 Hello world!
script(src='js/bundle.js') // inject:js
// endinject