Qual è il modo migliore per includere un'estensione per una libreria comune come jQuery o Knockout con Browserify?Modo corretto per richiedere estensioni con browserify
Ad esempio, con un progetto come knockout-switch-case
, le variabili globali ko
(a eliminazione diretta) non vengono passate alla chiamata di definizione modulo.
Il codice AMD knockout-switch-case è:
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['knockout'], factory);
} else {
// Browser globals
factory(root.ko);
}
}(this, function(ko) {
dove aspetta ko
(KO) e 'un globale root
, che sarebbe normalmente essere window
ma quando si utilizza Browserify è Object {}
.
Ho provato con l'esempio utilizzando browserify-shim
con qualcosa di simile, ma non ha funzionato come previsto (anche se ha funzionato per knockout-mapping, che ha una migliore modulo-danza):
knockout:
path: VENDOR_PATH + '/knockout.js'
exports: 'ko'
depends:
jquery: '$'
mi sento come se dovessi trascurare qualcosa che deve essere abbastanza ovvio, poiché mi aspetto che questo sarebbe un modello di definizione del modulo abbastanza comune per includere qualsiasi jQuery, Knockout o qualsiasi altra estensione per una libreria che si basa su un globale. O forse questo è un problema abbastanza specifico per qualcosa che sta facendo knockout-switch-case.
In ogni caso, pensieri e commenti sinceramente apprezzati.
È necessario spessorare il 'eliminazione diretta-switch-case' e non ko per sé così provare qualcosa del tipo: 'shim (browserify(), { 'knockout-switch-case': { percorso: './js/vendor/knockout-switch-case.js' , esportazioni: null , dipende: {knockout: 'ko'} } }) ' – nemesv