mirror of
https://github.com/koodiklinikka/koodiklinikka.fi.git
synced 2026-03-18 09:05:10 +00:00
Merge pull request #30 from cheapsteak/inject-resources
Inject resources from build directory. obviates rev-manifest.
This commit is contained in:
50
gulpfile.js
50
gulpfile.js
@@ -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']));
|
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user