Bläddra i källkod

fix(compiler-sfc): should not transform external asset url with
includeAbsolute: true

Evan You 6 år sedan
förälder
incheckning
d66211849c

+ 2 - 1
packages/compiler-sfc/__tests__/__snapshots__/templateTransformAssetUrl.spec.ts.snap

@@ -59,7 +59,8 @@ import _imports_1 from '/bar.png'
 export function render(_ctx, _cache) {
   return (_openBlock(), _createBlock(_Fragment, null, [
     _createVNode(\\"img\\", { src: _imports_0 }),
-    _createVNode(\\"img\\", { src: _imports_1 })
+    _createVNode(\\"img\\", { src: _imports_1 }),
+    _createVNode(\\"img\\", { src: \\"https://foo.bar/baz.png\\" })
   ], 64 /* STABLE_FRAGMENT */))
 }"
 `;

+ 3 - 1
packages/compiler-sfc/__tests__/templateTransformAssetUrl.spec.ts

@@ -70,7 +70,9 @@ describe('compiler sfc: transform asset url', () => {
 
   test('with includeAbsolute: true', () => {
     const { code } = compileWithAssetUrls(
-      `<img src="./bar.png"></img>` + `<img src="/bar.png"></img>`,
+      `<img src="./bar.png"/>` +
+        `<img src="/bar.png"/>` +
+        `<img src="https://foo.bar/baz.png"/>`,
       {
         includeAbsolute: true
       }

+ 2 - 1
packages/compiler-sfc/src/templateTransformAssetUrl.ts

@@ -7,7 +7,7 @@ import {
   SourceLocation,
   TransformContext
 } from '@vue/compiler-core'
-import { isRelativeUrl, parseUrl } from './templateUtils'
+import { isRelativeUrl, parseUrl, isExternalUrl } from './templateUtils'
 import { isArray } from '@vue/shared'
 
 export interface AssetURLTagConfig {
@@ -98,6 +98,7 @@ export const transformAssetUrl: NodeTransform = (
         attr.type !== NodeTypes.ATTRIBUTE ||
         !assetAttrs.includes(attr.name) ||
         !attr.value ||
+        isExternalUrl(attr.value.content) ||
         (!options.includeAbsolute && !isRelativeUrl(attr.value.content))
       ) {
         return