GitHub: https://github.com/Chirag161198/react-boilerplate 1
Вот шаблон реакции, который я пытаюсь создать с нуля. Я связал html с кодом реакции, но я не могу добавлять стили (CSS). Я слышал об ExtractTextPlugin, но не могу его настроить. Пожалуйста, предложите какой-нибудь способ добавить к нему стили.
Заранее спасибо.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вам нужно использовать style-loader и css-loader в вашем webpack.config.js
Сначала установите эти два пакета через npm:
npm install style-loader, css-loader --dev
Затем создайте styles.css в папке src и добавьте в файл следующие стили (только для демонстрации, чтобы вы знали, что он работает правильно):
body {
background-color: #ff4444;
}
Не забудьте импортировать файл css в свой src / index.js:
import React from 'react';
import ReactDOM from 'react-dom';
import App from './components/App.js';
import './styles.css'; // <- import the css file here, so webpack will handle it when bundling
ReactDOM.render(<App />, document.getElementById('app'));
И используйте style-loader и css-loader в вашем webpack.config.js:
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
entry: './src/index.js',
output: {
path: path.join(__dirname, 'dist'),
filename: 'bundle.js',
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: { loader: 'babel-loader' },
},
{
test: /\.css$/,
use: ['style-loader', 'css-loader'],
},
],
},
plugins: [
new HtmlWebpackPlugin({
template: './src/index.html',
}),
],
};
Если вы не видите правильного вывода, возможно, вам придется снова перезапустить сервер webpack dev. Я клонировал ваше репо и внес изменения, как я упоминал выше, это работает.
Что касается ExtractTextPlugin, он вам понадобится при объединении для производственной сборки, вы можете узнать больше из их Репо
Надеюсь, поможет!
Hi Chirag ExtractTextPlugin отлично работает, но когда дело доходит до кеширования и хеширования пакетов. Пакет css становится 0 байт. Поэтому они представили MiniCssExtractPlugin, который решил эту проблему. Очень важно кэшировать статические файлы, поскольку размер вашего приложения со временем увеличивается.
сначала импортировать плагин:
var MiniCssExtractPlugin = require("mini-css-extract-plugin");
добавьте их в конфигурацию вашего веб-пакета:
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader'
}
},
{
test: /\.scss$/,
use: [ 'style-loader', MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader']
}
]
}
plugins: [
new MiniCssExtractPlugin({
filename: 'style.css',
}),
new HtmlWebpackPlugin({
template: './src/index.html',
}),
Сообщите мне, что проблема не устранена.
Можете ли вы сказать мне, почему вы добавили параметр имени файла в HtmlWebpackPlugin?
По умолчанию webpack записывает HTML в index.html, но в случае, если нам нужно указать другой каталог для внедрения index.html, мы указываем имя файла
Когда я использовал то же самое, что и выше, он выдавал ошибку при сборке npm run, но когда я удалил параметр имени файла из HtmlWebpackPlugin, он отлично собрал.
Поскольку мой каталог сборки находится за пределами каталога src. Вам не нужно его настраивать.
Наверное, нужно посмотреть плагин
node-sass