web-dev-qa-db-fra.com

Cible de bibliothèque universelle Webpack 4

Selon la documentation Webpack 4 , si je spécifie libraryTarget: 'umd' , cela devrait entraîner la sortie suivante:

(function webpackUniversalModuleDefinition(root, factory) {
  if(typeof exports === 'object' && typeof module === 'object')
    module.exports = factory();
  else if(typeof define === 'function' && define.AMD)
    define([], factory);
  else if(typeof exports === 'object')
    exports["MyLibrary"] = factory();
  else
    root["MyLibrary"] = factory();
})(typeof self !== 'undefined' ? self : this, function() {
  return _entry_return_;
});

Cependant, ce que je reçois est:

(function webpackUniversalModuleDefinition(root, factory) {
    if(typeof exports === 'object' && typeof module === 'object')
        module.exports = factory();
    else if(typeof define === 'function' && define.AMD)
        define("lib", [], factory);
    else if(typeof exports === 'object')
        exports["lib"] = factory();
    else
        root["lib"] = factory();
})(window, function() {
return

Pour être plus précis, au lieu de cela
(typeof self !== 'undefined' ? self : this, function()
J'ai compris:
(window, function()

Cela (évidemment) provoque une erreur d'exécution window is undefined lors de l'importation dans un environnement de noeud.

Pour être clair:
Je sais que window n'existe pas dans les applications de nœuds. Ma question ne concerne pas cela, mais plutôt webpack .

Est-ce un bug ou est-ce que je manque quelque chose?

Ma configuration de sortie:

output: {
    path: resolve(__dirname, 'umd'),
    filename: 'lib.js',
    libraryTarget: 'umd',
    library: 'lib',
    umdNamedDefine: true,
},
19
JeB

Ce serait un bug dans Webpack 4 .
Webpack 3 produit un ensemble approprié.

Ce problème devrait être résolu avec la fonction this , jusqu'à ce que la solution de contournement suggérée utilise globalObject:

output: {
    path: resolve(__dirname, 'umd'),
    filename: 'lib.js',
    libraryTarget: 'umd',
    library: 'lib',
    umdNamedDefine: true,
    globalObject: `(typeof self !== 'undefined' ? self : this)`
},
26
JeB