javascript - 在不捆绑的情况下将 url() 解析为图像
问题描述
我正在将 Webpack 集成到已经建立的前端环境中。Sass 和 resolve-url-loader 正在工作,Webpack 会找到 CSS 中引用的文件url()
。我的问题是,我不想将引用的文件复制url()
到 dist/ 文件夹中,我想链接到它们所在的位置。
我的文件是这样设置的
www/
index.html
assets/
js/
main.js
css/
main.scss
components/
thing.scss
images/
pic.jpg
dist/
output.js
output.css
与 main.scss 导入 thing.scss 其中包含该行
background: url(../../images/pic.jpg)
resolve-url-loader 正确地将其解析为../images/pic.jpg
,并且 css-loader 找到文件并调用文件的加载器(file-loader)。但是,我不想将文件复制到 dist/ (我通过添加emitFile: false
到文件加载器来完成)并将 url 重写为与 CSS 输出 ( ../assets/images/pic.jpg
) 相对。我该怎么做呢?
作为参考,这是我的 webpack.config.js
const path = require('path');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
{
entry: './assets/js/main.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'output.js',
publicPath: 'dist/'
},
module: {
rules: [{
test: /\.scss$/,
use: [
MiniCssExtractPlugin.loader, {
loader: "css-loader",
options: {
sourceMap: true,
url: false
}
}, {
loader: "resolve-url-loader",
options: {
debug: true,
sourceMap: true
}
}, {
loader: "sass-loader",
options: {
sourceMap: true,
sourceMapContents: false
}
}
]
}, {
test: /\.(png|svg|jpg|gif)$/,
use: [{
loader: 'file-loader',
options: {
emitFile: false
}
}]
}]
},
plugins: [new MiniCssExtractPlugin({
filename: "[name].css",
chunkFilename: "[id].css"
})],
}
解决方案
不是最好的答案,但它有效。
删除 resolve-url-loader 并将 css-loader 保留在 url:false 上。然后只需编写您的 URL 路径,就像它们在输出文件中一样。
不过,我可能会接受它并捆绑我的图像。
推荐阅读
- javascript - 在 react-native 中垂直居中文本
- java - 无法使用房间数据库检索单行数据
- r - lubridate::floor_date(x, "14 days"): 如何防止新月份重启?
- c# - 无法从“Emgu.CV.Image”转换
[]”到“Emgu.CV.IInputArray” - pandas - 用于 2darray 数据集的多个数据帧的 Numpy 或 Pandas
- android - 添加 react-native-navigation 依赖项后,React-Native 构建失败
- python - 使用标签计数构建数据框
- excel - 根据单元格值重命名工作表
- ruby-on-rails - 生成大小为 16 的 uuid 和数据类型:二进制
- android - 如何在颤动中赋予下拉项比容器(下拉按钮)更大的宽度