javascript - Nuxtjs如何在为组件导入css文件时为npm run generate配置webpack?

标签 javascript css webpack vuejs2 nuxt.js

注意:我对 webpack 几乎一无所知,但一直在谷歌搜索试图弄清楚这一点。

我有一个简单的 vue 组件:

<template>
  <div class="d-appendix">
    <slot></slot>
  </div>
</template>

<script>
export default {
}
</script>

<style src='../styles/d-appendix.css'>
</style>

css文件是: 和CSS

.d-appendix {
  contain: layout style;
  font-size: 0.8em;
  line-height: 1.7em;
  margin-top: 60px;
  margin-bottom: 0;
  border-top: 1px solid rgba(0, 0, 0, 0.1);
  color: rgba(0,0,0,0.5);
  padding-top: 60px;
  padding-bottom: 48px;
}

.d-appendix h3 {
  grid-column: page-start / text-start;
  font-size: 15px;
  font-weight: 500;
  margin-top: 1em;
  margin-bottom: 0;
  color: rgba(0,0,0,0.65);
}

.d-appendix h3 + * {
  margin-top: 1em;
}

.d-appendix ol {
  padding: 0 0 0 15px;
}

@media (min-width: 768px) {
  .d-appendix ol {
    padding: 0 0 0 30px;
    margin-left: -30px;
  }
}

.d-appendix li {
  margin-bottom: 1em;
}

.d-appendix a {
  color: rgba(0, 0, 0, 0.6);
}

.d-appendix > * {
  grid-column: text;
}

.d-appendix > .d-footnote-list,
.d-appendix > .d-citation-list,
.d-appendix > .distill-appendix {
  grid-column: screen;
}

运行 npm run generate 抛出:

ERROR in ./styles/d-appendix.css?vue&type=style&index=0&lang=css& (./node_modules/css-loader/dist/cjs.js??ref--3-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--3-oneOf-1-2!./styles/d-appendix.css?vue&type=style&index=0&lang=css&)
Module build failed (from ./node_modules/css-loader/dist/cjs.js):
ValidationError: CSS Loader Invalid Options

options should NOT have additional properties

    at validateOptions (/Users/sumner/Projects/vdistill/frontend/node_modules/css-loader/node_modules/schema-utils/src/validateOptions.js:32:11)
    at Object.loader (/Users/sumner/Projects/vdistill/frontend/node_modules/css-loader/dist/index.js:44:28)
 @ ./styles/d-appendix.css?vue&type=style&index=0&lang=css& (./node_modules/vue-style-loader??ref--3-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--3-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--3-oneOf-1-2!./styles/d-appendix.css?vue&type=style&index=0&lang=css&) 4:14-253
 @ ./styles/d-appendix.css?vue&type=style&index=0&lang=css&
 @ ./components/DAppendix.vue
 @ ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib??vue-loader-options!./pages/index.vue?vue&type=script&lang=js&
 @ ./pages/index.vue?vue&type=script&lang=js&
 @ ./pages/index.vue
 @ ./.nuxt/router.js
 @ ./.nuxt/index.js
 @ ./.nuxt/client.js
 @ multi ./.nuxt/client.js

我做了一些谷歌搜索,并尝试将 nuxt.config.js 更改为

// inside build
  extend (config, ctx) {
       config.module.rules.push({
        test: /\.css$/,
        loader: 'css-loader',
        options: {
          modules: true,
          localIdentName: '[local]--[hash:base64:5]',
          import: true,
          importLoaders: true,
        }
      })

现在这给了我:

ERROR in ./.nuxt/components/nuxt-loading.vue?vue&type=style&index=0&lang=css& (./node_modules/css-loader/dist/cjs.js??ref--3-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--3-oneOf-1-2!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib??vue-loader-options!./.nuxt/components/nuxt-loading.vue?vue&type=style&index=0&lang=css&)
Module build failed (from ./node_modules/postcss-loader/src/index.js):
SyntaxError

(1:1) Unknown word

> 1 | exports = module.exports = require("../../node_modules/css-loader/dist/runtime/api.js")(false);
    | ^
  2 | // Module
  3 | exports.push([module.id, "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.nuxt-progress {\n  position: fixed;\n  top: 0px;\n  left: 0px;\n  right: 0px;\n  height: 2px;\n  width: 0%;\n  opacity: 1;\n  transition: width 0.1s, opacity 0.4s;\n  background-color: #fff;\n  z-index: 999999;\n}\n\n.nuxt-progress.nuxt-progress-notransition {\n  transition: none;\n}\n\n.nuxt-progress-failed {\n  background-color: red;\n}\n", ""]);

如何让我的 css 导入工作?

Repo

最佳答案

我创建了一个 Sandbox例如。这些链接似乎包含过时的导入语法。而且你不需要配置 Nuxt 来加载 css。它已经配置为默认加载 css。

你所要做的就是像下面这样:

<script>
import foo from "../css/custom.css";
export default {
computed: {
    styles() {
      return foo
    }
  }
}
</script>

关于javascript - Nuxtjs如何在为组件导入css文件时为npm run generate配置webpack?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59128863/

相关文章:

javascript - Meteor更新到0.8.0后文本编辑器不显示内容

javascript - 如何在运行时检查复选框

html - 延伸过去文本的边框

css - 我无法在我的 wordpress 网站上使用@font-face 支持

html - 捕捉 SVG 动画旋转

javascript - "Uncaught ReferenceError: require is not defined"使用 Angular 2/webpack

node.js - Node : Automatically refresh browser on file change

javascript - 我可以直接向 Express 应用程序发送请求,而不是通过 http 吗?

javascript - 停止 extract-css-chunks-webpack-plugin 组合所有 CSS

javascript - 如何解决使用 Webpack 构建的 `require` 别名,用于 React 单元测试?