【问题标题】:Applying styles in Webpack 4在 Webpack 4 中应用样式
【发布时间】:2018-08-07 16:24:29
【问题描述】:

我在使用 SCSS 和 Webpack 4 在 React 中将类应用到我的 ul 元素时遇到很大问题。我已将我的项目升级到 Webpack 4 (#yesiamstupid)

如果我标记一种元素 (ul),它就可以工作。 不过,我自己的类“navMenu”从未应用过。 我可以在 web 开发者工具中看到这个类 --> styles.scss

我希望导航中的文本背景为蓝色。

[app.js]

import 'babel-polyfill';
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import AppRouter from './routers/AppRouter';

import 'normalize.css/normalize.css';
import './styles/styles.scss';

const jsx = (
  <Provider>
    <AppRouter />
  </Provider>
);

ReactDOM.render(jsx, document.getElementById('app')); 

[AppRouter.js]

import React from 'react';
import { BrowserRouter, Route, Switch } from 'react-router-dom';
import StartPage from '../components/StartPage';
import Header from '../components/Header';

const AppRouter = () => (
  <BrowserRouter>
    <div>
      <Header />
      <Switch>
        <Route path="/" component={StartPage} exact={true} />
      </Switch>
    </div>
  </BrowserRouter>
);

export default AppRouter;

[StartPage.js]

import React from 'react';

const StartPage = () => (
  <div>
    Hello
  </div>
);

export default StartPage;

[ Header.js ]

import React from 'react';
import { NavLink } from 'react-router-dom';

const Header = () => (
  <header>
    <h1>Test WP4</h1>
    <ul className="navMenu">
      <li><NavLink to="/" activeClassName="is-active" exact={true}>Here we are</NavLink></li>
      <li><NavLink to="/undefined" activeClassName="is-active" exact={true}>This route is undefined</NavLink></li>
    </ul>
  </header>
);

export default Header;

[_base.scss]

html {
  font-size: 62.5%;
}

body {
  font-family: Helvetica, Arial, sans-serif;
  font-size: $m-size;
}

button {
  cursor: pointer;
}

button:disabled {
  cursor: default;
}

.is-active {
  font-weight: bold;
}

[_settings.scss]

// Colors
// Spacing
$s-size: 1.2rem;
$m-size: 1.6rem;
$l-size: 3.2rem;
$xl-size: 4.8rem;
$desktop-breakpoint: 45rem;

[_header.scss]

ul {
  list-style-type: circle;
}

.navMenu {
  text-align:center;
  background:blue;
  padding-top:400px;
}

[styles.scss]

@import './base/settings';
@import './base/base';
@import './components/header';

[webpack.config.js]

const path = require('path');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");

module.exports = () => {
  return {
    watch: true,
    //mode: 'development',
    entry: ['babel-polyfill', './src/app.js'],
    output: {
      path: path.join(__dirname, 'public', 'dist'), //absolute path
      filename: 'bundle.js' //name is whatever you want
    },
    module: {
      rules: [{
        loader: 'babel-loader',
        test: /\.js$/,
        exclude: /node_modules/
      }, {
        test: /\.svg$/,
        loader: 'raw-loader'
      }, {
        test: /\.(sa|sc|c)ss$/,
        use: [
          MiniCssExtractPlugin.loader,
          'css-loader',
          'sass-loader',
        ],
      }

      ]
    },
    plugins: [
      new MiniCssExtractPlugin({
        // Options similar to the same options in webpackOptions.output
        // both options are optional
        filename: "style.css",
        //chunkFilename: "chunk.css"
      })
    ],
    devtool: 'inline-source-map',
    devServer: {
      contentBase: path.join(__dirname, 'public'), //absolute path
      historyApiFallback: true, //go to index if path not found
      publicPath: '/dist' //specify where bundle files liveY
    }
  };
}

【问题讨论】:

  • 将类更改为 ".navMenu li {..." 然后更改为 "ul.navMenu {..." 然后更改为 "navMenu {.." ant 然后返回 ".navMenu { ...”代码有效! ????????????这似乎是一个错误。
  • ... 现在它又停止工作了。 :( :( :(

标签: sass webpack-dev-server webpack-4


【解决方案1】:

我建议您将测试拆分为 css 和 scss 文件。

在您的代码中,您将 sass-loader 用于 css。而是使用这样的东西:

{
    test: /\.css$/,
    include: 'path-to-css-files',
    use: [
      MiniCssExtractPlugin.loader,
      'css-loader'
    ],
},

{
    test: /\.(sa|sc)ss$/,
    exclude: 'path-to-css-files',
    use: [
      MiniCssExtractPlugin.loader,
      'css-loader',
      'sass-loader'
    ],
},

【讨论】:

  • 谢谢!那 - 随着将 webpack 更新到版本 4.16.5 + riunning yarn upgrade 似乎解决了这个问题!快乐的露营者! :D
猜你喜欢
  • 1970-01-01
  • 2018-12-07
  • 2021-05-27
  • 2015-11-04
  • 2020-03-27
  • 2018-05-01
  • 2017-10-16
  • 2019-12-19
  • 1970-01-01
相关资源
最近更新 更多