gpt4 book ai didi

带有 sass-loader 和 resolve-url-loader 的 Webpack 4 - 找不到图像路径

转载 作者:行者123 更新时间:2023-12-04 08:20:40 25 4
gpt4 key购买 nike

此处可重现的设置最少:https://github.com/jamesopti/webpack_playground/tree/resolve_url_loader_issue

我正在尝试使用 resolve-url-loader为我的 scss 添加一个哈希名称 url()图像路径,但我花了很长时间让它与 webpack 4 一起工作。
我在 /static/img/** 中有一堆图片在我的 SCSS 中被引用,例如:

span.arrow {
background: url(/static/img/audiences.png);
}

最终在我的 css 中完全相同(resolve-url-loader 没有找到它们)

当我通过 webpack 运行以下配置时,我看到解析加载器正在找到正确的 url()及其路径,但 Debug模式说未找到。
resolve-url-loader: /static/img/audiences.png
/Users/usr1/webpack_playground/src
/Users/usr1/webpack_playground/static/img
NOT FOUND

是否有一些不正确的输出配置?我尝试了各种设置组合都无济于事:
  loader: 'resolve-url-loader',
options: {
debug: true,
root: path.join(__dirname, './static/img'),
includeRoot: true,
absolute: true,
},

我的最终目标是让文件加载器将它们转换为/dist 散列版本:
span.arrow {
background: url(/static/img/audiences-dhsye47djs82kdhe6.png);
}

//Webpack 规则配置
rules: [
{
test: /\.(png|jpg|gif)$/,
include: [
path.resolve(__dirname, './static/img'),
],
use: {
loader: 'file-loader',
options: {
name: '[name]-[hash].[ext]',
},
},
},
{
test: /\.svg$/,
use: {
loader: 'svg-inline-loader',
options: {
name: '[name]-[hash].[ext]',
},
},
},
{ test: /\/src\/js\/(?:.*)\.css$/, use: [ { loader: 'style-loader' }, { loader: 'css-loader' } ] },
{
test: [/\.scss$/, /\.sass$/],
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: {
sourceMap: true,
},
},
{
loader: 'resolve-url-loader',
options: {
debug: true,
root: './static/img',
includeRoot: true,
},
},
{
loader: 'sass-loader',
options: {
outputStyle: 'compressed',
sourceMap: true,
includePaths: [
'./src'
],
},
},
],
},
]

最佳答案

结果我只需要 file-loader做我想做的事。

当任何 css/sass/style 加载器遇到图像(匹配我指定的文件扩展名)时,它会通过 file-loader 进行处理。 ,这两者都将它复制到指定命名格式的输出目录,并返回 sass 加载器的名称作为文件名。

rules: [
{
test: /\.(png|jpg|gif|svg)$/,
exclude: [
path.resolve(__dirname, './node_modules'),
],
use: {
loader: 'file-loader',
options: {
name: '[path][name]-[hash].[ext]',
outputPath: '../',
publicPath: '/dist',
},
},
},
{
test: /\.svg$/,
include: [
path.resolve(__dirname, './node_modules'),
],
use: {
loader: 'svg-inline-loader',
options: {
name: '[name]-[hash].[ext]',
},
},
},
{ test: /\/src\/js\/(?:.*)\.css$/, use: [ { loader: 'style-loader' }, { loader: 'css-loader' } ] },
{
test: [/\.scss$/, /\.sass$/],
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: {
sourceMap: true,
root: path.resolve(__dirname),
},
},
{
loader: 'postcss-loader',
options: {
ident: 'postcss',
plugins: () => [
autoprefixer({
'browsers': ['last 2 versions', 'ie >= 10'],
}),
],
sourceMap: true,
},
},
{
loader: 'sass-loader',
options: {
outputStyle: 'compressed',
sourceMap: true,
includePaths: [
'./src/scss',
],
},
},
],
},
{
test: /\.html$/,
use: [
{
loader: 'html-loader',
options: {
root: path.resolve(__dirname),
},
},
],
},
{
test: [
/\/bundles\/(?:.*)\.js$/,
],
use: {
loader: 'babel-loader',
},
},
];

关于带有 sass-loader 和 resolve-url-loader 的 Webpack 4 - 找不到图像路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49801654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com