mirror of
https://github.com/jquery/jquery.git
synced 2024-12-09 08:04:24 +00:00
763ade6dda
Summary of the changes:
* expand `node_smoke_tests` to test the full & slim builds
* run `compare_size` on all built minified files; don't run it anymore on
unminified files where they don't provide lots of value
The main goal of this change is to make it easier to compare sizes of both the
full & slim builds between the `3.x-stable` & `main` branches.
Closes gh-5291
Ref gh-5255
(partially cherry-picked from commit 8be4c0e4f8
)
72 lines
1.9 KiB
JavaScript
72 lines
1.9 KiB
JavaScript
"use strict";
|
|
|
|
module.exports = function( grunt ) {
|
|
const fs = require( "fs" );
|
|
const filename = grunt.option( "filename" );
|
|
const distPaths = [
|
|
`dist/${ filename }`,
|
|
`dist/${ filename.replace( ".js", ".min.js" ) }`,
|
|
`dist/${ filename.replace( ".js", ".min.map" ) }`
|
|
];
|
|
|
|
// Process files for distribution
|
|
grunt.registerTask( "dist", function() {
|
|
let stored, flags, paths, nonascii;
|
|
|
|
// Check for stored destination paths
|
|
// ( set in dist/.destination.json )
|
|
stored = Object.keys( grunt.config( "dst" ) );
|
|
|
|
// Allow command line input as well
|
|
flags = Object.keys( this.flags );
|
|
|
|
// Combine all output target paths
|
|
paths = [].concat( stored, flags ).filter( function( path ) {
|
|
return path !== "*";
|
|
} );
|
|
|
|
// Ensure the dist files are pure ASCII
|
|
nonascii = false;
|
|
|
|
distPaths.forEach( function( filename ) {
|
|
let i, c;
|
|
const text = fs.readFileSync( filename, "utf8" );
|
|
|
|
// Ensure files use only \n for line endings, not \r\n
|
|
if ( /\x0d\x0a/.test( text ) ) {
|
|
grunt.log.writeln( filename + ": Incorrect line endings (\\r\\n)" );
|
|
nonascii = true;
|
|
}
|
|
|
|
// Ensure only ASCII chars so script tags don't need a charset attribute
|
|
if ( text.length !== Buffer.byteLength( text, "utf8" ) ) {
|
|
grunt.log.writeln( filename + ": Non-ASCII characters detected:" );
|
|
for ( i = 0; i < text.length; i++ ) {
|
|
c = text.charCodeAt( i );
|
|
if ( c > 127 ) {
|
|
grunt.log.writeln( "- position " + i + ": " + c );
|
|
grunt.log.writeln( "-- " + text.substring( i - 20, i + 20 ) );
|
|
break;
|
|
}
|
|
}
|
|
nonascii = true;
|
|
}
|
|
|
|
// Optionally copy dist files to other locations
|
|
paths.forEach( function( path ) {
|
|
let created;
|
|
|
|
if ( !/\/$/.test( path ) ) {
|
|
path += "/";
|
|
}
|
|
|
|
created = path + filename.replace( "dist/", "" );
|
|
grunt.file.write( created, text );
|
|
grunt.log.writeln( "File '" + created + "' created." );
|
|
} );
|
|
} );
|
|
|
|
return !nonascii;
|
|
} );
|
|
};
|