From cf7102c3f1bcbd135f24947a3a3216cff272bdc2 Mon Sep 17 00:00:00 2001 From: Timmy Willison Date: Thu, 12 Nov 2015 13:18:59 -0500 Subject: [PATCH] Release: push a custom slim build to the CDN Fixes gh-2653 Close gh-2711 --- Gruntfile.js | 10 ++++++++-- build/release.js | 16 ++++++++++++++-- build/release/cdn.js | 19 ++++++++++--------- build/release/dist.js | 21 ++++++++++----------- build/tasks/build.js | 8 ++++++-- build/tasks/dist.js | 9 +++++---- build/tasks/sourcemap.js | 3 ++- 7 files changed, 55 insertions(+), 31 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index dd4b07d30..626531b29 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -31,6 +31,10 @@ module.exports = function( grunt ) { // But our modules can delete srcHintOptions.onevar; + if ( !grunt.option( "filename" ) ) { + grunt.option( "filename", "jquery.js" ); + } + grunt.initConfig( { pkg: grunt.file.readJSON( "package.json" ), dst: readOptionalJSON( "dist/.destination.json" ), @@ -173,12 +177,14 @@ module.exports = function( grunt ) { uglify: { all: { files: { - "dist/jquery.min.js": [ "dist/jquery.js" ] + "dist/<%= grunt.option('filename').replace('.js', '.min.js') %>": + "dist/<%= grunt.option('filename') %>" }, options: { preserveComments: false, sourceMap: true, - sourceMapName: "dist/jquery.min.map", + sourceMapName: + "dist/<%= grunt.option('filename').replace('.js', '.min.map') %>", report: "min", beautify: { "ascii_only": true diff --git a/build/release.js b/build/release.js index 5feddfa24..a333d05b4 100644 --- a/build/release.js +++ b/build/release.js @@ -2,7 +2,14 @@ module.exports = function( Release ) { var - files = [ "dist/jquery.js", "dist/jquery.min.js", "dist/jquery.min.map" ], + files = [ + "dist/jquery.js", + "dist/jquery.min.js", + "dist/jquery.min.map", + "dist/jquery.slim.js", + "dist/jquery.slim.min.js", + "dist/jquery.slim.min.map" + ], cdn = require( "./release/cdn" ), dist = require( "./release/dist" ), ensureSizzle = require( "./release/ensure-sizzle" ), @@ -27,6 +34,11 @@ module.exports = function( Release ) { */ generateArtifacts: function( callback ) { Release.exec( "grunt", "Grunt command failed" ); + Release.exec( + "grunt custom:-ajax,-effects,-deprecated --filename=jquery.slim.js && " + + "grunt remove_map_comment --filename=jquery.slim.js", + "Grunt custom failed" + ); cdn.makeReleaseCopies( Release ); callback( files ); }, @@ -47,7 +59,7 @@ module.exports = function( Release ) { */ dist: function( callback ) { cdn.makeArchives( Release, function() { - dist( Release, callback ); + dist( Release, files, callback ); } ); } } ); diff --git a/build/release/cdn.js b/build/release/cdn.js index 07285a56d..3b485112e 100644 --- a/build/release/cdn.js +++ b/build/release/cdn.js @@ -5,22 +5,23 @@ var 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 + "jquery-VER.js": "dist/jquery.js", + "jquery-VER.min.js": "dist/jquery.min.js", + "jquery-VER.min.map": "dist/jquery.min.map", + "jquery-VER.slim.js": "dist/jquery.slim.js", + "jquery-VER.slim.min.js": "dist/jquery.slim.min.js", + "jquery-VER.slim.min.map": "dist/jquery.slim.min.map" }, googleFilesCDN = [ - "jquery.js", "jquery.min.js", "jquery.min.map" + "jquery.js", "jquery.min.js", "jquery.min.map", + "jquery.slim.js", "jquery.slim.min.js", "jquery.slim.min.map" ], msFilesCDN = [ - "jquery-VER.js", "jquery-VER.min.js", "jquery-VER.min.map" + "jquery-VER.js", "jquery-VER.min.js", "jquery-VER.min.map", + "jquery-VER.slim.js", "jquery-VER.slim.min.js", "jquery-VER.slim.min.map" ]; /** diff --git a/build/release/dist.js b/build/release/dist.js index 32053eafb..514d40739 100644 --- a/build/release/dist.js +++ b/build/release/dist.js @@ -1,13 +1,16 @@ -module.exports = function( Release, complete ) { +module.exports = function( Release, files, complete ) { var fs = require( "fs" ), shell = require( "shelljs" ), pkg = require( Release.dir.repo + "/package.json" ), - distRemote = Release.remote.replace( "jquery.git", "jquery-dist.git" ), + distRemote = Release.remote + + // For local and github dists + .replace( /jquery(\.git|$)/, "jquery-dist$1" ), // These files are included with the distribution - files = [ + extras = [ "src", "LICENSE.txt", "AUTHORS.txt", @@ -54,17 +57,13 @@ module.exports = function( Release, complete ) { // 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 ); + files.forEach( function( file ) { + shell.cp( "-f", Release.dir.repo + "/" + file, distFolder ); } ); // Copy other files - files.forEach( function( file ) { - shell.cp( "-r", Release.dir.repo + "/" + file, Release.dir.dist ); + extras.forEach( function( file ) { + shell.cp( "-rf", Release.dir.repo + "/" + file, Release.dir.dist ); } ); // Write generated bower file diff --git a/build/tasks/build.js b/build/tasks/build.js index 74fa47fde..c9f1daeb8 100644 --- a/build/tasks/build.js +++ b/build/tasks/build.js @@ -15,7 +15,6 @@ module.exports = function( grunt ) { config = { baseUrl: "src", name: "jquery", - out: "dist/jquery.js", // We have multiple minify steps optimize: "none", @@ -115,7 +114,7 @@ module.exports = function( grunt ) { done = this.async(), flags = this.flags, optIn = flags[ "*" ], - name = this.data.dest, + name = grunt.option( "filename" ), minimum = this.data.minimum, removeWith = this.data.removeWith, excluded = [], @@ -205,6 +204,11 @@ module.exports = function( grunt ) { } }; + // Filename can be passed to the command line using + // command line options + // e.g. grunt build --filename=jquery-custom.js + name = name ? ( "dist/" + name ) : this.data.dest; + // append commit id to version if ( process.env.COMMIT ) { version += " " + process.env.COMMIT; diff --git a/build/tasks/dist.js b/build/tasks/dist.js index 78ce2f254..fa6920c88 100644 --- a/build/tasks/dist.js +++ b/build/tasks/dist.js @@ -2,11 +2,12 @@ module.exports = function( grunt ) { "use strict"; - var fs = require( "fs" ), + var fs = require( "fs" ), + filename = grunt.option( "filename" ), distpaths = [ - "dist/jquery.js", - "dist/jquery.min.map", - "dist/jquery.min.js" + "dist/" + filename, + "dist/" + filename.replace( ".js", ".min.map" ), + "dist/" + filename.replace( ".js", ".min.js" ) ]; // Process files for distribution diff --git a/build/tasks/sourcemap.js b/build/tasks/sourcemap.js index 3e4144de0..3f21b2afd 100644 --- a/build/tasks/sourcemap.js +++ b/build/tasks/sourcemap.js @@ -1,8 +1,9 @@ var fs = require( "fs" ); module.exports = function( grunt ) { - var minLoc = Object.keys( grunt.config( "uglify.all.files" ) )[ 0 ]; + var config = grunt.config( "uglify.all.files" ); grunt.registerTask( "remove_map_comment", function() { + var minLoc = grunt.config.process( Object.keys( config )[ 0 ] ); // Remove the source map comment; it causes way too many problems. // The map file is still generated for manual associations -- 2.39.5