如何在 webpack 中以正确的顺序导入样式

Posted

技术标签:

【中文标题】如何在 webpack 中以正确的顺序导入样式【英文标题】:How to import styles in the right order in webpack 【发布时间】:2015-09-10 18:36:01 【问题描述】:

我使用 bootstrap css 和一个用 less 编写的附加模板。我将两者都导入我的反应组件的根组件中。不幸的是,即使较少的文件是导入的第二个文件,引导程序中的样式也会覆盖较少的样式。有没有办法用 webpack 确保样式的顺序。

这是根组件:

import React from "react";
import Dashboard from "./dashboard";
import 'bootstrap/dist/css/bootstrap.min.css'
import '../styles/less/pages.less'

React.render(
  <Dashboard />,
  document.body
);

这是加载器设置的相关部分:


  test: /\.less$/,
  loader: ExtractTextPlugin.extract(
    'css?sourceMap!' +
    'less?sourceMap'
  )
, 
  test: /\.css$/,
  loader: 'style-loader!css-loader'
,

【问题讨论】:

【参考方案1】:

在 index.js 文件中重新排序您的 css 导入:

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import './index.css';
import 'bootstrap/dist/css/bootstrap.css';
import 'bootstrap-rtl/dist/css/bootstrap-rtl.css';

ReactDOM.render(
  <App />,
  document.getElementById('root')
);

注意index.cssbootstrap.css 之前加载。它们应按以下顺序导入:

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import 'bootstrap/dist/css/bootstrap.css';
import 'bootstrap-rtl/dist/css/bootstrap-rtl.css';
import './index.css';

ReactDOM.render(
  <App />,
  document.getElementById('root')
);

【讨论】:

【参考方案2】:

问题是我必须使用 ExtractTextPlugin 插件也用于加载程序设置中的 css 部分:


  test: /\.less$/,
  loader: ExtractTextPlugin.extract(
    'css?sourceMap!' +
    'less?sourceMap'
  )
, 

  test: /\.css$/,
  loader: ExtractTextPlugin.extract(
    'css'
  )
,

【讨论】:

以上是关于如何在 webpack 中以正确的顺序导入样式的主要内容,如果未能解决你的问题,请参考以下文章

如何从迭代器()中以正确的顺序获取元素

如何在 NPM 包中使用 webpack 动态导入?

如何使用 npm/webpack 正确导入 Gridstack?

如何使用 webpack less-loader 从特定路径导入 LESS 文件?

Webpack 和 sass-loader 文件导入顺序

如何在 Vue cli 项目中使用 Webpack 包含我公司的全局样式 CDN(供开发人员使用)?