diff options
Diffstat (limited to 'build/release.js')
-rw-r--r-- | build/release.js | 163 |
1 files changed, 30 insertions, 133 deletions
diff --git a/build/release.js b/build/release.js index 43be272ad..1b306b50c 100644 --- a/build/release.js +++ b/build/release.js @@ -1,113 +1,21 @@ + module.exports = function( Release ) { var - fs = require( "fs" ), - shell = require( "shelljs" ), - ensureSizzle = require( "./ensure-sizzle" ), - - devFile = "dist/jquery.js", - minFile = "dist/jquery.min.js", - mapFile = "dist/jquery.min.map", - - cdnFolder = "dist/cdn", - - releaseFiles = { - "jquery-VER.js": devFile, - "jquery-VER.min.js": minFile, - "jquery-VER.min.map": mapFile - }, - - googleFilesCDN = [ - "jquery.js", "jquery.min.js", "jquery.min.map" - ], - - msFilesCDN = [ - "jquery-VER.js", "jquery-VER.min.js", "jquery-VER.min.map" - ], + files = [ "dist/jquery.js", "dist/jquery.min.js", "dist/jquery.min.map" ], + cdn = require( "./release/cdn" ), + dist = require( "./release/dist" ), + ensureSizzle = require( "./release/ensure-sizzle" ), - _complete = Release.complete; + npmTags = Release.npmTags; - /** - * Generates copies for the CDNs - */ - function makeReleaseCopies() { - shell.mkdir( "-p", cdnFolder ); - - Object.keys( releaseFiles ).forEach(function( key ) { - var text, - builtFile = releaseFiles[ key ], - unpathedFile = key.replace( /VER/g, Release.newVersion ), - releaseFile = cdnFolder + "/" + unpathedFile; - - if ( /\.map$/.test( releaseFile ) ) { - // Map files need to reference the new uncompressed name; - // assume that all files reside in the same directory. - // "file":"jquery.min.js","sources":["jquery.js"] - text = fs.readFileSync( builtFile, "utf8" ) - .replace( /"file":"([^"]+)","sources":\["([^"]+)"\]/, - "\"file\":\"" + unpathedFile.replace( /\.min\.map/, ".min.js" ) + - "\",\"sources\":[\"" + unpathedFile.replace( /\.min\.map/, ".js" ) + "\"]" ); - fs.writeFileSync( releaseFile, text ); - } else if ( /\.min\.js$/.test( releaseFile ) ) { - // Remove the source map comment; it causes way too many problems. - // Keep the map file in case DevTools allow manual association. - text = fs.readFileSync( builtFile, "utf8" ) - .replace( /\/\/# sourceMappingURL=\S+/, "" ); - fs.writeFileSync( releaseFile, text ); - } else if ( builtFile !== releaseFile ) { - shell.cp( "-f", builtFile, releaseFile ); - } - }); - } - - function buildGoogleCDN() { - makeArchive( "googlecdn", googleFilesCDN ); - } - - function buildMicrosoftCDN() { - makeArchive( "mscdn", msFilesCDN ); - } - - function makeArchive( cdn, files ) { - if ( Release.preRelease ) { - console.log( "Skipping archive creation for " + cdn + "; this is a beta release." ); - return; - } - - console.log( "Creating production archive for " + cdn ); - - var archiver = require( "archiver" )( "zip" ), - md5file = cdnFolder + "/" + cdn + "-md5.txt", - output = fs.createWriteStream( - cdnFolder + "/" + cdn + "-jquery-" + Release.newVersion + ".zip" - ); - - output.on( "error", function( err ) { - throw err; - }); - - archiver.pipe( output ); - - files = files.map(function( item ) { - return cdnFolder + "/" + item.replace( /VER/g, Release.newVersion ); - }); - - shell.exec( "md5sum", files, function( code, stdout ) { - fs.writeFileSync( md5file, stdout ); - files.push( md5file ); - - files.forEach(function( file ) { - archiver.append( fs.createReadStream( file ), { name: file } ); - }); - - archiver.finalize(); - }); - } + // Have jquery-release update the version + // in our bower.json template + Release._jsonFiles.push( "build/release/_bower.json" ); Release.define({ npmPublish: true, - issueTracker: "trac", - contributorReportId: 508, + issueTracker: "github", /** * Ensure the repo is in a proper state before release * @param {Function} callback @@ -123,48 +31,37 @@ module.exports = function( Release ) { */ generateArtifacts: function( callback ) { Release.exec( "grunt", "Grunt command failed" ); - makeReleaseCopies(); - callback([ "dist/jquery.js", "dist/jquery.min.js", "dist/jquery.min.map" ]); + cdn.makeReleaseCopies( Release ); + callback( files ); }, /** - * Release completion + * Acts as insertion point for restoring Release.dir.repo + * It was changed to reuse npm publish code in jquery-release + * for publishing the distribution repo instead */ - complete: function() { - // Build CDN archives async - buildGoogleCDN(); - buildMicrosoftCDN(); - _complete(); + npmTags: function() { + // origRepo is not defined if dist was skipped + Release.dir.repo = Release.dir.origRepo || Release.dir.repo; + return npmTags(); }, /** - * Our trac milestones are different than the new version - * @example - * - * // For Release.newVersion equal to 2.1.0 or 1.11.0 - * Release._tracMilestone(); - * // => 1.11/2.1 - * - * // For Release.newVersion equal to 2.1.1 or 1.11.1 - * Release._tracMilestone(); - * // => 1.11.1/2.1.1 + * Publish to distribution repo and npm + * @param {Function} callback */ - tracMilestone: function() { - var otherVersion, - m = Release.newVersion.split( "." ), - major = m[0] | 0, - minor = m[1] | 0, - patch = m[2] | 0 ? "." + m[2] : "", - version = major + "." + minor + patch; - if ( major === 1) { - otherVersion = "2." + ( minor - 10 ) + patch; - return version + "/" + otherVersion; + dist: function( callback ) { + + if ( Release.isTest ) { + callback(); + return; } - otherVersion = "1." + ( minor + 10 ) + patch; - return otherVersion + "/" + version; + + dist( Release, callback ); } }); }; module.exports.dependencies = [ "archiver@0.5.2", - "shelljs@0.2.6" + "shelljs@0.2.6", + "npm@2.3.0" ]; |