我可以告诉 style-loader 在我的 CSS 模块之前加载我的全局 css 吗?

Can I tell style-loader to load my global css before my CSS Modules?

我的大部分网站都使用 Bulma classes 来实现我的一些全局 UI 样式,我想继续在我的组件中使用这些 classes,但也能够为这些组件定义 CSS 模块,以便对每个组件进行自定义调整。

因此,我将 babel-plugin-react-css-modules 添加到我的项目中,这使我可以在 className 中使用我的 Bulma classes 并将我的模块 classes 放入styleName。好的,有点 hacky 的感觉,但它正在工作。我在 CSS 目录中有一个 global-styles.scss 文件,我正在将其加载到我的主要应用程序组件中。这是我导入 Bulma 以及定义我自己的任何全局样式的地方。

我的问题是,当我的全局样式和我的模块样式全部混合在一起(通过 css-modules?)并注入到头部的样式标签中(通过 style-loader?),我的模块样式首先被定义,然后是我的全局样式。

我觉得模块样式是局部作用域的,应该始终优先(最后加载),即使我在同一组件中同时加载全局样式和作用域样式。例如,在一个组件中,我使用 Bulma 的 .navbar classes,但我也在我的 CSS 模块中定义了我自己的 .navbar class该组件,我将两者都应用到组件中的同一元素。

无论如何我可以指定构建样式标签的顺序吗?在所有这些插件之间,我只是迷路了,然后当你把 Gatsby 的插件抽象放在它上面时,一切都非常混乱。

我不完全确定是什么导致了这个问题,但它似乎与 Gatsby 有关。

https://www.gatsbyjs.org/tutorial/part-two/#component-css

Tip: This part of the tutorial has focused on the quickest and most straightforward way to get started styling a Gatsby site — importing standard CSS files directly, using gatsby-browser.js. In most cases, the best way to add global styles is with a shared layout component.

他们推荐的方法是在布局组件中导入全局文件。这是在我的模块之后加载我的全局变量。但是,创建一个 gatsby-browser.js 文件并导入我的全局变量会按预期顺序加载我的样式。