mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
Build: Test on Node 10, 16 & 18; fix CI in Node <16
Ref gh-2157
This commit is contained in:
parent
f36fe9e50d
commit
afb83c315d
3
.github/workflows/test.yml
vendored
3
.github/workflows/test.yml
vendored
@ -12,7 +12,8 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
node-version: [12.x, 14.x]
|
# Node.js 10 is required by jQuery infra
|
||||||
|
node-version: [10.x, 16.x, 18.x]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
204
Gruntfile.js
204
Gruntfile.js
@ -2,92 +2,98 @@
|
|||||||
|
|
||||||
module.exports = function( grunt ) {
|
module.exports = function( grunt ) {
|
||||||
|
|
||||||
var
|
// files
|
||||||
glob = require( "glob" ),
|
const coreFiles = [
|
||||||
|
"core.js",
|
||||||
|
"widget.js",
|
||||||
|
"widgets/mouse.js",
|
||||||
|
"widgets/draggable.js",
|
||||||
|
"widgets/droppable.js",
|
||||||
|
"widgets/resizable.js",
|
||||||
|
"widgets/selectable.js",
|
||||||
|
"widgets/sortable.js",
|
||||||
|
"effect.js"
|
||||||
|
];
|
||||||
|
|
||||||
// files
|
const uiFiles = coreFiles.map( function( file ) {
|
||||||
coreFiles = [
|
return "ui/" + file;
|
||||||
"core.js",
|
} ).concat( expandFiles( "ui/**/*.js" ).filter( function( file ) {
|
||||||
"widget.js",
|
return coreFiles.indexOf( file.substring( 3 ) ) === -1;
|
||||||
"widgets/mouse.js",
|
} ) );
|
||||||
"widgets/draggable.js",
|
|
||||||
"widgets/droppable.js",
|
|
||||||
"widgets/resizable.js",
|
|
||||||
"widgets/selectable.js",
|
|
||||||
"widgets/sortable.js",
|
|
||||||
"effect.js"
|
|
||||||
],
|
|
||||||
|
|
||||||
uiFiles = coreFiles.map( function( file ) {
|
const allI18nFiles = expandFiles( "ui/i18n/*.js" );
|
||||||
return "ui/" + file;
|
|
||||||
} ).concat( expandFiles( "ui/**/*.js" ).filter( function( file ) {
|
|
||||||
return coreFiles.indexOf( file.substring( 3 ) ) === -1;
|
|
||||||
} ) ),
|
|
||||||
|
|
||||||
allI18nFiles = expandFiles( "ui/i18n/*.js" ),
|
const cssFiles = [
|
||||||
|
"core",
|
||||||
|
"accordion",
|
||||||
|
"autocomplete",
|
||||||
|
"button",
|
||||||
|
"checkboxradio",
|
||||||
|
"controlgroup",
|
||||||
|
"datepicker",
|
||||||
|
"dialog",
|
||||||
|
"draggable",
|
||||||
|
"menu",
|
||||||
|
"progressbar",
|
||||||
|
"resizable",
|
||||||
|
"selectable",
|
||||||
|
"selectmenu",
|
||||||
|
"sortable",
|
||||||
|
"slider",
|
||||||
|
"spinner",
|
||||||
|
"tabs",
|
||||||
|
"tooltip",
|
||||||
|
"theme"
|
||||||
|
].map( function( component ) {
|
||||||
|
return "themes/base/" + component + ".css";
|
||||||
|
} );
|
||||||
|
|
||||||
cssFiles = [
|
// minified files
|
||||||
"core",
|
const minify = {
|
||||||
"accordion",
|
options: {
|
||||||
"autocomplete",
|
preserveComments: false
|
||||||
"button",
|
},
|
||||||
"checkboxradio",
|
main: {
|
||||||
"controlgroup",
|
|
||||||
"datepicker",
|
|
||||||
"dialog",
|
|
||||||
"draggable",
|
|
||||||
"menu",
|
|
||||||
"progressbar",
|
|
||||||
"resizable",
|
|
||||||
"selectable",
|
|
||||||
"selectmenu",
|
|
||||||
"sortable",
|
|
||||||
"slider",
|
|
||||||
"spinner",
|
|
||||||
"tabs",
|
|
||||||
"tooltip",
|
|
||||||
"theme"
|
|
||||||
].map( function( component ) {
|
|
||||||
return "themes/base/" + component + ".css";
|
|
||||||
} ),
|
|
||||||
|
|
||||||
// minified files
|
|
||||||
minify = {
|
|
||||||
options: {
|
options: {
|
||||||
preserveComments: false
|
banner: createBanner( uiFiles )
|
||||||
},
|
},
|
||||||
main: {
|
files: {
|
||||||
options: {
|
"dist/jquery-ui.min.js": "dist/jquery-ui.js"
|
||||||
banner: createBanner( uiFiles )
|
|
||||||
},
|
|
||||||
files: {
|
|
||||||
"dist/jquery-ui.min.js": "dist/jquery-ui.js"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
i18n: {
|
|
||||||
options: {
|
|
||||||
banner: createBanner( allI18nFiles )
|
|
||||||
},
|
|
||||||
files: {
|
|
||||||
"dist/i18n/jquery-ui-i18n.min.js": "dist/i18n/jquery-ui-i18n.js"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
i18n: {
|
||||||
|
options: {
|
||||||
|
banner: createBanner( allI18nFiles )
|
||||||
|
},
|
||||||
|
files: {
|
||||||
|
"dist/i18n/jquery-ui-i18n.min.js": "dist/i18n/jquery-ui-i18n.js"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
compareFiles = {
|
const compareFiles = {
|
||||||
all: [
|
all: [
|
||||||
"dist/jquery-ui.js",
|
"dist/jquery-ui.js",
|
||||||
"dist/jquery-ui.min.js"
|
"dist/jquery-ui.min.js"
|
||||||
]
|
]
|
||||||
},
|
};
|
||||||
component = grunt.option( "component" ) || "**",
|
const component = grunt.option( "component" ) || "**";
|
||||||
|
|
||||||
htmllintBad = [
|
const htmllintBad = [
|
||||||
"demos/tabs/ajax/content*.html",
|
"demos/tabs/ajax/content*.html",
|
||||||
"demos/tooltip/ajax/content*.html",
|
"demos/tooltip/ajax/content*.html",
|
||||||
"tests/unit/core/core.html",
|
"tests/unit/core/core.html",
|
||||||
"tests/unit/tabs/data/test.html"
|
"tests/unit/tabs/data/test.html"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const nodeV16OrNewer = !/^v1[0-5]\./.test( process.version );
|
||||||
|
|
||||||
|
// Support: Node.js <16
|
||||||
|
// Skip running tasks that dropped support for Node.js 10-15
|
||||||
|
// in this Node version.
|
||||||
|
function runIfNewNode( task ) {
|
||||||
|
return nodeV16OrNewer ? task : "print_old_node_message:" + task;
|
||||||
|
}
|
||||||
|
|
||||||
function mapMinFile( file ) {
|
function mapMinFile( file ) {
|
||||||
return "dist/" + file.replace( /ui\//, "minified/" );
|
return "dist/" + file.replace( /ui\//, "minified/" );
|
||||||
@ -115,12 +121,6 @@ uiFiles.forEach( function( file ) {
|
|||||||
compareFiles[ file ] = [ file, mapMinFile( file ) ];
|
compareFiles[ file ] = [ file, mapMinFile( file ) ];
|
||||||
} );
|
} );
|
||||||
|
|
||||||
// grunt plugins
|
|
||||||
require( "load-grunt-tasks" )( grunt );
|
|
||||||
|
|
||||||
// local testswarm and build tasks
|
|
||||||
grunt.loadTasks( "build/tasks" );
|
|
||||||
|
|
||||||
function stripDirectory( file ) {
|
function stripDirectory( file ) {
|
||||||
return file.replace( /.+\/(.+?)>?$/, "$1" );
|
return file.replace( /.+\/(.+?)>?$/, "$1" );
|
||||||
}
|
}
|
||||||
@ -128,7 +128,7 @@ function stripDirectory( file ) {
|
|||||||
function createBanner( files ) {
|
function createBanner( files ) {
|
||||||
|
|
||||||
// strip folders
|
// strip folders
|
||||||
var fileNames = files && files.map( stripDirectory );
|
const fileNames = files && files.map( stripDirectory );
|
||||||
return "/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - " +
|
return "/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - " +
|
||||||
"<%= grunt.template.today('isoDate') %>\n" +
|
"<%= grunt.template.today('isoDate') %>\n" +
|
||||||
"<%= pkg.homepage ? '* ' + pkg.homepage + '\\n' : '' %>" +
|
"<%= pkg.homepage ? '* ' + pkg.homepage + '\\n' : '' %>" +
|
||||||
@ -184,9 +184,10 @@ grunt.initConfig( {
|
|||||||
ignore: [
|
ignore: [
|
||||||
/The text content of element “script” was not in the required format: Expected space, tab, newline, or slash but found “.” instead/
|
/The text content of element “script” was not in the required format: Expected space, tab, newline, or slash but found “.” instead/
|
||||||
] },
|
] },
|
||||||
src: glob.sync( "{demos,tests}/**/*.html", {
|
src: [
|
||||||
ignore: htmllintBad
|
"{demos,tests}/**/*.html",
|
||||||
} )
|
...htmllintBad.map( pattern => `!${ pattern }` )
|
||||||
|
]
|
||||||
},
|
},
|
||||||
bad: {
|
bad: {
|
||||||
options: {
|
options: {
|
||||||
@ -469,9 +470,22 @@ grunt.initConfig( {
|
|||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
// grunt plugins
|
||||||
|
require( "load-grunt-tasks" )( grunt, {
|
||||||
|
pattern: nodeV16OrNewer ? [ "grunt-*" ] : [
|
||||||
|
"grunt-*",
|
||||||
|
"!grunt-contrib-qunit",
|
||||||
|
"!grunt-eslint",
|
||||||
|
"!grunt-html"
|
||||||
|
]
|
||||||
|
} );
|
||||||
|
|
||||||
|
// local testswarm and build tasks
|
||||||
|
grunt.loadTasks( "build/tasks" );
|
||||||
|
|
||||||
grunt.registerTask( "update-authors", function() {
|
grunt.registerTask( "update-authors", function() {
|
||||||
var getAuthors = require( "grunt-git-authors" ).getAuthors,
|
const getAuthors = require( "grunt-git-authors" ).getAuthors;
|
||||||
done = this.async();
|
const done = this.async();
|
||||||
|
|
||||||
getAuthors( {
|
getAuthors( {
|
||||||
priorAuthors: grunt.config( "authors.prior" )
|
priorAuthors: grunt.config( "authors.prior" )
|
||||||
@ -499,11 +513,21 @@ grunt.registerTask( "update-authors", function() {
|
|||||||
} );
|
} );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
grunt.registerTask( "print_old_node_message", ( ...args ) => {
|
||||||
|
const task = args.join( ":" );
|
||||||
|
grunt.log.writeln( "Old Node.js detected, running the task \"" + task + "\" skipped..." );
|
||||||
|
} );
|
||||||
|
|
||||||
// Keep this task list in sync with the testing steps in our GitHub action test workflow file!
|
// Keep this task list in sync with the testing steps in our GitHub action test workflow file!
|
||||||
grunt.registerTask( "default", [ "lint", "requirejs", "test" ] );
|
grunt.registerTask( "default", [ "lint", "requirejs", "test" ] );
|
||||||
grunt.registerTask( "jenkins", [ "default", "concat" ] );
|
grunt.registerTask( "jenkins", [ "default", "concat" ] );
|
||||||
grunt.registerTask( "lint", [ "asciilint", "eslint", "csslint", "htmllint" ] );
|
grunt.registerTask( "lint", [
|
||||||
grunt.registerTask( "test", [ "qunit" ] );
|
"asciilint",
|
||||||
|
runIfNewNode( "eslint" ),
|
||||||
|
"csslint",
|
||||||
|
runIfNewNode( "htmllint" )
|
||||||
|
] );
|
||||||
|
grunt.registerTask( "test", [ runIfNewNode( "qunit" ) ] );
|
||||||
grunt.registerTask( "sizer", [ "requirejs:js", "uglify:main", "compare_size:all" ] );
|
grunt.registerTask( "sizer", [ "requirejs:js", "uglify:main", "compare_size:all" ] );
|
||||||
grunt.registerTask( "sizer_all", [ "requirejs:js", "uglify", "compare_size" ] );
|
grunt.registerTask( "sizer_all", [ "requirejs:js", "uglify", "compare_size" ] );
|
||||||
|
|
||||||
|
@ -53,7 +53,6 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"commitplease": "3.2.0",
|
"commitplease": "3.2.0",
|
||||||
"eslint-config-jquery": "3.0.0",
|
"eslint-config-jquery": "3.0.0",
|
||||||
"glob": "7.2.0",
|
|
||||||
"grunt": "1.5.3",
|
"grunt": "1.5.3",
|
||||||
"grunt-bowercopy": "1.2.5",
|
"grunt-bowercopy": "1.2.5",
|
||||||
"grunt-cli": "1.4.3",
|
"grunt-cli": "1.4.3",
|
||||||
|
Loading…
Reference in New Issue
Block a user