在编译scss文件时,是否可以在vue 3.0中使用typescript忽略背景图像url?我正在编写一个SPA,它将作为父站点内的一个页面,所有背景图像都将来自父站点,因此在我的scss文件中,我有以下内容:
.loading {
background: transparent url(/images/loading/yellow-spinner.svg) center center no-repeat;
}
字符串
在那里的图像是在主网站,而不是在SPA服务。然而,这无法编译,因为它找不到图像。我看了一下静态资产,它说把一个@
在前面的网址,但这也没有工作,也没有改变它为~@
。
如果我将图像复制到SPA中并在SCSS中使用相对路径,则会起作用,但这会将图像复制到img
文件夹中并更改编译的CSS中的URL,我不希望这样做,因为它复制了可能已缓存的资源,如果用户访问了父站点。
我还尝试使用以下命令更改文件加载器的目录以匹配父站点:
configureWebpack: {
module: {
rules: [
{
test: /\.(png|jpg|gif|svg)$/,
use: [
{
loader: 'file-loader',
options: {
outputPath: 'images/',
publicPath: 'images/',
name: '[path][name].[ext]',
},
}
]
},
]
},
}
型
但是,当我添加这个,我得到以下错误(这也是错误,当我尝试使用@
和~
):
Syntax Error: HookWebpackError: Cannot find module '../../Images/Loading/red-spinner.svg'
型
请注意,我已经添加了svg typescript shim,它在没有添加配置的情况下消除了相对路径的模块错误
使用webpack,我们只是使用复制webpack插件复制图像,当scss编译时,它似乎忽略了url-vue插件没有这个选项吗?我也尝试使用复制插件,它工作正常,但它仍然使用文件加载器编译图像
1条答案
按热度按时间6ioyuze21#
因此,要忽略scss文件中的URL,您需要在vue.config中添加以下选项:
字符串