webpack.config.js
const webpack = require('webpack');
const path = require('path');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const fs = require('fs');
module.exports = {
mode: 'production',
context: path.resolve(__dirname, 'app'),
devServer: {
host: "www.mydomain.local",
compress: true,
https: {
key: fs.readFileSync('https.key'),
cert: fs.readFileSync('https.crt')
}
},
optimization: {
minimizer: [new UglifyJsPlugin({})],
},
entry: {
blog: path.resolve(__dirname, 'src', 'blog.js')
},
output: {
path: path.resolve(__dirname, 'web', '_assets'),
publicPath: path.resolve(__dirname, 'web', '_assets'),
filename: "js/[name].[hash].bundle.js"
},
plugins: [
new MiniCssExtractPlugin({
filename: "css/[name].[hash].bundle.css",
})
],
module: {
rules: [
{
test: /\.scss$/,
use: [
MiniCssExtractPlugin.loader,
"css-loader",
"sass-loader"
]
}
]
}
};
Как вы видите, у меня есть только одна запись в конфигурации "блог" веб-пакета, которая преобразуется в ./src/blog.js
с таким содержанием:
import('./css/blog.scss')
console.log(1)
Когда я запускаю webpack --config webpack.config.js
, он строит как положено ./web/_assets/js/blog.21342i1j4h1kj.bundle.js
, в котором есть console.log(1)
.
Однако странным является то, что он также создает ./web/_assets/js/1.21342i1j4h1kj.bundle.js
и ./web/_assets/css/1.21342i1j4h1kj.bundle.js
дополнительный JS-файл содержит
(window.webpackJsonp=window.webpackJsonp||[]).push([[1],[,function(n,w,o){}]]);
, а файл 1.css содержит скомпилированный sss to css css.
Мои вопросы:
- Почему существует дополнительный файл JS?
- Почему файл css не называется
blog.21342i1j4h1kj.bundle.css
?
- Как мне изменить конфигурацию, чтобы решить эту проблему?