Skip to content

postcss 文档不清晰 #1090

@transtone

Description

@transtone

昨天花了好长时间在 <script> 中 import 进来的独立css文件不被 postcss 处理 的问题上。
经过多方测试和检验,发现这种情形 vue-loader 似乎是不处理的,issue 中的大多评论建议大家修改 webpack 配置,为 css 文件添加 postcss-loader ,单独配置处理。而 vue-cli 中的 webpack 模板,css配置是封装过的,对新手不友好。
进而发现自己对vue-loader 加载 postcss 处理 css 样式的流程没搞清楚。经摸索,大概是这样的:

## vue-loader 的 postcss 处理
<script> 中 import 进来的css文件不被 vue-loader 处理。
因此想要vue-loader处理独立的css文件,可以用 <style src="filename.css"> 的方式引入。 

vue-loader 默认的 postcss 配置文件路径为:
webpack内联选项(build/vue-loader.conf.js) > postcss.config.js > .postcssrc.js

弄明白之后再看 https://github.com/vuejs/vue-loader/blob/master/docs/zh-cn/features/postcss.md 文件,发现其实已经提到了怎么配置,但文档却默认用户知道vue-loader处理css的流程,也知道如何修改 vue-cli webpack 模板封装后的 build/utils.js 文件中 cssloader 的配置。

原文:
由vue-loader 处理的 CSS 输出,都是通过 PostCSS 进行作用域重写,你还可以为 PostCSS 添加自定义插件,例如 autoprefixer 或者 CSSNext。

困惑:

  1. 由vue-loader处理的css输出,哪些 css输出是由 vue-loader 处理的?不被 vue-loader 处理的css输出有哪些,可以怎么处理,容易引起哪些问题?
  2. 都是通过 PostCSS 进行作用域重写,是内置的 postcss,还是需要另行加载 postcss-loader?
  3. 可以为 PostCSS 添加自定义插件,在哪个配置文件里添加?vue-loader 从 11.0 版本开始支持通过 postcss-loader 自动加载同一个配置文件 这句话不通,会引起歧义。同一个配置文件,谁和谁的同一个配置文件?vue-loader 通过 postcss-loader 加载,是内部调用的,还是需要增加额外的 postcss-loader ?是否可以改为:
    vue-loader 从 11.0 版本开始支持通过配置文件来配置,采用了和 postcss-loader 相同的方案,加载的是相同的配置文件:

建议:

  1. 明确 vue-loader 处理哪些文件中的 css 样式。
  2. 明确 vue-loader 调用 postcss 处理 css 样式时,默认的配置文件路径是什么。(配置文件及路径在文档中有,可我看了多遍还是忽略了,以为只跟独立的 postcss-loader 有关。)
  3. 添加对易于出错的 import '*.css' 文件 情况的说明及配置方案。
  4. 在webpack 中的 css loader 配置文档中,添加官方vue-cli webpack模板的配置方案。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions