== Background and overview
Epic umbrella task for transitioning [[ https://github.com/gruntjs/grunt | Grunt JavaScript task runner ]] tasks into npm scripts in Wikimedia deployed projects.
With the decline of Grunt for many years now, it won't be feasible to use it infinitely without risking modern functionality and abilities and security (read below). The last release dates back to Jan 2023.
In a recent NPM audit **in Oct 2025, a security vulnerability** [[ https://security.snyk.io/vuln/SNYK-JS-INFLIGHT-6095116 | was identified ]], where Grunt, depends on an unmaintained version of Glob.
This task tracks the overall progress while {T246326} serves with examples.
Besides the pure technical transition challenges, we also need to ensure to update documentation and remove mentions of Grunt.
https://www.mediawiki.org/wiki/Continuous_integration/Entry_points
== Goal
Transition Grunt tasks using projects away with npm as current technology choice
== Acceptance criteria for done
[] Transition each of the projects below
[] Remove mentioning of/replace Grunt in documentation
[] Update LibUp configuration
=== Projects (Wikimedia deployed)
**MediaWiki core**
[] MediaWiki Core
**Extensions**
From prior art tasks
[x] T206069 MobileFrontend
[x] T206462 Popups
[x] T295464 ContentTranslation
[x] T266977 MediaViewer (MMV)
Newly captured in this task
[] #GrowthExperiments
[x] #mediawiki-extensions-readinglists T410437
**Skins**
[x] Skin:Vector {T242781}
[] Skin:Example
[] Skin:Timeless
[] Skin:MonoBook
[] Skin:Modern
Other projects
==== Prior art
{T246321}