У меня есть проект nodejs. Я новичок в этом, поэтому я прошу немного терпения. Я хотел бы, чтобы мои файлы .scss были перенесены в .css и извлечены из [name].scss
в [name].css
.
Я настроил веб-пакет для поиска каждого * .scss файла с glob.sync(...)
, и эта часть работает. Я также настроил MiniCssExtractPlugin
для извлечения вывода в файл .css
.
Тем не менее, по какой-то причине я получаю только 1 выходной файл (строго говоря, 2, потому что я также получаю файл main.js), называемый main.css
, со всеми полями .scss, объединенными в нем.
Я искал всевозможные учебные пособия, но я не совсем понимаю концепцию здесь, поэтому я спрашиваю и здесь. Моя конфигурация веб-пакета выглядит следующим образом:
const CopyPlugin = require('copy-webpack-plugin');
const glob = require('glob');
module.exports = {
entry: glob.sync("./src/**/*.scss"),
output: {
path: __dirname + "/dist",
publicPath: "/",
filename: "[name].[chunkhash].js"
},
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
loader: 'babel-loader'
},
{
test: /\.ts$/,
exclude: /node_modules/,
loader: 'ts-loader'
},
{
test: /\.(woff|woff2|eot|ttf|svg|otf)$/,
use: [{
loader: 'file-loader',
options: {
name: '[name].[ext]',
outputPath: 'fonts/'
}
}]
},
{
test: /\.html$/,
use: [
{
loader: 'file-loader',
options: {
name: '[path][name].[ext]',
context: 'src'
},
},
],
},
{
test: /\.(scss|css)$/,
exclude: /node_modules/,
use: [{
loader: MiniCssExtractPlugin.loader,
}, {
loader: 'css-loader',
}, {
loader: 'postcss-loader',
options: {
plugins: function () {
return [
require('autoprefixer')
];
}
}
}, {
loader: 'sass-loader' // compiles Sass to CSS
}]
}
]
},
resolve: {
extensions: ['.js', '.jsx', '.ts']
}
mode: "production",
plugins: [
new MiniCssExtractPlugin({
filename: '[name].css',
chunkFilename: '[id].css',
})
]
};