-
Notifications
You must be signed in to change notification settings - Fork 916
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
生成的css文件中background url()图片路径问题 #481
Comments
同求问 |
我也有引用图片出了问题 |
same to me
just work the same as publicPath: "../" and publicPath: "/" if set to publicPath: "./../", webpack error with any .vue
|
mark |
同问,主要问题出在background-image的引用里,每次都要先把图片import 进来 |
同问 |
这个问题 很严重的 因为我们做汽车网站的 有些时候背景图会用到很多! |
将真,我也遇到这种问题 ,找了好几天这个问题,最后不得已把这个图片转换成了base64。。。 |
同问,目前采用手动的方式处理了,没有转化成base64的大图片,路径都会相对css的static,所以错误.只能在打包后生成的app.css里面全部替换,将./static替换成../static,这样暴力解决的,但...... |
我的解决了,路径改为绝对路径就没问题了 |
这问题还在讨论啊,根据dev/build,给file-loader设置不同的publicPath可以解决dev build时路径不同的问题 但是JS和CSS中图片路径,分别是根据所被引用的CSS或者JS的路径来计算相对路径。如果两者层次不同,就无法用../多次的方式回到相同的某路径来统一路径。这个问题我也没找到方法,但是直接规避就好了 |
关注一下你的.vue文件,相对于这个来。就可以的 |
mark |
mark,也遇到这个问题了,第三方组件里面的css引用img图片了,路径就不对了 |
对于楼主的问题,主要是需要单独为 css 配置 publicPath 。 对于用 vue-cli 生成的项目,dist 目录结构如下:
经常遇见的问题是 css 中 background-image 的相对路径不能正确的引用到 img 文件夹中。但是用 ExtractTextWebpackPlugin 的 publicPath 配置就可以。 更改
最后附上 extract-text-webpack-plugin 的文档。 |
如果说由后端php分配域名,而我的页面static不放在根目录如何解决,也就不能使用绝对路径了 |
@pspgbhu 这个办法太好了!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
@pspgbhu 解决了,感谢! |
@pspgbhu 非常赞,终于找到完美解决方案啦! |
更改下问题样式,改好看点~ |
mark |
@pspgbhu 确实能解决问题 mark |
@pspgbhu 你的方法成功! 感謝大神 |
@pspgbhu 问题解决了,谢谢大佬 |
@pspgbhu O(∩_∩)O 谢谢,找了一晚上的解决方案,这个最简单有效了!!! |
@pspgbhu Thanks. |
还是无法解决! |
更改 build/utils.js 文件中 ExtractTextPlugin 插件的options 配置: if (options.extract) {
return ExtractTextPlugin.extract({
use: loaders,
publicPath: '../../', // 注意配置这一部分,根据目录结构自由调整
fallback: 'vue-style-loader'
})
} else {
return ['vue-style-loader'].concat(loaders)
} |
@pspgbhu 赞一个,完美 |
@pspgbhu 问题出于我的file-loader 的 |
我的问题通过干掉postcss的postcss-url插件解决了 |
其实我也没理解题主的意思,是不是想一次build 在不同的publicPath环境中运行,通过css 的相对路径加载图片。感觉这样确实有难度。因为,所有的图片都是放到imgs直接目录下ExtractTextPlugin稍微改下就可以实现,但如果imgs里面再分gif,png,jpg文件夹,相对路径就更复杂了,需要ExtractTextPlugin去读取你的css提取目录配置,不同图片的 url-loader(file-loader)目录规则,才能决定如何替换。 |
我们似乎忘记了有这么一个标签 |
@laozhujia 在.vue单文件组件中写样式,背景图片url使用绝对路径可以避免使用相对路径层级过深的问题,但是打包后依旧是绝对路径,如果项目不是跑在根目录下就会出现问题;请问有什么好的解决办法嘛,求教 |
@badaoshen 假设你项目放在test目录下,如果目录和工程一致,直接设置publicPath=‘/test/' ,打包后会在所有引用前加上这个publicPath的路径, vue-cli2.0配置webpack.base.conf.js 中output.publicPath, 可以直接修改,也可以保留build.assectsPublicPath 修改config目录下index里build.assetsPublicPath。如果是img css 另外存放目录,可以参考 本页 pspgbhu 的修改ExtractTextPlugin的publicPath 覆盖output的publicPath方法 |
@laozhujia 查了下webpack关于路径处理的文档,使用绝对路径的时候会被直接忽略,例如:
但是在css中使用相对路径会因为项目文件分级出现异常多的"../../../../../",最后的解决方案是使用模块路径,图片放到src/assets/img中,自己配置了一个alias:
此方案优点就是路径简洁明了,打包的时候会转为相对路径便于项目发布,缺点就是IDE无法识别,会提示错误 ( 辣鸡webstorm(メ゚Д゚)メ逃~ |
@pspgbhu 试了一下, 解决了我的问题, 感谢! |
请问升级到webpack4怎么解决的这个问题 |
@Yanhongliang100 可以使用MiniCssExtractPlugin.loader,同样的配置。 |
能否贴下代码看看? |
项目是以 vue-element-admin 为基础构建的,升级到webpack4后,将build/utils.js 中 loaders.push({
loader: MiniCssExtractPlugin.loader,
options: {
// 解决css中backgroud-url资源在编译后的路径问题
publicPath: '../../'
}
}) |
@badaoshen 我项目部署在了二级域名下,导致css背景图都显示不出来,配置了url-loader也没生效,看到你的方案才意识到自己写的绝对路径没有被解析,现在已经完美解决了,非常感谢!O(∩_∩)O |
module: {
rules: [
{
test: /\.less$/i,
use: [
devMode ? 'vue-style-loader' :
{
loader: MiniCssExtractPlugin.loader,
options: {
/*
* 复写css文件中资源路径
* 因为css文件中的外链是相对与css的,
* 我们抽离的css文件在可能会单独放在css文件夹内
* 引用其他如img/a.png会寻址错误
* 这种情况下所以单独需要配置../,复写其中资源的路径
*/
publicPath: '../'
}
},
'css-loader',
{
loader: 'less-loader',
options: {
lessOptions: {
javascriptEnabled: true
}
}
}
]
},
]
} |
一言以蔽之, css里使用@这种路径别名的时候要在前面加上 |
|
这是来自QQ邮箱的假期自动回复邮件。您好,我最近正在休假中,无法亲自回复您的邮件。我将在假期结束后,尽快给您回复。
|
重现项目在这
使用vue init webpack创建的项目,改了三个地方
现象:
npm run dev没问题 因为跟build的目录不同
当npm run build后
提取出来的css文件中url()中图片的路径是static/img/logo.82b9c7a.png这样的,应该是根据url-loader来的,但这个路径是相对于css文件的,所以造成找不到这张图片
个人几个解决方案:
这个问题纠结了很久 看了css-loader file-loader文档,看了很多以前的issue,网上查了很久,都没有找到相应的解决方法,因为实在找不到应该修改哪一部分。上边说的几个解决方法,总感觉不靠谱~
忍不了了所以来提个issue 望大牛们指点迷津
The text was updated successfully, but these errors were encountered: