@@ -58,7 +58,7 @@ export function compile(
58
58
) {
59
59
const filename = descriptor . filename
60
60
const result = compileTemplate ( {
61
- ...getTemplateCompilerOptions ( descriptor , options ) ! ,
61
+ ...resolveTemplateCompilerOptions ( descriptor , options ) ! ,
62
62
source : code
63
63
} )
64
64
@@ -84,7 +84,7 @@ export function compile(
84
84
return result
85
85
}
86
86
87
- export function getTemplateCompilerOptions (
87
+ export function resolveTemplateCompilerOptions (
88
88
descriptor : SFCDescriptor ,
89
89
options : ResolvedOptions
90
90
) : Omit < SFCTemplateCompileOptions , 'source' > | undefined {
@@ -97,26 +97,40 @@ export function getTemplateCompilerOptions(
97
97
const { id, filename, cssVars } = descriptor
98
98
99
99
let transformAssetUrls = options . template ?. transformAssetUrls
100
- // inject vite base so that @vue /compiler-sfc can transform relative paths
101
- // directly to absolute paths without incurring an extra import request
102
- if ( filename . startsWith ( options . root ) ) {
103
- // TODO account for vite base config
104
- const base =
105
- '/' + slash ( path . relative ( options . root , path . dirname ( filename ) ) )
106
- if ( transformAssetUrls && typeof transformAssetUrls === 'object' ) {
107
- // presence of array fields means this is raw tags config
108
- if (
109
- Object . keys ( transformAssetUrls ) . some ( ( key ) =>
110
- Array . isArray ( ( transformAssetUrls as any ) [ key ] )
111
- )
112
- ) {
113
- transformAssetUrls = { base, tags : transformAssetUrls } as any
114
- } else {
115
- transformAssetUrls = { ...transformAssetUrls , base }
100
+ let assetUrlOptions
101
+ if ( options . devServer ) {
102
+ // during dev, inject vite base so that @vue/compiler-sfc can transform
103
+ // relative paths directly to absolute paths without incurring an extra import
104
+ // request
105
+ if ( filename . startsWith ( options . root ) ) {
106
+ assetUrlOptions = {
107
+ base : '/' + slash ( path . relative ( options . root , path . dirname ( filename ) ) )
108
+ }
109
+ }
110
+ } else {
111
+ // build: force all asset urls into import requests so that they go through
112
+ // the assets plugin for asset registration
113
+ assetUrlOptions = {
114
+ includeAbsolute : true
115
+ }
116
+ }
117
+
118
+ if ( transformAssetUrls && typeof transformAssetUrls === 'object' ) {
119
+ // presence of array fields means this is raw tags config
120
+ if (
121
+ Object . keys ( transformAssetUrls ) . some ( ( key ) =>
122
+ Array . isArray ( ( transformAssetUrls as any ) [ key ] )
123
+ )
124
+ ) {
125
+ transformAssetUrls = {
126
+ ...assetUrlOptions ,
127
+ tags : transformAssetUrls as any
116
128
}
117
129
} else {
118
- transformAssetUrls = { base }
130
+ transformAssetUrls = { ... transformAssetUrls , ... assetUrlOptions }
119
131
}
132
+ } else {
133
+ transformAssetUrls = assetUrlOptions
120
134
}
121
135
122
136
return {
0 commit comments