vuejs:vue-cli webpack 模板无法解析 sass 导入

Posted

技术标签:

【中文标题】vuejs:vue-cli webpack 模板无法解析 sass 导入【英文标题】:vuejs: vue-cli webpack template cannot resolve sass imports 【发布时间】:2018-08-05 15:10:59 【问题描述】:

在从 Sass 编译样式并从节点模块导入时,我遇到了 webpack/vue-cli 的问题。

我找不到在 sass 中正确解析 @importsnode_module 的方法。

@import '~bootstrap/dist/css/bootstrap.min.css';  // not working, cannot resolve path (sass-loader syntax)
@import '../node_modules/bootstrap/dist/css/bootstrap.min.css';  //works, needs full relative paths

这似乎归结为两个问题: * sass-loader 不用于解析来自 node_module (~module) 的导入,尽管它是 vue-cli 为 sass 配置的加载器 * 改为使用 postcss-import,但没有 node_module 文件夹的映射,因此需要相对路径。在这种情况下,内部依赖项(例如,通过url() 加载的字体具有从 node_modules 导入的样式内的相对路径)不会被解析。

有什么想法吗? TIA

【问题讨论】:

【参考方案1】:

据我所知,您不应该将构建 css 文件导入您的 sass。 而是像这样将它导入你的 main.js 中:

import 'bootstrap/dist/css/bootstrap.min.css'

【讨论】:

这可行,但是构建的 CSS 中的顺序是错误的(vue-cli 使用 webpack-text-extract-plugin)。解释一下: - 来自 .vue 文件的块(在 sass 中) - 来自引导程序导入的块 .vue 文件需要覆盖一些引导程序基本样式。【参考方案2】:

尝试安装node-sasssass-loader

npm install --save-dev node-sass sass-loader

如果您正在使用 npm,请随意将其替换为 yarn


另外,您可以通过以下方式导入引导程序

@import "~bootstrap";

【讨论】:

这在使用 vue-cli 的 webpack 模板时不起作用。我明确指出语法不起作用,因为 sass-loader 被 postcss-import 绕过了。

以上是关于vuejs:vue-cli webpack 模板无法解析 sass 导入的主要内容,如果未能解决你的问题,请参考以下文章

vue webpack 模板(通过 vue-cli)以后会变得更容易使用吗?

使用vue-cli脚手架安装和webpack-simple模板项目生成

解决vue-cli不能初始化webpack模板的问题(vue init卡住了,解决办法)

vuejs实战

安装vuejs以及vue-cli脚手架

[Vuejs] webpack+vue-cli打包如何引用相对路径