Webpack: wyrażanie zależności modułu

Próbuję require modułu bootstrap-webpack w mojej aplikacji webpacked.

Wydaje się, że potrzebuje jQuery, ponieważ dołączony javascript rzuca następujące:

Uncaught ReferenceError: jQuery is not defined

Jak określić w webpacku, że jQuery jest zależnością dla modułu bootstrap-webpack, aby rozwiązać ten problem? Wydaje mi się, że to powinno być banalne, ale staram się to rozgryźć.

Próbowałem dodać:

"jquery": "latest"

Do dependecies w bootstrap-webpack ' s package.json, ale to nie zadziałało. Dokumentacja jest niekompletna i niewiele mogę znaleźć na ten temat. To powinno być trywialne, prawda? Pomocy!

Author: eye_mew, 2014-11-05

2 answers

Istnieją dwa możliwe rozwiązania:

Użyj ProvidePlugin: skanuje kod źródłowy pod kątem podanego identyfikatora i zastępuje go odniesieniem do danego modułu, tak jak było to wymagane.

// webpack.config.js
module.exports = {
    ...
    plugins: [
        new webpack.ProvidePlugin({
           $: "jquery",
           jQuery: "jquery"
       })
    ]
};

Użyj imports-loader: daje możliwość przygotowania preparatów typu require().

// webpack.config.js
{
    ...
    module: {
        loaders: [
            { test: require.resolve("jquery"), loader: "imports?jQuery=jquery" }
        ]
    }
}

W takim przypadku musisz uruchomić npm install imports-loader --save przed.

 50
Author: Johannes Ewald,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-05 19:59:38

Poprzez ten problem z githubem .

Zainstaluj expose-loader i dodaj require('expose?$!expose?jQuery!jquery'); do głównego punktu wejścia tuż przed wymaganiem webpack-bootstrap.

To ustawi jQuery w oknie, aby każdy plik mógł się do niego dostać. Bądź ostrożny z tą metodą wszystkie pliki będą miały dostęp do tej wersji jQuery niezależnie od tego, czy było to jawnie wymagane.

 10
Author: Derek Dahmer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-21 04:29:20