упаковать несколько записей, определить jquery как внешний для одной записи - PullRequest
0 голосов
/ 06 марта 2019

я использовал webpack для сборки js в одном из моих приложений (о чем я действительно сожалею, но это уже история), и мне нужно было определить 2 точки входа в конфигурации webpack, потому что webpack на самом деле не работает с gulp (gulp - моя задачабегун для строительства) и делает свое дело.

Я получил:

  • app.js
  • map.js

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

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

Но по какой-то причине веб-пакеты считают себя умнее и импортируют jquery в любом случае.

Я решил, что правильным способом избежать этого будет внешний раздел в конфигурации веб-пакета, нокак бы настроить его так, чтобы он определял только jquery как внешний для map.js, а НЕ app.js

Итак, вот мой конфиг веб-пакета

const webpack = require('webpack');
const path = require('path');

var config = {
    entry: {
        app: './src/js/app.js',
        map: './src/js/map.js'
    },
    output: {
        filename: '[name].js',
        path: __dirname + '/public/static/js'
    },
    devtool: 'source-map',
    module: {
        loaders: [
            {
                test: /.js$/,
                loader: 'babel-loader',
                exclude: /node_modules\/easy-autocomplete/,
                query: {
                    presets: [
                        'es2015',
                        'react',
                        'flow',
                    ],
                    'cacheDirectory': true
                }
            }
        ]
    },
    plugins: [
        new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), // @see https://github.com/jmblog/how-to-optimize-momentjs-with-webpack
        new webpack.ProvidePlugin({
            $: "jquery",
            jQuery: "jquery",
            "window.$": "jquery",
            "window.jQuery": "jquery"
        }),
    ],
    resolve: {
        modules: [
            'node_modules',
            path.resolve(__dirname, 'src/js'),
        ],
        alias: {
            'react': 'preact-compat',
            'react-dom': 'preact-compat',
        }
    }
};

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