3

我的Vue项目结构:styles目录包含所有 css 文件。

src
├── assets
├── components
├── styles
│   ├── main.css
│   ├── normalize.css
│   └── variables.css
├── views
├── App.vue
├── main.ts
├── router.ts

src/styles/main.css导入其他 css 就像:

@import 'normalize.css';
@import 'variables.css';

我想src/styles/main.css在 Vue 全局中导入。那是:

import Vue from 'vue';
import './styles/main.css';  // global
import App from './App.vue';
import router from './router';

Vue.config.productionTip = false;

new Vue({
  router,
  render: (h) => h(App),
}).$mount('#app');

然后我可以直接在每个.vue组件中使用 variables.css 中定义的变量。喜欢:

<style lang="postcss" scoped>
a {
  color: $primary;  // defined in variables.css
}
</style>

postcss-loader未能解决$primary变量:

Module build failed (from ./node_modules/postcss-loader/lib/index.js):
Syntax Error

(79:10) Could not resolve the variable "$primary" within "$primary"

我怎样才能导入全局main.css,所以我不需要@import 'variables.css'在每个.vue组件中?

演示库在这里:https ://github.com/Jancat/vue-cli-ts-demo

4

1 回答 1

0

我认为 PostCss 没有像“@variable”这样的变量语法。这看起来像 SASS 或 LESS。我认为您必须安装一个单独的插件才能使此类变量与 PostCSS 一起使用: https ://www.npmjs.com/package/postcss-variables

PostCSS 使用这种语法: https ://github.com/postcss/postcss-custom-properties

编辑:

好的,经过一番研究,我发现了这个信息:https ://github.com/vuejs/vue-loader/issues/328

我很确定这对 postcss-custom-properties 也有效。因此,您必须在每个组件中导入变量。

于 2018-07-30T06:40:21.460 回答