微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mini-css-extract-plugin:仅在导入 JS 文件时导入 CSS 文件

如何解决mini-css-extract-plugin:仅在导入 JS 文件时导入 CSS 文件

我正在使用 webpack@5.24.2 和 mini-css-extract-plugin@1.3.9 在 React 中制作一个摇树组件库,它必须适用于客户端渲染和服务器端渲染。我希望能够执行以下操作,在库中创建“N”个组件,每个组件都有其特定的“SCSS”文件,如下所示:

// KhalComponent.tsx
import React from 'react';
import './KhalComponent.scss';

const KhalComponent = () => {
  return <div className="khal-component">Khal Component</div>;
};

export default KhalComponent;

// KhalComponent.scss
.khal-component {
  padding: 2rem;
  background: red;
}

当外部项目执行以下操作时: import KhalComponent from 'some-library/KhalComponent'获取组件及其样式。我有这个与 style-loader 一起工作,但我读过这不是生产的正确配置,它不与 SSR(使用 NextJS)一起工作,因为它试图注入样式使用 document.createElement 添加它们(服务器端不存在文档)。所以我尝试迁移到使用 style-loader 来实现这个客户端和服务器端。我看到 mini-css-extract-plugin 确实创建了单独的 CSS 文件,但是(据我所知)它不会让相应的 JS 文件(KhalComponent.js)知道它需要在导入 KhalComponent 时加载 CSS另一个项目。

我没有在这个外部组件库中生成 HTML 文件,因为它只是为了导入组件 JS 和 CSS 内容

webpack 配置如下:

mini-css-extract-plugin

const path = require('path'); const { CleanWebpackPlugin } = require('clean-webpack-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const entries = require('./entries'); const LIB_NAME = 'lib'; module.exports = { entry: entries,output: { filename: '[name].js',path: path.resolve(__dirname,LIB_NAME),},plugins: [new CleanWebpackPlugin(),new MiniCssExtractPlugin()],module: { rules: [ { test: /\.s?css$/,use: [MiniCssExtractPlugin.loader,'css-loader','sass-loader'],{ test: /\.jsx?$/,exclude: /node_modules/,use: ['babel-loader'],],externals: [ { react: 'react','react-dom': 'react-dom',resolve: { extensions: ['.js','.jsx','.ts','.tsx'],devtool: 'source-map',devServer: { contentBase: './lib',hot: true,}; 是:

entries.js

我缺少什么或我应该使用什么工具来做到这一点?预先非常感谢您!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。