Webpack не загружается css
Это мой первый раз, когда я пытаюсь настроить Webpack, поэтому я уверен, что что-то здесь не хватает.
Я пытаюсь загрузить свои файлы PostCSS с помощью Webpack, используя ExtractTextPlugin, чтобы сгенерировать файл css в "dist". Проблема в том, что Webpack, похоже, не берет css-файлы. Они находятся в разделе "клиент / стили", но я попытался переместить их в "общий доступ" с тем же результатом.
Я запустил Webpack с опцией --display-modules и убедился, что там нет файлов CSS.
Я попытался запустить его без плагина извлечения текста, и результат тот же: CSS не встроен в bundle.js.
Вот мой конфиг prod:
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var path = require('path');
module.exports = {
entry: [
'./client'
],
resolve: {
modulesDirectories: ['node_modules', 'shared'],
extensions: ['', '.js', '.jsx', '.css']
},
output: {
path: path.join(__dirname, 'dist'),
filename: 'bundle.js',
chunkFilename: '[id].js',
publicPath: '/'
},
module: {
loaders: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
loaders: ['babel']
},
{
test: /\.css?$/,
loader: ExtractTextPlugin.extract(
'style-loader',
'css-loader!postcss-loader'
),
exclude: /node_modules/
}
]
},
plugins: [
new ExtractTextPlugin('[name].css')
],
postcss: (webpack) => [
require('postcss-import')({ addDependencyTo: webpack, path: ['node_modules', 'client'] }),
require('postcss-url')(),
require('precss')(),
require('postcss-fontpath')(),
require('autoprefixer')({ browsers: [ 'last 2 versions' ] })
]
};
И вот пример моего основного файла CSS: @import 'normalize.css/normalize';
/* Variables */
@import 'variables/colours';
/* Mixins */
/* App */
/* Components */
body {
background-color: $black;
}
У кого-нибудь есть идея, почему это происходит? Я что-то пропустил?
Спасибо
5 ответов
Так как вы используете style-loader и css-loader. Вы можете включить css в сам файл js. Вы можете просто require(style.css)
или же import 'style.css'
(если использовать ES6) в файле JavaScript, который использует стили. Не нужно указывать точку входа в webpack для css.
Надеюсь, поможет.
Итак, после трех часов удара головой о стену, я наконец-то понял. Я надеюсь, что это поможет кому-то в будущем.
Все, что мне нужно было сделать, это добавить './client/styles/main.css'
к точкам входа. Yey.
Для меня у меня было
"sideEffects": false
в моем package.json, из-за чего webpack не выдавал CSS.
Не имеет прямого отношения к проблеме OP, но вот моя проблема (мой CSS тоже не загружался).
Лично мне не хватало
style-loader
пакет: https://webpack.js.org/guides/hot-module-replacement/#hmr-with-stylesheets
В моем случае это было связано с react-hot-loader. Я использовал webpack.HotModuleReplacementPlugin(), и после его удаления CSS в моем редакторе начал работать.