Webpack: не производит ожидаемых пакетов - PullRequest
0 голосов
/ 17 сентября 2018

Ну, как следует из названия, webpack не производит то, что я ожидаю.

Вот мой конфиг:

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

const extractPlugin = new ExtractTextPlugin({
    filename: 'main.css',
});

process.env.NODE_ENV = 'production';

module.exports = {
    entry: {
        main: './src/main.js',
        algo: './src/algo.js',
    },
    entry: './src/main.js',
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: '[name].js',
    },
    module: {
        rules: [
            {
                test: /\.js$/,
                use: [
                    {
                        loader: 'babel-loader',
                        options: {
                            presets: ['es2015'],
                        }
                    }
                ],
            },
            {
                test: /\.scss$/,
                use: extractPlugin.extract({
                    use: [
                        'css-loader',
                        'sass-loader',
                    ]
                })
            },
            {
                test: /\.html$/,
                use: ['html-loader']
            },
            {
                test: /\.php$/,
                use: [
                    {
                        loader: 'file-loader',
                        options: {
                            name: '[path][name].[ext]',
                            outputPath: '/'
                        }
                    }
                ]
            },
            {
                test: /\.(jpg|png|gif|jpeg)$/,
                use: [
                    {
                        loader: 'file-loader',
                        options: {
                            name: '[path][name].[ext]',
                            outputPath: 'images/',
                        }
                    }
                ]
            }
        ],
    },
    resolve: {
        alias: {
            vue: 'vue/dist/vue.min'
        }
    },
    plugins: [
        extractPlugin,
        new HtmlWebpackPlugin({
            template: 'src/index.html',
            filename: 'index.html',
            chunks: ['main'],
        }),
        new HtmlWebpackPlugin({
            template: 'src/algo.html',
            filename: 'algo.html',
            chunks: ['algo']
        }),

        new CleanWebpackPlugin([
            'dist',
        ]),
        new webpack.ProvidePlugin({
            $: 'jquery',
            jQuery: 'jquery',
            Vue: 'vue',
        }),
        new CopyWebpackPlugin([
            {
                from: 'src/*.php',
                to: '[name].[ext]',
                test: /\.php$/
            }
        ]),
    ],
    mode: 'production',
};

И main.js, и algo.js - это просто набор@import 'something' s (Пожалуйста, дайте мне знать, если это хорошая практика в комментарии).

Я хочу вставить получившиеся пакеты, main.js и algo.js, чтобы перейти в index.html и algo.html соответственно.

Однако, до сих пор он производил только main.js для index.html.

Ранее output был следующим:

output: {
    path: path.resolve(__dirname, 'dist'),
    filename: '[name].js',
},

Однако это тоже не сработало.

Может ли кто-нибудь помочь мне достичь желаемого результата?

1 Ответ

0 голосов
/ 17 сентября 2018

Вы указали entry дважды в своей конфигурации:

entry: {
    main: './src/main.js',
    algo: './src/algo.js',
},
entry: './src/main.js',

Второй entry здесь перезаписывает первое , что означает, что вынастроили только ./src/main.js.

...