clean-webpack-plugin принимает только объект параметров - PullRequest
4 голосов
/ 15 марта 2019

Я получаю

Ошибка: clean-webpack-plugin принимает только объект параметров. Увидеть: https://github.com/johnagan/clean-webpack-plugin#options-and-defaults-

Мой файл Webpack.config.js выглядит так:

const path = require('path');
const webpack = require('webpack');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');

var plugins = [
    new CleanWebpackPlugin(['dist'], {}),
    new webpack.optimize.DedupePlugin(),
    new webpack.optimize.OccurenceOrderPlugin(),
    new CopyWebpackPlugin([{
        from: './src/images/',
        to: './images/'
    }]),
    new HtmlWebpackPlugin({
        inject: false,
        template: 'src/index.html'
    })
];

var config = {
    entry: [
        './src/js/main.js'
    ],

    output: {
        path: path.join(__dirname, 'dist'),
        publicPath: '/',
        filename: 'js/bundle.js',
    },

    plugins: plugins.concat([
        new ExtractTextPlugin('css/bundle.css'),
        //new webpack.optimize.UglifyJsPlugin(require('./uglifyjs.json'))
    ]),
    devServer: {
        inline: true,
        port: 8080
    },

    module: {
        loaders: [{
            test: /\.jsx?$/,
            exclude: /node_modules/,
            include: path.join(__dirname, 'src'),
            loader: 'babel',
            query: {
                presets: ['react', 'es2015']
            }},
            {
                test: /.s?css$/,
                include: path.join(__dirname, 'src'),
                loader: ExtractTextPlugin.extract('style', [
                    'css?sourceMap',
                    'postcss',
                    'sass?sourceMap'
                ])
            },
            {
                test: /\.css$/,
                include: path.join(__dirname, 'node_modules'),
                loader: 'style!css'
            }
        ]
    },
    postcss: function() {
        return [
            require('autoprefixer')({
                browsers: ['last 2 versions']
            })
        ];
    }
}
module.exports = config;

Ответы [ 2 ]

5 голосов
/ 19 марта 2019

Как видно на странице , сообщение об ошибке ссылается , CleanWebpackPlugin не принимает два аргумента при передаче:

new CleanWebpackPlugin(['dist'], {}),

Вместо этого просто попробуйте

new CleanWebpackPlugin(),

если вам не нужно передавать какие-либо параметры.

Возможно, вы сталкиваетесь с этой проблемой, если, например, вы читаете более старый учебник, в котором используется другая версия плагина, и интерфейс тем временем изменился.

0 голосов
/ 14 июня 2019

Как упомянуто @AKX, новейшая версия clean-webpack-plugin больше не принимает аргумент массива.

Путь, который должен быть очищен, читается из output.path веб-пакета.В вашем примере кода это здесь:

output: {
  path: path.join(__dirname, 'dist'),
  // rest of code
},

Вы должны быть очень осторожны, потому что кто-то все еще использует шаблон, подобный этому:

output: {
  path: __dirname,
  filename: './dist/bundle.js'
},

Выше конфигурации приведет к удалению всех файлов в вашем проекте!

Если вам нужно удалить только некоторые файлы из output.path веб-пакета, вы должны установить поле cleanOnceBeforeBuildPatterns в объекте, переданном в конструктор CleanWebpackPlugin.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...