mirror of
https://github.com/koodiklinikka/koodiklinikka.fi.git
synced 2026-01-26 11:23:58 +00:00
add revisioning task to gulp build
* 'public' directory is now removed on gulp build * Copies built .css and .js files to <filename>-<hash>.<extension> * Replaces references from built .html files to match the revisioned files * Keeps the original built files intact, but this is most likely going to change in the future
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -3,3 +3,4 @@ node_modules
|
||||
bower_components
|
||||
public
|
||||
.DS_Store
|
||||
rev-manifest.json
|
||||
|
||||
41
gulpfile.js
41
gulpfile.js
@@ -8,7 +8,11 @@ var gulp = require('gulp');
|
||||
var gutil = require('gulp-util');
|
||||
var jade = require('gulp-jade');
|
||||
var notifier = require('node-notifier');
|
||||
var path = require('path');
|
||||
var prefix = require('gulp-autoprefixer');
|
||||
var replace = require('gulp-replace');
|
||||
var rev = require('gulp-rev');
|
||||
var rimraf = require('rimraf');
|
||||
var source = require('vinyl-source-stream');
|
||||
var sourcemaps = require('gulp-sourcemaps');
|
||||
var streamify = require('gulp-streamify');
|
||||
@@ -20,6 +24,7 @@ var watchify = require('watchify');
|
||||
var production = process.env.NODE_ENV === 'production';
|
||||
|
||||
var config = {
|
||||
destination: './public',
|
||||
scripts: {
|
||||
source: './src/js/main.js',
|
||||
destination: './public/js/',
|
||||
@@ -29,7 +34,8 @@ var config = {
|
||||
templates: {
|
||||
source: './src/jade/*.jade',
|
||||
watch: './src/jade/*.jade',
|
||||
destination: './public/'
|
||||
destination: './public/',
|
||||
revision: './public/**/*.html'
|
||||
},
|
||||
styles: {
|
||||
source: './src/stylus/style.styl',
|
||||
@@ -40,6 +46,11 @@ var config = {
|
||||
source: './src/assets/**/*.*',
|
||||
watch: './src/assets/**/*.*',
|
||||
destination: './public/'
|
||||
},
|
||||
revision: {
|
||||
source: ['./public/**/*.css', './public/**/*.js'],
|
||||
base: path.join(__dirname, 'public'),
|
||||
destination: './public/'
|
||||
}
|
||||
};
|
||||
|
||||
@@ -130,7 +141,7 @@ gulp.task('server', function() {
|
||||
open: false,
|
||||
port: 9001,
|
||||
server: {
|
||||
baseDir: './public'
|
||||
baseDir: config.destination
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -155,5 +166,29 @@ gulp.task('watch', function() {
|
||||
|
||||
var buildTasks = ['templates', 'styles', 'assets'];
|
||||
|
||||
gulp.task('build', buildTasks.concat(['scripts']));
|
||||
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']));
|
||||
|
||||
@@ -29,6 +29,8 @@
|
||||
"gulp-autoprefixer": "1.0.1",
|
||||
"gulp-duration": "0.0.0",
|
||||
"gulp-jade": "~0.9.0",
|
||||
"gulp-replace": "^0.5.3",
|
||||
"gulp-rev": "^4.0.0",
|
||||
"gulp-sourcemaps": "^1.3.0",
|
||||
"gulp-streamify": "0.0.5",
|
||||
"gulp-stylus": "~2.0.0",
|
||||
@@ -39,6 +41,7 @@
|
||||
"karma-cli": "0.0.4",
|
||||
"karma-jasmine": "~0.2.2",
|
||||
"node-notifier": "^4.2.1",
|
||||
"rimraf": "^2.3.4",
|
||||
"vinyl-source-stream": "~1.0.0",
|
||||
"watchify": "^3.2.1"
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user