【问题标题】:Vue-cli import relative scss is not working for vendors **external** librairies **in style files**Vue-cli import relative scss 不适用于供应商**外部**库**在样式文件中**
【发布时间】:2018-11-18 09:39:32
【问题描述】:

Vue-cli(旧语法)导入相关 scss 资产不适用于供应商外部在样式文件中

  • 导入项目相关的 scss(在 src 中)总是可以的。
  • 在标签内导入外部相关 scss(在 node_modules 中)是可以的。
  • 在 scss 文件 NOK 中导入外部相关 scss(在 node_modules 中)。

如果我使用这个版本的 vue 和 @vue-cli :

packadge.json

 "dependencies": {
    "vue": "^2.5.16"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "^3.0.0-beta.15",
    "@vue/cli-plugin-eslint": "^3.0.0-beta.15",
    "@vue/cli-service": "^3.0.0-beta.15",
    "buefy": "^0.6.6",
    "bulma": "^0.7.1",
    "vue-template-compiler": "^2.5.16"
  },

我的应用程序内部的相对链接没有任何问题,但是如果我在样式文件中导入 externals 像 buefy 或 bulma,我就会遇到问题。

基本复制:

  • 安装@vue-cli @(npm remove vue-cli; npm remove -g vue-cli; npm install -g @vue/cli)

  • 我创建一个基础项目(vue create relative-css-demo)

  • 安装 bulma & buefy (npm install bulma buefy)

  • 我使用 bulma 导入创建了一个基本颜色资源:

src/assets/vars/colors.scss

@import "../../../node_modules/bulma/sass/utilities/_all";
  • 在单独的 scss 文件中设置 App 样式:

src/App.vue

<style lang="scss" src="./App.scss"></style>

src/App.scss

@import './assets/vars/colors.scss'
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}

你有错误:

ERROR 编译失败,出现 1 个错误

./src/App.scss?vue&type=style&index=0&lang=scss 中的错误

模块构建失败(来自 /home/awa/Projets/node_modules/sass-loader/lib/loader.js):

@import "../../../node_modules/bulma"; ^ 找不到或无法读取要导入的文件:../../../node_modules/bulma。父样式表: /home/awa/Projets/vues-templates/simple-relative-css-demo/src/assets/vars/colors.scss 在 /home/awa/Projets/vues-templates/simple-relative-css-demo/src/assets/vars/colors.scss (第 75 行,第 1 列)

@ ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader??ref--8-oneOf-1-1!./node_modules/vue-loader/ lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/lib??ref--8-oneOf-1-2!/home/awa/Projets/node_modules/sass-loader/lib/loader.js?? ref--8-oneOf-1-3!./src/App.scss?vue&type=style&index=0&lang=scss 4:14-310 14:3-18:5 14:310-18:4 15:22-318 @ ./src/App.scss?vue&type=style&index=0&lang=scss @ ./src/App.vue @ ./src/main.js @多 (webpack)-dev-server/client?http://localhost:8080/sockjs-node (webpack)/hot/dev-server.js ./src/main.js

但是,如果我在样式标签中导入颜色,它就可以工作。 即使我在 App.scss 中导入我自己的另一个资产 scss 文件也没关系......

src/App.vue

<style lang="scss" src="./App.scss">
  @import './assets/vars/colors.scss'
</style>

src/App.scss

@import './assets/vars/noexternals.scss'
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}

DONE 268ms 编译成功

【问题讨论】:

  • 事实上,我确实在工作。符号 ../../../node_modules/bulma 已弃用。

标签: webpack-style-loader vue-cli


【解决方案1】:

事实上,我确实使用了新的 import 表示法:

不推荐使用符号\@import "../../../node_modules/bulma",正确的符号是\@import "~bulma/sass/utilities/_all";

您可以在此处看到生成的带有外部 bulma 和 buefy css 导入的 vue 项目的简单示例:https://github.com/vuejs-templates/webpack

【讨论】:

    猜你喜欢
    • 2020-10-19
    • 2017-10-31
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 2018-12-16
    • 2020-05-05
    相关资源
    最近更新 更多