mirror of
https://github.com/jquery/jquery.git
synced 2024-12-09 08:04:24 +00:00
Release: Distribute files to distribution repo
Fixes gh-1869 Fixes gh-1673 Fixes gh-2045
This commit is contained in:
parent
087d280ad1
commit
26eca143c2
21
bower.json
21
bower.json
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "jquery",
|
|
||||||
"version": "3.0.0-pre",
|
|
||||||
"main": "dist/jquery.js",
|
|
||||||
"license": "MIT",
|
|
||||||
"ignore": [
|
|
||||||
"**/.*",
|
|
||||||
"build",
|
|
||||||
"speed",
|
|
||||||
"test",
|
|
||||||
"*.md",
|
|
||||||
"AUTHORS.txt",
|
|
||||||
"Gruntfile.js",
|
|
||||||
"package.json"
|
|
||||||
],
|
|
||||||
"keywords": [
|
|
||||||
"jquery",
|
|
||||||
"javascript",
|
|
||||||
"library"
|
|
||||||
]
|
|
||||||
}
|
|
163
build/release.js
163
build/release.js
@ -1,113 +1,21 @@
|
|||||||
|
|
||||||
module.exports = function( Release ) {
|
module.exports = function( Release ) {
|
||||||
|
|
||||||
var
|
var
|
||||||
fs = require( "fs" ),
|
files = [ "dist/jquery.js", "dist/jquery.min.js", "dist/jquery.min.map" ],
|
||||||
shell = require( "shelljs" ),
|
cdn = require( "./release/cdn" ),
|
||||||
ensureSizzle = require( "./ensure-sizzle" ),
|
dist = require( "./release/dist" ),
|
||||||
|
ensureSizzle = require( "./release/ensure-sizzle" ),
|
||||||
|
|
||||||
devFile = "dist/jquery.js",
|
npmTags = Release.npmTags;
|
||||||
minFile = "dist/jquery.min.js",
|
|
||||||
mapFile = "dist/jquery.min.map",
|
|
||||||
|
|
||||||
cdnFolder = "dist/cdn",
|
// Have jquery-release update the version
|
||||||
|
// in our bower.json template
|
||||||
releaseFiles = {
|
Release._jsonFiles.push( "build/release/_bower.json" );
|
||||||
"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"
|
|
||||||
],
|
|
||||||
|
|
||||||
_complete = Release.complete;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 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();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
Release.define({
|
Release.define({
|
||||||
npmPublish: true,
|
npmPublish: true,
|
||||||
issueTracker: "trac",
|
issueTracker: "github",
|
||||||
contributorReportId: 508,
|
|
||||||
/**
|
/**
|
||||||
* Ensure the repo is in a proper state before release
|
* Ensure the repo is in a proper state before release
|
||||||
* @param {Function} callback
|
* @param {Function} callback
|
||||||
@ -123,48 +31,37 @@ module.exports = function( Release ) {
|
|||||||
*/
|
*/
|
||||||
generateArtifacts: function( callback ) {
|
generateArtifacts: function( callback ) {
|
||||||
Release.exec( "grunt", "Grunt command failed" );
|
Release.exec( "grunt", "Grunt command failed" );
|
||||||
makeReleaseCopies();
|
cdn.makeReleaseCopies( Release );
|
||||||
callback([ "dist/jquery.js", "dist/jquery.min.js", "dist/jquery.min.map" ]);
|
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() {
|
npmTags: function() {
|
||||||
// Build CDN archives async
|
// origRepo is not defined if dist was skipped
|
||||||
buildGoogleCDN();
|
Release.dir.repo = Release.dir.origRepo || Release.dir.repo;
|
||||||
buildMicrosoftCDN();
|
return npmTags();
|
||||||
_complete();
|
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Our trac milestones are different than the new version
|
* Publish to distribution repo and npm
|
||||||
* @example
|
* @param {Function} callback
|
||||||
*
|
|
||||||
* // 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
|
|
||||||
*/
|
*/
|
||||||
tracMilestone: function() {
|
dist: function( callback ) {
|
||||||
var otherVersion,
|
|
||||||
m = Release.newVersion.split( "." ),
|
if ( Release.isTest ) {
|
||||||
major = m[0] | 0,
|
callback();
|
||||||
minor = m[1] | 0,
|
return;
|
||||||
patch = m[2] | 0 ? "." + m[2] : "",
|
|
||||||
version = major + "." + minor + patch;
|
|
||||||
if ( major === 1) {
|
|
||||||
otherVersion = "2." + ( minor - 10 ) + patch;
|
|
||||||
return version + "/" + otherVersion;
|
|
||||||
}
|
}
|
||||||
otherVersion = "1." + ( minor + 10 ) + patch;
|
|
||||||
return otherVersion + "/" + version;
|
dist( Release, callback );
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports.dependencies = [
|
module.exports.dependencies = [
|
||||||
"archiver@0.5.2",
|
"archiver@0.5.2",
|
||||||
"shelljs@0.2.6"
|
"shelljs@0.2.6",
|
||||||
|
"npm@2.3.0"
|
||||||
];
|
];
|
||||||
|
106
build/release/cdn.js
Normal file
106
build/release/cdn.js
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
var
|
||||||
|
fs = require( "fs" ),
|
||||||
|
shell = require( "shelljs" ),
|
||||||
|
|
||||||
|
cdnFolder = "dist/cdn",
|
||||||
|
|
||||||
|
devFile = "dist/jquery.js",
|
||||||
|
minFile = "dist/jquery.min.js",
|
||||||
|
mapFile = "dist/jquery.min.map",
|
||||||
|
|
||||||
|
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"
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates copies for the CDNs
|
||||||
|
*/
|
||||||
|
function makeReleaseCopies( Release ) {
|
||||||
|
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 makeArchive( Release, 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();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function buildGoogleCDN( Release ) {
|
||||||
|
makeArchive( Release, "googlecdn", googleFilesCDN );
|
||||||
|
}
|
||||||
|
|
||||||
|
function buildMicrosoftCDN( Release ) {
|
||||||
|
makeArchive( Release, "mscdn", msFilesCDN );
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
makeReleaseCopies: makeReleaseCopies,
|
||||||
|
buildGoogleCDN: buildGoogleCDN,
|
||||||
|
buildMicrosoftCDN: buildMicrosoftCDN
|
||||||
|
};
|
113
build/release/dist.js
Normal file
113
build/release/dist.js
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
module.exports = function( Release, complete ) {
|
||||||
|
|
||||||
|
var
|
||||||
|
fs = require( "fs" ),
|
||||||
|
shell = require( "shelljs" ),
|
||||||
|
pkg = require( Release.dir.repo + "/package.json" ),
|
||||||
|
// These files are included with the distrubtion
|
||||||
|
files = [
|
||||||
|
"src",
|
||||||
|
"LICENSE.txt",
|
||||||
|
"AUTHORS.txt",
|
||||||
|
"package.json"
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clone the distribution repo
|
||||||
|
*/
|
||||||
|
function clone() {
|
||||||
|
var distRemote = Release.remote.replace( "jquery", "jquery-dist" );
|
||||||
|
|
||||||
|
Release.chdir( Release.dir.base );
|
||||||
|
Release.dir.dist = Release.dir.base + "/dist";
|
||||||
|
|
||||||
|
console.log( "Using distribution repo: ", distRemote );
|
||||||
|
Release.exec( "git clone " + distRemote + " " + Release.dir.dist,
|
||||||
|
"Error cloning repo." );
|
||||||
|
|
||||||
|
// Distribution always works on master
|
||||||
|
Release.chdir( Release.dir.dist );
|
||||||
|
Release.exec( "git checkout master", "Error checking out branch." );
|
||||||
|
console.log();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate bower file for jquery-dist
|
||||||
|
*/
|
||||||
|
function generateBower() {
|
||||||
|
return JSON.stringify({
|
||||||
|
name: pkg.name,
|
||||||
|
version: pkg.version,
|
||||||
|
main: pkg.main,
|
||||||
|
license: "MIT",
|
||||||
|
ignore: [
|
||||||
|
"package.json"
|
||||||
|
],
|
||||||
|
keywords: pkg.keywords
|
||||||
|
}, null, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy necessary files over to the dist repo
|
||||||
|
*/
|
||||||
|
function copy() {
|
||||||
|
|
||||||
|
// Copy dist files
|
||||||
|
var distFolder = Release.dir.dist + "/dist";
|
||||||
|
shell.mkdir( "-p", distFolder );
|
||||||
|
[
|
||||||
|
"dist/jquery.js",
|
||||||
|
"dist/jquery.min.js",
|
||||||
|
"dist/jquery.min.map"
|
||||||
|
].forEach(function( file ) {
|
||||||
|
shell.cp( Release.dir.repo + "/" + file, distFolder );
|
||||||
|
});
|
||||||
|
|
||||||
|
// Copy other files
|
||||||
|
files.forEach(function( file ) {
|
||||||
|
shell.cp( "-r", Release.dir.repo + "/" + file, Release.dir.dist );
|
||||||
|
});
|
||||||
|
|
||||||
|
// Write generated bower file
|
||||||
|
fs.writeFileSync( Release.dir.dist + "/bower.json", generateBower() );
|
||||||
|
|
||||||
|
console.log( "Adding files to dist..." );
|
||||||
|
Release.exec( "git add .", "Error adding files." );
|
||||||
|
Release.exec(
|
||||||
|
"git commit -m 'Release " + Release.newVersion + "'",
|
||||||
|
"Error commiting files."
|
||||||
|
);
|
||||||
|
console.log();
|
||||||
|
|
||||||
|
console.log( "Tagging release on dist..." );
|
||||||
|
Release.exec( "git tag " + Release.newVersion,
|
||||||
|
"Error tagging " + Release.newVersion + " on dist repo." );
|
||||||
|
Release.tagTime = Release.exec( "git log -1 --format='%ad'",
|
||||||
|
"Error getting tag timestamp." ).trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Push files to dist repo
|
||||||
|
*/
|
||||||
|
function push() {
|
||||||
|
Release.chdir( Release.dir.dist );
|
||||||
|
|
||||||
|
console.log( "Pushing release to dist repo..." );
|
||||||
|
Release.exec( "git push origin master --tags",
|
||||||
|
"Error pushing master and tags to git repo." );
|
||||||
|
|
||||||
|
// Set repo for npm publish
|
||||||
|
Release.dir.origRepo = Release.dir.repo;
|
||||||
|
Release.dir.repo = Release.dir.dist;
|
||||||
|
}
|
||||||
|
|
||||||
|
Release.walk([
|
||||||
|
Release._section( "Copy files to distribution repo" ),
|
||||||
|
clone,
|
||||||
|
copy,
|
||||||
|
Release.confirmReview,
|
||||||
|
|
||||||
|
Release._section( "Pushing files to distribution repo" ),
|
||||||
|
push
|
||||||
|
], complete);
|
||||||
|
};
|
@ -1,10 +1,8 @@
|
|||||||
var fs = require( "fs" ),
|
var fs = require( "fs" ),
|
||||||
npm = require( "npm" ),
|
npm = require( "npm" ),
|
||||||
sizzleLoc = __dirname + "/../external/sizzle/dist/sizzle.js",
|
sizzleLoc = __dirname + "/../../external/sizzle/dist/sizzle.js",
|
||||||
rversion = /Engine v(\d+\.\d+\.\d+(?:-[-\.\d\w]+)?)/;
|
rversion = /Engine v(\d+\.\d+\.\d+(?:-[-\.\d\w]+)?)/;
|
||||||
|
|
||||||
require( "colors" );
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve the latest tag of Sizzle from npm
|
* Retrieve the latest tag of Sizzle from npm
|
||||||
* @param {Function(string)} callback
|
* @param {Function(string)} callback
|
||||||
@ -36,6 +34,7 @@ function ensureSizzle( Release, callback ) {
|
|||||||
version = match ? match[ 1 ] : "Not Found";
|
version = match ? match[ 1 ] : "Not Found";
|
||||||
|
|
||||||
if ( version !== latest ) {
|
if ( version !== latest ) {
|
||||||
|
// colors is inherited from jquery-release
|
||||||
console.log(
|
console.log(
|
||||||
"The Sizzle version in the src folder (" + version.red +
|
"The Sizzle version in the src folder (" + version.red +
|
||||||
") is not the latest tag (" + latest.green + ")."
|
") is not the latest tag (" + latest.green + ")."
|
@ -30,7 +30,6 @@
|
|||||||
],
|
],
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"colors": "1.0.3",
|
|
||||||
"commitplease": "2.0.0",
|
"commitplease": "2.0.0",
|
||||||
"grunt": "0.4.5",
|
"grunt": "0.4.5",
|
||||||
"grunt-cli": "0.1.13",
|
"grunt-cli": "0.1.13",
|
||||||
@ -45,7 +44,6 @@
|
|||||||
"gzip-js": "0.3.2",
|
"gzip-js": "0.3.2",
|
||||||
"jsdom": "1.5.0",
|
"jsdom": "1.5.0",
|
||||||
"load-grunt-tasks": "1.0.0",
|
"load-grunt-tasks": "1.0.0",
|
||||||
"npm": "2.1.12",
|
|
||||||
"qunitjs": "1.16.0",
|
"qunitjs": "1.16.0",
|
||||||
"requirejs": "2.1.15",
|
"requirejs": "2.1.15",
|
||||||
"sinon": "1.12.2",
|
"sinon": "1.12.2",
|
||||||
|
Loading…
Reference in New Issue
Block a user