Webpack 未加载 css
Webpack not loading css
这是我第一次尝试设置 Webpack,所以我确定我在这里遗漏了一些东西。
我正在尝试使用 Webpack 加载我的 PostCSS 文件,使用 ExtractTextPlugin 将 css 文件生成到 "dist"。问题是 Webpack 似乎没有获取 css 文件。它们在 "client/styles" 下,但我尝试将它们移动到 "shared",结果相同。
我 运行 使用 --display-modules 选项的 Webpack,并验证那里没有 css 文件显示。
我试过 运行 它没有提取文本插件,结果是一样的: CSS 没有内置到 bundle.js.
这是我的产品配置:
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;
}
有人知道为什么会这样吗?我错过了什么吗?
谢谢
所以,在用头撞墙三个小时后,我终于明白了。我希望这对将来的人有所帮助。
我需要做的就是将 './client/styles/main.css'
添加到入口点。嗯。
因为您使用的是 style-loader 和 css-loader。您可以在 js 文件本身中包含 css。您可以在使用样式的 javascript 文件中仅 require(style.css)
或 import 'style.css'
(如果使用 ES6)。无需为 css.
提供 webpack 的入口点
希望对您有所帮助。
与 OP 的问题没有直接关系,但这是我的问题(我的 CSS 也没有加载)。
就个人而言,我缺少 style-loader
包:https://webpack.js.org/guides/hot-module-replacement/#hmr-with-stylesheets
在我的案例中,它与 react-hot-loader 有关。我正在使用 webpack.HotModuleReplacementPlugin() 并在我的编辑器中删除它后 CSS 开始工作。
对我来说,我的 package.json 中有 "sideEffects": false
,这导致 webpack 无法发出 CSS。
这是我第一次尝试设置 Webpack,所以我确定我在这里遗漏了一些东西。
我正在尝试使用 Webpack 加载我的 PostCSS 文件,使用 ExtractTextPlugin 将 css 文件生成到 "dist"。问题是 Webpack 似乎没有获取 css 文件。它们在 "client/styles" 下,但我尝试将它们移动到 "shared",结果相同。
我 运行 使用 --display-modules 选项的 Webpack,并验证那里没有 css 文件显示。
我试过 运行 它没有提取文本插件,结果是一样的: CSS 没有内置到 bundle.js.
这是我的产品配置:
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;
}
有人知道为什么会这样吗?我错过了什么吗?
谢谢
所以,在用头撞墙三个小时后,我终于明白了。我希望这对将来的人有所帮助。
我需要做的就是将 './client/styles/main.css'
添加到入口点。嗯。
因为您使用的是 style-loader 和 css-loader。您可以在 js 文件本身中包含 css。您可以在使用样式的 javascript 文件中仅 require(style.css)
或 import 'style.css'
(如果使用 ES6)。无需为 css.
希望对您有所帮助。
与 OP 的问题没有直接关系,但这是我的问题(我的 CSS 也没有加载)。
就个人而言,我缺少 style-loader
包:https://webpack.js.org/guides/hot-module-replacement/#hmr-with-stylesheets
在我的案例中,它与 react-hot-loader 有关。我正在使用 webpack.HotModuleReplacementPlugin() 并在我的编辑器中删除它后 CSS 开始工作。
对我来说,我的 package.json 中有 "sideEffects": false
,这导致 webpack 无法发出 CSS。