var oldTags = [];
var newTags = [];
var applyHandler = function (options) {
return {
dispose: function () {
for (var i = 0; i < oldTags.length; i++) {
var oldTag = oldTags[i];
if (oldTag.parentNode) oldTag.parentNode.removeChild(oldTag);
}
oldTags.length = 0;
},
apply: function () {
for (var i = 0; i < newTags.length; i++) newTags[i].rel = "stylesheet";
newTags.length = 0;
}
}
}
<%- HMR_DOWNLOAD_UPDATE_HANDLERS %>.miniCss = function (chunkIds, removedChunks, removedModules, promises, applyHandlers, updatedModulesList) {
applyHandlers.push(applyHandler);
chunkIds.forEach(function (chunkId) {
var href = <%- REQUIRE %>.miniCssF(chunkId);
var fullhref = <%- PUBLIC_PATH %> + href;
var oldTag = findStylesheet(href, fullhref);
if (!oldTag) return;
promises.push(new Promise(function (resolve, reject) {
var tag = createStylesheet(
chunkId,
/**
If dynamically add link tag through dom API and there is already a loaded style link, browsers sometimes treats the new link tag as the same link, and won't fetch the new style.
Use query to avoid browser cache the link tag, force to re-fetch new style, this is the same strategy as updateCss API, this can happen during lazy compilation
*/
`${fullhref}?${Date.now()}`,
oldTag,
function () {
tag.as = "style";
tag.rel = "preload";
resolve();
},
reject
);
oldTags.push(oldTag);
newTags.push(tag);
}))
});
}