Skip to content
This repository was archived by the owner on Mar 31, 2020. It is now read-only.
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 49 additions & 14 deletions ingredients/version.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ elixir.extend('version', function(src, buildDir) {
return this.queueTask('version');
});


/**
* Build the "version" Gulp task.
*
Expand All @@ -44,9 +43,7 @@ var buildTask = function(src, buildDir) {

utilities.logTask("Versioning", src);

// To start, we'll clear out the build directory,
// so that we can start from scratch.
del.sync(buildDir + '/*', { force: true });
deletePreviousVersion(buildDir);

return gulp.src(src, { base: './public' })
.pipe(gulp.dest(buildDir))
Expand All @@ -56,29 +53,25 @@ var buildTask = function(src, buildDir) {
.pipe(rev.manifest())
.pipe(gulp.dest(buildDir))
.on('end', function() {
// We'll get rid of the duplicated file that
// usually gets put in the "build" folder,
// alongside the suffixed version.
del(files.paths);

// We'll also copy over relevant sourcemap files.
// Copy over relevant sourcemap files.
copyMaps(src, buildDir);

// Delete pre-versioned files
deletePreVersionedFiles(src, buildDir);
});
});
};


/**
* Prepare the path to the build directory.
*
* @param {string} buildDir
* @return {string}
*/
var getBuildDir = function(buildDir) {
return buildDir ? buildDir + '/build' : 'public/build';
return buildDir ? buildDir : 'public/build';
};


/**
* Copy source maps to the build directory.
*
Expand All @@ -105,6 +98,48 @@ var copyMaps = function(src, buildDir) {
mappings.forEach(function(mapping) {
var map = mapping.replace('public', buildDir);

gulp.src(mapping).pipe(gulp.dest(parsePath(map).dirname));
if (map !== mapping) {
gulp.src(mapping)
.pipe(gulp.dest(parsePath(map).dirname))
.on('end', function() {
del.sync(mapping);
});
}
});
};

/**
* Deletes previously versioned files defined within the rev-manifest file
*
* @param {string} buildDir
*/
var deletePreviousVersion = function (buildDir) {
var revManifest = buildDir + '/rev-manifest.json';

if (fs.existsSync(revManifest)) {
var files = JSON.parse(fs.readFileSync(revManifest, 'utf8'));

for (var file in files) {
del.sync(buildDir + '/' + files[file], {force: true});
}
}
};

/**
* Deletes original files that were versioned
*
* @param {string} src
* @param {string} buildDir
*/
var deletePreVersionedFiles = function (src, buildDir) {
for (var i in src) {
var file = src[i],
duplicateCopy = file.replace('public', buildDir);

del.sync(file, {force: true});

if (fs.existsSync(duplicateCopy)) {
del.sync(duplicateCopy, {force: true});
}
}
}