【发布时间】:2019-05-25 01:38:30
【问题描述】:
我在 Vue.js CLI 生产捆绑中遇到了一个奇怪的问题,我无法确定根本原因,感谢一些帮助。
我的 main.js 中有一个带有以下(相关摘录)的 Vue CLI 3 应用程序:
// Bootstrap
import "@/assets/bootstrap/bootstrap.scss";
import "bootstrap-vue/dist/bootstrap-vue.css";
import BootstrapVue from "bootstrap-vue";
Vue.use(BootstrapVue);
// Toastr
import Toastr from "vue-toastr";
import "vue-toastr/dist/vue-toastr.css";
Vue.use(Toastr, {
defaultPosition: "toast-bottom-right"
});
在我的开发环境中运行它 (npm run serve) CSS 工作正常。
当我在生产编译 (npm run build) 之后运行此程序时,某些类...未应用,我无法解释原因。鉴于我能看到的唯一区别是捆绑过程,我倾向于在这个方向寻找问题。
我在我的 vue.config.js 中按如下方式定制了捆绑(相关摘录):
cacheGroups: {
icons: {
name: "icons",
test: /[\\/]node_modules[\\/](@fortawesome)[\\/]/,
chunks: "all",
priority: 3
},
vendors: {
name: "vendors",
test: /[\\/]node_modules[\\/]/,
chunks: "all",
priority: 1
}
}
因此,我捆绑的 CSS 正确创建如下:
- 一个包含 Toaster CSS 的 vendor 块。
这包括一个“toaster”类和一个“toaster-info”类(最新的只有一个背景色) - 一个 应用程序 缝隙,其中包括我自定义构建的引导 CSS。
尽管引导文件位于 node_modules 文件夹中,因此它们应该放在上一个缝隙中,它们进入这里是因为我正在将它们编译为上面的 SASS 文件中的导入,该文件实际上来自代码。 这又包括一个“烤面包机”课程。
现在,我能看到的是:
- 这两个块似乎都是由浏览器加载的
- 标记正确使用了“toastr toastr-info”
- 仅应用来自应用程序(引导程序)的“烤面包机”类
- 'toaster' 和 'toaster-info' 类被浏览器完全忽略,'toaster-info' 的背景颜色也未应用
我用几种浏览器对此进行了测试,以排除任何特定的浏览器异常。
浏览器计算的样式显示,由于某种我不明白的原因,这些类被“排除”了(“排除”的含义在样式树中,但有删除线)。
谁能帮我理解为什么会这样?
谢谢。
【问题讨论】:
-
在您的开发控制台中,在检查元素时,您可以使用 "Computed" 选项卡来查看应用了哪些样式以及它们的位置已定义。
-
是的,这就是我上面所说的“浏览器调试”。课程显示为“删除线”,但我不知道为什么。
-
能否请您从浏览器控制台发布一些屏幕截图?如果样式被覆盖(通常是什么导致它们被显示),您需要找到 正在应用 代替
-
当然,这是我能看到的:capture
-
对,就是说因为
.toast的特异性比其他的更高,所以它是被应用的那个。它可能更高,因为app.css是在vendor.css之后定义的。你为什么在你的应用风格中定义.toast?