3

我正在开发基于 vue-cli webpack 模板的单页应用程序。由于我们也必须使用静态资产,因此我们需要在样式表中引用它们。

官方文档建议使用绝对路径,如下所示:

background-image: url('/assets/images/lo/example2.svg');

问题是,vue-loader 和 webpack 本身不会处理静态资源,因此最终输出样式表中的 url 不会正确设置。webpack url-loader 将处理的所有资产都将根据您的 publicPath 配置获得正确的相对 url。静态资产也需要相同的效果。

您知道如何将静态资产与基于 vue.js 的应用程序结合使用吗?

更新

经过研究和大量试验和错误后,我决定将最终样式表和脚本包放在 index.html 旁边的根文件夹中。生成的路径将正常工作。不是最佳解决方案,因为我更喜欢脚本和样式表的子文件夹(尽管它们只包含一个文件)。但尽管如此,我有一个生成一致且有效的工件的构建过程。

4

1 回答 1

5

对于“真正的”静态资产,请使用静态目录。

相比之下,静态/中的文件根本不被 Webpack 处理:它们被直接复制到它们的最终目的地,具有相同的文件名。您必须使用绝对路径来引用这些文件,这是通过在 config.js 中加入 build.assetsPublicPath 和 build.assetsSubDirectory 来确定的。

您还可以在 config/index.js 中覆盖此默认路径

module.exports = {
  // ...
  build: {
    assetsPublicPath: '/',
    assetsSubDirectory: 'static'
  }
}

放置在 static/ 中的任何文件都应使用绝对 URL /static/[文件名] 来引用。如果将assetSubDirectory 更改为assets,则需要将这些URL 更改为/assets/[filename]。

于 2017-12-06T15:25:36.357 回答