webpack - Vue CLI - 在静态文件中包含 Assets 文件夹中的图像

标签 webpack vue.js vuejs2 vue-cli

是否可以在一些静态 .scss 文件中包含 assets/ 文件夹中的图像,作为 background-image?

我有一个 _buttons.scss 部分,一些按钮有一个图标,我想将其添加为 background-image。这些图标位于 src/assets/ 文件夹中。

应用结构:

- src
  - assets
    some_icon.svg
  - components
  - scss
    _buttons.scss
    main.scss
  - views
  App.vue
  main.js
  router.js

_buttons.scss 中:

.some-selector {
    background-image: url(../assets/some_icon.svg)

    /* also tried
    background-image: url(./assets/some_icon.svg)
    background-image: url(/assets/some_icon.svg)
    background-image: url(assets/some_icon.svg)
    */
}

它返回一个错误 This relative module was not found

我知道我可以简单地在我的组件或主 App.vue 中添加这些样式(范围内或非范围内),但是,我想知道如果没有它是否可以实现?

我也知道我可以将这些图标添加到我的 public 文件夹中,但我希望这些图标保留在 assets/ 文件夹中。

$ vue -V
$ 3.0.0-rc.5

也许是一些自定义的 webpack 配置?

谢谢

最佳答案

您可以通过以下方式进行管理:

background-image: url('~@/assets/some_icon.svg');

这里的关键是使用 ~@ 作为前缀。以 ~ 为前缀的 URL 被视为模块请求。如果你想利用 Webpack 的模块解析配置,你需要使用这个前缀。例如,如果你有一个等于 @ 的 src 文件夹的解析别名,如果你使用 vue-cli3,你可以使用这种类型的 URL 来强制 Webpack 解析到所需的 Assets Assets 文件夹。更多信息在这里: handling static assets

关于webpack - Vue CLI - 在静态文件中包含 Assets 文件夹中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51531821/

相关文章:

javascript - 我如何将值从谷歌云函数(firebase)传递到前端?

javascript - 缺少默认作用域插槽 Vuetify

reactjs - Redux 在开发中工作,似乎在生产中中断

cordova - DeprecationWarning : Tapable. 插件已弃用。改用 `.hooks` 上的新 API

angular - 如何使用 Angular-Cli/Webpack 导入 PouchDb-Find

css - webpack:在 vue 应用程序选择器下确定所有 SCSS 的范围

vue.js - 为什么 $nextTick 中的期望永远不会失败?

javascript - 将事件监听器绑定(bind)到新呈现的动态元素

vue.js - 如何为 VueJs Props 添加多种数据类型?

javascript - 分页和过滤分别运行/Vue