}"
`;
-exports[`compiler sfc: transform asset url > with preserveTilde: true 1`] = `
+exports[`compiler sfc: transform asset url > with preserveLeadingTilde: true 1`] = `
"import { createElementVNode as _createElementVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from "vue"
import _imports_0 from '~/app/bar.png'
import _imports_1 from '~app/bar.png'
}"
`;
-exports[`compiler sfc: transform srcset > srcset w/ preserveTilde: true 1`] = `
+exports[`compiler sfc: transform srcset > srcset w/ preserveLeadingTilde: true 1`] = `
"import { createElementVNode as _createElementVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from "vue"
import _imports_0 from '~/app/logo.png'
import _imports_1 from '~app/logo.png'
expect(code).toMatchSnapshot()
})
- test('with preserveTilde: true', () => {
+ test('with preserveLeadingTilde: true', () => {
const { code } = compileWithAssetUrls(
`<img src="~/app/bar.png"/>` + `<img src="~app/bar.png"/>`,
{
- preserveTilde: true,
+ preserveLeadingTilde: true,
},
)
expect(code).toMatchSnapshot()
expect(code).toMatchSnapshot()
})
- test('srcset w/ preserveTilde: true', () => {
+ test('srcset w/ preserveLeadingTilde: true', () => {
const code = compileWithSrcset(
`
<img srcset="~/app/logo.png, ~app/logo.png 2x"/>
<img srcset="~app/logo.png 1x, ~/app/logo.png 2x"/>
`,
- { preserveTilde: true },
+ { preserveLeadingTilde: true },
).code
expect(code).toMatchSnapshot()
})
*/
export function parseUrl(
url: string,
- preserveTilde?: boolean,
+ preserveLeadingTilde?: boolean,
): UrlWithStringQuery {
const firstChar = url.charAt(0)
- if (firstChar === '~' && !preserveTilde) {
+ if (firstChar === '~' && !preserveLeadingTilde) {
const secondChar = url.charAt(1)
url = url.slice(secondChar === '/' ? 2 : 1)
}
* Nuxt uses ~ as alias for the /app directory.
* see #13460
*/
- preserveTilde?: boolean
+ preserveLeadingTilde?: boolean
}
export const defaultAssetUrlOptions: Required<AssetURLOptions> = {
base: null,
includeAbsolute: false,
- preserveTilde: false,
+ preserveLeadingTilde: false,
tags: {
video: ['src', 'poster'],
source: ['src'],
return
}
- const url = parseUrl(attr.value.content, options.preserveTilde)
+ const url = parseUrl(attr.value.content, options.preserveLeadingTilde)
if (options.base && attr.value.content[0] === '.') {
// explicit base - directly rewrite relative urls into absolute url
// to avoid generating extra imports
// Allow for full hostnames provided in options.base
- const base = parseUrl(options.base, options.preserveTilde)
+ const base = parseUrl(options.base, options.preserveLeadingTilde)
const protocol = base.protocol || ''
const host = base.host ? protocol + '//' + base.host : ''
const basePath = base.path || '/'
const compoundExpression = createCompoundExpression([], attr.loc)
imageCandidates.forEach(({ url, descriptor }, index) => {
if (shouldProcessUrl(url)) {
- const { path } = parseUrl(url, options.preserveTilde)
+ const { path } = parseUrl(url, options.preserveLeadingTilde)
let exp: SimpleExpressionNode
if (path) {
const existingImportsIndex = context.imports.findIndex(