css - 在 Webpack 5 中转换 SCSS 文件而不是 CSS 文件的正确方法
问题描述
我有两个样式表入口点。
src/css/preprocess.scss
src/css/skippreprocessing.css
我希望我的 Webpack 5 项目预处理SCSS
文件,而不是CSS
文件——我希望CSS
文件按原样发布到dist
文件夹中。
我在下面列出了我的最佳猜测。但它有问题;它打破了热重载。或者更确切地说,热重载仅适用于未预处理的文件。这就像两条规则以某种方式联系在一起(我猜是因为共享的 MiniCssExtractPlugin)。
所以我想知道,让这两个规则(处理 CSS 文件和 SCSS 文件)被视为完全独立的事情的正确方法是什么。
(注意:在我的实际情况中,我也在编译 JS 文件,但为了简洁起见,我删除了下面的那些。)
我最好的猜测
const webpack = require('webpack');
const path = require('path');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
target: 'web',
entry: {
preprocess: [
'./src/css/preprocess.scss',
],
skippreprocessing: [
'./src/css/skippreprocessing.css',
]
},
output: {
path: path.resolve(__dirname, './dist'),
filename: '[name].min.js',
},
module: {
rules: [
{
test: /\.css$/,
exclude: /node_modules/,
use: [
MiniCssExtractPlugin.loader,
'css-loader',
],
},
{
test: /\.scss$/,
exclude: /node_modules/,
use: [
MiniCssExtractPlugin.loader,
'css-loader',
'postcss-loader',
'sass-loader'
],
}
]
},
plugins: [
new MiniCssExtractPlugin({
filename: '[name].css',
}),
new HtmlWebpackPlugin({
template: path.resolve(__dirname, './src/index.html'),
filename: 'index.html',
minify: false,
}),
],
devServer: {
static: {
directory: path.resolve(__dirname, './dist'),
},
hot: true,
port: 8080,
},
};
解决方案
推荐阅读
- android - 无法获取“http://jcenter.bintray.com/com/google/jimfs/jimfs/1.1/jimfs-1.1.pom”。从服务器收到状态码 403:Forbidden
- python - 如何使用 Python 正确编辑 PDF 文件?
- python - list 的列表理解作为 any 函数的输入的原因是什么?
- kdb - 基于 vars 的值构建的解析树
- python - python - 如何使用Python中的字典找到值总和等于或大于k的键的可能组合?
- javascript - 将对象与对象解构和旋转运算符相结合
- php - 在 Directus 中直接访问外部 PHP 脚本的数据
- javascript - NextJS 与 url 名称不同的页面名称
- c - Doxygen 无法扩展 AUTOSAR 宏
- javascript - 如何检测 JS for 循环中的状态变化?