diff --git a/packages/markdown/src/plugins/assetsPlugin/resolveLink.ts b/packages/markdown/src/plugins/assetsPlugin/resolveLink.ts index e42da2a9ca..c490a0df0a 100644 --- a/packages/markdown/src/plugins/assetsPlugin/resolveLink.ts +++ b/packages/markdown/src/plugins/assetsPlugin/resolveLink.ts @@ -8,6 +8,9 @@ export const resolveLink = ( env: MarkdownEnv, strict = false, ): string => { + // do not resolve data uri + if (link.startsWith('data:')) return link + // decode link to ensure bundler can find the file correctly let resolvedLink = decode(link) diff --git a/packages/markdown/tests/plugins/assetsPlugin.spec.ts b/packages/markdown/tests/plugins/assetsPlugin.spec.ts index 7626b5ef92..6c8c81f008 100644 --- a/packages/markdown/tests/plugins/assetsPlugin.spec.ts +++ b/packages/markdown/tests/plugins/assetsPlugin.spec.ts @@ -34,6 +34,8 @@ describe('@vuepress/markdown > plugins > assetsPlugin', () => { '![invalid](.../invalid.png)', '![汉字](.../汉字.png)', '![100%](.../100%.png)', + // data uri + '![data-uri](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+P+/HgAFhAJ/wr4H/wAAAABJRU5ErkJggg==)', ] const testCases: { @@ -77,6 +79,8 @@ describe('@vuepress/markdown > plugins > assetsPlugin', () => { 'invalid', '汉字', '100%', + // data uri + 'data-uri', ], }, { @@ -116,6 +120,8 @@ describe('@vuepress/markdown > plugins > assetsPlugin', () => { 'invalid', '汉字', '100%', + // data uri + 'data-uri', ], }, { @@ -152,6 +158,8 @@ describe('@vuepress/markdown > plugins > assetsPlugin', () => { 'invalid', '汉字', '100%', + // data uri + 'data-uri', ], }, ] @@ -236,6 +244,9 @@ describe('@vuepress/markdown > plugins > assetsPlugin', () => { 'attrs', // keep as is 'attrs', + + /* data uri */ + '', ] const testCases: { @@ -319,6 +330,9 @@ describe('@vuepress/markdown > plugins > assetsPlugin', () => { 'attrs', // keep as is 'attrs', + + /* data uri */ + '', ], }, { @@ -398,6 +412,9 @@ describe('@vuepress/markdown > plugins > assetsPlugin', () => { 'attrs', // keep as is 'attrs', + + /* data uri */ + '', ], }, { @@ -474,6 +491,9 @@ describe('@vuepress/markdown > plugins > assetsPlugin', () => { 'attrs', // keep as is 'attrs', + + /* data uri */ + '', ], }, ]