Webpack ошибка: конфигурации в разработку неизвестное свойство '
После обновления до последней версии webpack, я вижу эту ошибку:
WebpackOptionsValidationError: Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema.
- configuration has an unknown property 'postcss'. These properties are valid:
object { amd?, bail?, cache?, context?, dependencies?, devServer?, devtool?, entry, externals?, loader?, module?, name?, node?, output?, plugins?, profile?, recordsInputPath?, recordsOutputPath?, recordsPath?, resolve?, resolveLoader?, stats?, target?, watch?, watchOptions? }
For typos: please correct them.
For loader options: webpack 2 no longer allows custom properties in configuration.
Loaders should be updated to allow passing options via loader options in module.rules.
Вот мой webpack config, показывающий модуль postcss:
module: {
loaders: [
// JavaScript / ES6
{
test: /.js$/,
exclude: /node_modules/,
loader: 'babel-loader'
},
{
test: /.jsx?$/,
include: path.resolve(__dirname, '../src/components'),
exclude: /node_modules/,
loader: 'babel-loader'
},
// Sass
{
test: /.scss$/,
include: path.resolve(__dirname, '../src/sass'),
exclude: /node_modules/,
loader: 'style!css!postcss!sass'
},
// CSS
{
test: /.css$/,
loader: 'style!css!postcss'
},
// JSON
{
test: /.json$/,
exclude: /node_modules/,
loader: 'json-loader'
},
// Images
// Inline base64 URLs for <=8k images, direct URLs for the rest
{
test: /.(png|jpg|jpeg|gif|svg)$/,
loader: 'url',
include: [
path.resolve(__dirname, '../public'),
path.resolve(__dirname, '../src/sass')
],
exclude: /node_modules/,
query: {
limit: 8192,
name: 'images/[name].[ext]?[hash]'
}
},
// Fonts
{
test: /.(woff|woff2|ttf|eot)(?v=d+.d+.d+)?$/,
loader: 'url',
include: path.resolve(__dirname, '../src/sass'),
exclude: /node_modules/,
query: {
limit: 8192,
name: 'fonts/[name].[ext]?[hash]'
}
}
]
},
postcss: function() {
return [
autoprefixer({
browsers: ['last 2 versions']
})
];
}
1 ответ:
Исправление состоит в том, чтобы убедиться, что autoprefixer включен в верхней части файла, и переместить postcss в раздел plugins :
const autoprefixer = require('autoprefixer');
plugins: [ // Shared code new webpack.optimize.OccurrenceOrderPlugin(), new webpack.optimize.CommonsChunkPlugin({ name: 'vendor', filename: 'vendor.bundle.js', minChunks: Infinity }), new webpack.LoaderOptionsPlugin({ options: { context: __dirname, postcss: [ autoprefixer ] } }) ]