使用 vite 搭建的 vue3 项目,使用 vite.config.ts 中 base:"./",因为要在 nginx 下部署多个前端项目,切在打包过程中,并不知晓当前项目的路径,所以使用 相对路径,但是项目中引用了 less 文件,less 文件中的背景图片 background:url("@/assets/img/bg.png"),会在打包后边为 background-image:url("./bg.png"),路径错误,相对于 Index.html 而言应该是./assets/bg.png,应该怎么解决?(不想放在 public 中,因为后需要需要经过 vite 处理静态资源)
2条回答 默认 最新
- 一直免费一直爽 2024-08-11 20:06关注
以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
要解决这个问题,首先确保你在
<head>
标签内包含了正确的<link>
元素,用于引入Less文件。在Vite配置中,你可以通过设置base
属性来实现这一点。以下是具体的步骤:
- 在你的
vite.config.ts
文件中添加一个htmlWebpackPlugin
插件:
import HtmlWebpackPlugin from 'html-webpack-plugin'; module.exports = { plugins: [ new HtmlWebpackPlugin({ template: './index.html', filename: 'index.html', chunks: ['vendors', 'main'], }), ], };
- 确保你的
<head>
标签内有<link>
元素引用@/assets/stylesheets/index.less
作为样式表:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Vue App</title> <!-- 引入 Less 文件 --> <link rel="stylesheet" href="@/assets/stylesheets/index.less"> <!-- 其他 HTML 标签和属性 --> </head> <body> <div id="app"></div> <script src="/js/main.js"></script> </body> </html>
现在,你应该能够在
<head>
标签内的<link>
元素引用到@/assets/stylesheets/index.less
。这样,当Vite处理静态资源时,它会自动将background-image
属性替换为你希望的目标路径。如果你仍然遇到问题,可能是因为在部署过程中,你需要将CSS文件移动到特定的位置,如
public
目录下的css
子目录。为了覆盖这些更改,可以在Vite配置中添加额外的配置选项以指定CSS文件的输出位置。例如:// vite.config.ts export default { // ... css: { extract: false, postCss: [require('autoprefixer')], output: { css: true, dir: 'public/css', filename: '[name].css', }, }, };
然后,在你的HTML文档中添加
<link>
元素指向这个新的CSS输出路径。<link rel="stylesheet" href="public/css/[name].css" />
这样,你就解决了
background-image
属性的问题,并且可以正确地将CSS文件输出到指定的位置。解决 无用评论 打赏 举报 编辑记录 - 在你的
悬赏问题
- ¥15 Windows Script Host 无法找到脚本文件"C:\ProgramData\Player800\Cotrl.vbs”
- ¥15 matlab自定义损失函数
- ¥15 35114 SVAC视频验签的问题
- ¥15 impedancepy
- ¥15 求往届大挑得奖作品(ppt…)
- ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
- ¥50 浦育平台scratch图形化编程
- ¥20 求这个的原理图 只要原理图
- ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
- ¥20 微信的店铺小程序如何修改背景图