是的,有办法。您将需要覆盖 vue-cli 附带的“图像”规则。
vue inspect --rule images 产生以下结果:
$ vue inspect --rule images
/* config.module.rule('images') */
{
test: /\.(png|jpe?g|gif|webp)(\?.*)?$/,
use: [
{
loader: 'url-loader',
options: {
limit: 4096,
fallback: {
loader: 'file-loader',
options: {
name: 'img/[name].[hash:8].[ext]'
}
}
}
}
]
}
(Protip:vue inspect 是一个有用的工具,可用于找出使用 vue-cli 构建时事物的行为为何如此)
所有图片
vue-cli 建议将webpack-chain 用于“高级”配置。我个人不是粉丝,但如果您想删除所有图像的哈希值,您可能应该修改“图像”规则。像这样编辑vue.config.js:
module.exports = {
// ...
chainWebpack: (config) => {
config.module
.rule("images")
.use("url-loader")
.loader("url-loader")
.tap((options) => {
options.fallback.options.name = "img/[name].[ext]"
return options
})
}
// ...
}
具体图片
就我而言,我只想删除具有唯一前缀的特定图像组的哈希值,因此我在vue.config.js 中的configureWebpack 中添加了以下内容:
module.exports = {
// ...
configureWebpack: {
module: {
rules: [
{
test: /unique-prefix-\d*\.png/, // <= modify this to suit your needs
use: [
{
loader: "url-loader",
options: {
limit: 4096,
fallback: {
loader: "file-loader",
options: {
name: "img/[name].[ext]", // <= note how the hash is removed
},
},
},
},
],
},
],
},
// ...
}
也可以使用 webpack-chain 完成,但我更喜欢更普通的 Webpack 配置格式。