Solution UMD / AMD
Pour ceux qui le font via UMD et compilent via require.js
, il existe une solution laconique.
Dans le module, qui nécessite tether
comme dépendance, qui se charge en Tooltip
tant qu'UMD, devant la définition du module, il suffit de mettre un court extrait sur la définition de Tether:
// First load the UMD module dependency and attach to global scope
require(['tether'], function(Tether) {
// @todo: make it properly when boostrap will fix loading of UMD, instead of using globals
window.Tether = Tether; // attach to global scope
});
// then goes your regular module definition
define([
'jquery',
'tooltip',
'popover'
], function($, Tooltip, Popover){
"use strict";
//...
/*
by this time, you'll have window.Tether global variable defined,
and UMD module Tooltip will not throw the exception
*/
//...
});
Ce court extrait au tout début, peut en fait être placé à n'importe quel niveau supérieur de votre application, la chose la plus importante - pour l'invoquer avant l'utilisation réelle des bootstrap
composants avec Tether
dépendance.
// ===== file: tetherWrapper.js =====
require(['./tether'], function(Tether) {
window.Tether = Tether; // attach to global scope
// it's important to have this, to keep original module definition approach
return Tether;
});
// ===== your MAIN configuration file, and dependencies definition =====
paths: {
jquery: '/vendor/jquery',
// tether: '/vendor/tether'
tether: '/vendor/tetherWrapper' // @todo original Tether is replaced with our wrapper around original
// ...
},
shim: {
'bootstrap': ['tether', 'jquery']
}
UPD: Dans Boostrap 4.1 Stable, ils ont remplacé Tether , par Popper.js , voir la documentation sur l'utilisation .