Webpack不加载库样式

h9a6wy2h  于 2023-10-19  发布在  Webpack
关注(0)|答案(1)|浏览(199)

`我在React项目中使用webpack,我安装的外部npm包没有加载它们的样式(例如react-slick)。很明显,样式没有加载并进入DOM。
这是我的webpack.config.js

  1. const HtmlWebpackPlugin = require("html-webpack-plugin");
  2. const webpack = require("webpack");
  3. module.exports = {
  4. mode: "development",
  5. resolve: {
  6. extensions: [".js", ".jsx"],
  7. },
  8. module: {
  9. rules: [
  10. {
  11. test: /\.css$/i,
  12. use: ["style-loader", "css-loader"],
  13. },
  14. {
  15. test: /\.jsx?$/,
  16. loader: "babel-loader",
  17. },
  18. ],
  19. },
  20. plugins: [
  21. new HtmlWebpackPlugin({
  22. template: "./src/index.html",
  23. }),
  24. new webpack.DefinePlugin({
  25. "process.env": {
  26. NODE_ENV: JSON.stringify("development"),
  27. REACT_APP_API_URL: JSON.stringify(process.env.REACT_APP_API_URL),
  28. },
  29. }),
  30. ],
  31. devServer: {
  32. historyApiFallback: true,
  33. },
  34. externals: {
  35. // global app config object
  36. config: JSON.stringify({
  37. apiUrl: "http://localhost:3000",
  38. }),
  39. },
  40. };

我尝试在配置中添加不同的加载器,如:css-loader、style-loader和babel-loader`

p3rjfoxz

p3rjfoxz1#

  • react-slick* 库没有内置样式。作为文档says,您应该使用 slick-carousel 包安装其样式(或编写您自己的样式)。

我只需要在样式导入之前删除波浪号(~):

  1. import "slick-carousel/slick/slick.css";
  2. import "slick-carousel/slick/slick-theme.css";

我没有在提供的webpack配置中做任何更改,样式也按预期加载。
我使用的完整示例:

  1. import React from "react";
  2. import { createRoot } from "react-dom/client"
  3. import Slider from "react-slick";
  4. import "slick-carousel/slick/slick.css";
  5. import "slick-carousel/slick/slick-theme.css";
  6. const root = createRoot(document.getElementById("app"));
  7. const settings = {
  8. dots: true,
  9. infinite: true,
  10. speed: 500,
  11. slidesToShow: 1,
  12. slidesToScroll: 1
  13. };
  14. const SimpleSlider = () => {
  15. return (
  16. <div>
  17. <h2> Single Item</h2>
  18. <Slider {...settings}>
  19. <div>
  20. <h3>1</h3>
  21. </div>
  22. <div>
  23. <h3>2</h3>
  24. </div>
  25. </Slider>
  26. </div>
  27. );
  28. }
  29. root.render(<SimpleSlider />);
展开查看全部

相关问题