![](/img/trans.png)
[英]Unable to load styles using MiniCssExtractPlugin in Webpack 4 for Wordpress
[英]Styles not inserted into HEAD using Webpack MiniCssExtractPlugin with Create React App
我正在使用 create-react-app 使用 Storybook JS 创建组件库。 目的是发布 NPM package,这些组件可用于其他项目。 SASS 用于这个库,定义了全局变量并导入到src/index.js
文件中。
我正在测试我的 NPM package,并尝试将它与 Webpack V4 捆绑在一起。 在另一个本地项目上使用npm link
已半成功。 但是,我遇到了 MiniCssExtractPlugin 的问题,其中 styles 根本没有插入到该项目的 HEAD 中。
SASS 样式表被转换为 CSS 并添加到我的组件库项目的dist/
文件夹中,没有任何问题。 但是,当通过 NPM package 将组件导入我的其他项目时,这些不会在任何地方应用,例如import { Button } from '@my-account/components';
使用 style-loader 时,我的开发环境没有问题,并且 styles 使用<style>
标签直接插入到 DOM 中。 我确定我一定遗漏了一些东西,但我觉得我已经用尽了一切来尝试诊断这个。 create-react-app 与此插件不兼容吗? 还是 styles 没有通过 NPM 包自动注入到项目的 HEAD 中?
如果我将文件从 NPM package 导入到我的本地项目中,则样式确实有效,例如import '@my-account/components/dist/main.cd2be00655e79c5077cb.css';
- 但是,如果定期更新 styles 并且文件在其名称中使用 hash,这似乎无法维护?
我尝试添加 HtmlWebpackPlugin 来创建 index.html 文件,但这并没有解决问题。
任何帮助将不胜感激!
webpack.config.prod.js
const path = require('path');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
module.exports = {
mode: 'production',
devtool: 'source-map',
entry: './src/index.js',
output: {
path: path.resolve('dist'),
filename: 'index.js',
libraryTarget: 'commonjs2'
},
module: {
rules: [
{
test: /\.js?$/,
exclude: /(node_modules)/,
use: 'babel-loader',
}
],
rules: [
{
test: /\.scss$/,
sideEffects: true,
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: {
sourceMap: true
}
},
{
loader: 'sass-loader',
options: {
sourceMap: true
}
},
{
loader: 'sass-resources-loader',
options: {
resources: require(path.join(process.cwd(), 'src/assets/sass/WebpackStyles.js')),
hoistUseStatements: true
}
}
],
},
]
},
resolve: {
extensions: ['.js'],
},
plugins: [
new CleanWebpackPlugin(),
new MiniCssExtractPlugin({
filename: '[name].[hash].css'
})
]
};
组件库通常需要与 js 一起导入 css 才能正常工作。 如果您将插件更新为:
new MiniCssExtractPlugin({
filename: '[name].css'
})
然后,您可以指示您的库的使用者添加import '@my-account/components/dist/main.css'
,这更容易理解。 我不确定是否有一种神奇的方法可以让 styles 在您的消费者中没有广泛的自定义 webpack 装载机出现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.