diff --git a/src/node/build/buildPluginHtml.ts b/src/node/build/buildPluginHtml.ts index e67f27cc866975..bc064b1321238c 100644 --- a/src/node/build/buildPluginHtml.ts +++ b/src/node/build/buildPluginHtml.ts @@ -1,7 +1,7 @@ import { Plugin, RollupOutput, OutputChunk } from 'rollup' import path from 'path' import fs from 'fs-extra' -import { isExternalUrl, cleanUrl } from '../utils/pathUtils' +import { isExternalUrl, cleanUrl, isDataUrl } from '../utils/pathUtils' import { resolveAsset, registerAssets } from './buildPluginAsset' import { parse as Parse, @@ -189,7 +189,8 @@ const compileHtml = async ( p.type === NodeTypes.ATTRIBUTE && p.value && assetAttrs.includes(p.name) && - !isExternalUrl(p.value.content) + !isExternalUrl(p.value.content) && + !isDataUrl(p.value.content) ) { assetUrls.push(p) } diff --git a/src/node/utils/pathUtils.ts b/src/node/utils/pathUtils.ts index 92f91284a6acab..c705ec5f1f7dc4 100644 --- a/src/node/utils/pathUtils.ts +++ b/src/node/utils/pathUtils.ts @@ -45,6 +45,9 @@ export const parseWithQuery = ( const externalRE = /^(https?:)?\/\// export const isExternalUrl = (url: string) => externalRE.test(url) +const dataUrlRE = /^\s*data:/i +export const isDataUrl = (url: string) => dataUrlRE.test(url) + const imageRE = /\.(png|jpe?g|gif|svg|ico|webp)(\?.*)?$/ const mediaRE = /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/ const fontsRE = /\.(woff2?|eot|ttf|otf)(\?.*)?$/i