2016-05-03 7 views
0

Ich bin neu zu browserifizieren und ich versuche, ein einfaches Beispiel mit zwei Dateien einzurichten. ich jquery mit NPM installiert haben:Durchsuchen Sie jQuery Plugin auf eine andere Datei, die jquery

npm install --save jquery 

und auch habe ich installiert ein Karussell Plugin Bower:

bower install slick-carousel 

Ich habe im Grunde eine allgemeine app.js, wo ich alle allgemeinen js haben wie Bootstrap + jquery + meine globale Logik ... Dann habe ich eine andere Datei spezifisch für eine Seite (zB .: homepage.js)

Was ich brauche ist jquery auf app.js und meine jQuery-Plugin zu haben ("Slick Karussell ") in einer anderen Datei.

Wenn ich erfordern Slick-Karussell auf der gleichen Datei funktioniert alles einwandfrei und ich bin in der Lage so etwas wie $ zu nennen ("# my-Selektor") Slick():.

global.$ = global.jQuery = require("jquery"); 
require('slick-carousel'); 

Aber als ich sie haben in verschiedenen Dateien wie folgen aus:

app.js:

global.$ = global.jQuery = require("jquery"); 

homepage.js

require('slick-carousel'); 

... Ich bekomme eine Fehlermeldung, dass Slick nicht definiert ist.

Ich habe versucht, browserify-shim ohne Erfolg zu verwenden. Außerdem habe ich einen einfachen Test gemacht, indem ich eine console.log (window. $ === $) in den Plugin-Code eingefügt habe und festgestellt habe, dass das $ -Objekt, das im Plugin verwendet wird, anders als window. $ Ist Grund, warum es scheitert, aber ich weiß nicht, wie ich es beheben kann.

Jede Hilfe wäre willkommen.

Antwort

0

Versuchen Export explizit slick als jQuery-Plugin wie folgt:

"browserify": { 
    "transform": [ 
    "browserify-shim" 
    ] 
}, 
"browserify-shim": { 
    "jquery": "$", 
    "slick-carousel": { 
    "depends": [ 
     "jquery: jQuery" 
    ], 
    "exports": "$.fn.slick" 
    } 
},