Как настроить настроить загрузку модулей webpack?
Пробую настроить самостоятельно webpack первый раз на старом проекте, и не могу понять почему не грузится ничего кроме html, выдает ошибки при запуске:
Refused to apply style from 'http://localhost:8080/pages/index.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.
Также 404 для скрипта и пикчей
webpack.config.js:
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const webpack = require('webpack')
module.exports = {
mode: 'development',
entry: {
main: path.resolve(__dirname, './scripts/index.js'),
},
output: {
path: path.resolve(__dirname, './dist'),
filename: 'index.bundle.js',
},
plugins: [
new HtmlWebpackPlugin({
title: 'webpack Boilerplate',
template: path.resolve(__dirname, './index.html'),
filename: 'index.html',
inject: false
}),
new CleanWebpackPlugin(),
new webpack.HotModuleReplacementPlugin(),
],
devServer: {
static: {
directory: path.join(__dirname, 'public'),
},
compress: true,
port: 8080,
hot: true
},
module: {
rules: [
{
test: /\.(css)$/,
use: ['style-loader', 'css-loader']
},
]
}
}
Подключение css:
<link rel="stylesheet" href="../pages/index.css">
Подключение JS:
<script type="module" src="../scripts/index.js"></script>
В Css файле только импорты модулей css, и ничего более
PS Делал все это, собирая инфу из нескольких разных туториалов, поэтому уже совсем потерялся где может быть ошибка
Ответы (1 шт):
HtmlWebpackPluginсам подключает js, удалите в шаблоне<script type="module" src="../scripts/index.js"></script>.css-loaderинтегрирует css в html (создает тэг<style>с вашим CSS), если вы хотите упаковывать css в отдельный файл, то вместоstyle-loaderиспользуйте MiniCssExtractPlugin.- В html шаблоне удалите
<link rel="stylesheet" href="../pages/index.css">, т.к. дляcss-loaderподключение файла не требуется, а MiniCssExtractPlugin сам подключит css файл. CleanWebpackPluginутратил свою актуальность, достаточно в output добавитьclean: true
p.s.
Обратите внимание, что в output имя бандла index.bundle.js, а подключить вы пытаетесь index.js, в целом, см. п. 1.
Делал все это, собирая инфу из нескольких разных туториалов, поэтому уже совсем потерялся где может быть ошибка
У вебпака есть официальная документация и гайды.