Puis-je utiliser un ES6/2015 module d'importation de définir une référence dans le "global" de la portée?

J'ai cette situation où je suis en train d'importer une bibliothèque existante, que je vais appeler troublesome (à l'aide de Webpack/Babel FWIW) et il a une référence mondiale pour jQuery dans lequel je suis en train de les résoudre à l'aide du module de la syntaxe.

J'ai importé avec succès jquery dans le "local" champ d'application d'un module, via:

import jQuery from 'jquery'

j'ai donc essayé:

import jQuery from 'jquery'    
import 'troublesome'

mais peut-être pas étonnant, j'obtiens quelque chose comme jQuery is not a function coup de pied arrière de troublesome.js

J'ai essayé ceci:

System.import('jquery')
.then(jQuery => {
    window.jQuery = jQuery
})
import 'troublesome'

mais, il s'avère que System.import est de la partie, soi-disant, 'module loader' spec, qui a été retiré de l'es6/2015 specs, de sorte qu'il n'est pas fourni par Babel. Il y a un poly-remplir, mais Webpack ne serait pas en mesure de gérer la dynamique des importations réalisées via des appels à System.import de toute façon.

mais... si je l'appelle, les fichiers de script dans index.html comme:

<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/troublesome/troublesome.js"></script>
<script src="the-rest-of-my-js.js"></script>

la référence à jQuery est résolu dans troublesome.js et les choses sont bonnes,
mais je préfère éviter la balise de script route comme webpack n'est pas gérer ceux-ci.

Peut-on recommander un décent stratégie pour faire face à de tels scénarios?

mise à jour

avec quelques conseils de @TN1ck, j'ai été finalement en mesure d'identifier un Webpack centrée sur la solution, en utilisant la importations-chargeur

La configuration de cette solution ressemble à quelque chose comme ceci:

  //...
  module: {
    loaders: [
      //...
      {
        test: require.resolve('troublesome'),
        loader: "imports?jQuery=jquery,$=jquery"
      }
    ]
  }
  • Êtes-vous juste essayer de faire de jquery disponible dans troublesome?
  • Avez-vous essayez d'assigner jQuery pour objet de fenêtre? Si la fenêtre.jQuery = jQuery?
  • jquery doit être dans le format approprié afin que vous puissiez importer comme ça. En d'autres termes, vous devrez peut-être modifier votre local jquery et de l'exporter en tant que ES6 module.
InformationsquelleAutor tony_k | 2015-07-03