Webpack с пакетом Thridparty

я хочу предоставить пакет веб-пакетов, который содержит все распространенные сторонние поставщики (angular 1.4, jQuery и некоторые другие библиотеки).

В настоящее время разработаны следующие модули

  • Модуль А
  • Модуль поставщика

Модуль продавца:

Создайте простой модуль со всеми сторонними библиотеками (angular 1.4, jQuery и некоторыми другими библиотеками)

webpack.config.js:

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

module.exports = {
        entry: {
            vendor: './index.js',
        },
        output: {
            // filename: '[chunkhash].[name].js',
            filename: '[name].js',
            path: path.resolve(__dirname, 'dist')
        },
        plugins: []
    }

index.js:

require('jquery');
require('angular');

Модуль А:

index.js:

var angular = require('angular');
var myJQ = require('jQuery');
var app = angular.module("Test", []);

console.log("Angular Boostrap");
console.log(app);
console.log("jQuery Boostrap");
console.log(myJQ);

webpack.config.js:

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

module.exports = {
        entry: {
            main: './index.js',
        },
        externals: {
            angular: 'angular',
            "jQuery": {
                root: '$',
                commonjs: 'jquery',
                amd: 'jquery'
            }
        },
        output: {
            filename: '[name].js',
            path: path.resolve(__dirname, 'dist')
        },
        plugins: []
    }

Модуль A index.js может потребовать «угловой», и я вижу правильный вывод, но требование от «jquery» не удалось с ошибкой.

У меня в голове два вопроса.

  1. Каков общий способ включения сторонних поставщиков?
  2. Что не так с jquery в модуле A index.js

Спасибо.


person TedoDec    schedule 23.02.2017    source источник


Ответы (1)


  1. Лучший способ включить сторонних поставщиков — это DllPlugin. Он делает именно то, что вы хотите, разделяя ваше приложение на два пакета. Таким образом, процесс сборки будет быстрым, независимым, и у вас не будет ограничений в вашем приложении, потому что dllPlugin соединяет оба пакета. К сожалению, пока нет документации по dllPlugin в документации webpack v2, но есть туториалы, такие как https://robertknight.me.uk/posts/webpack-dll-plugins/

  2. Я думаю, это зависит от того, какой jQuery вы используете. Если jQuery автоматически показывает себя в окне, попробуйте

    externals: { jQuery: 'window.jQuery' }
    
person p0wl    schedule 23.02.2017