2016-10-21 25 views
5

Mimo wielu pytań, nie można znaleźć odpowiedzi na następujące pytanie.Klasyfikacja globalna typu "Browserify insert"

Mam plik nodejs index.js.

var browserify = require('browserify'); 

var data = getSomeData(); 
browserify('entry.js').bundle(); 

chcę tak że data mogłyby być dostępne w entry.js. Znalazłem opcję browserify insertGlobalVars, ale nie znalazłem żadnej odpowiedniej dokumentacji ani przykładów. Próbowałem {insertGlobalVars: {myVar: someData}}, ale to nie działa.

Nie można zadzwonić pod numer require('someData'), ponieważ moje dane są tworzone tylko podczas wykonywania index.js.

Aktualizacja: Dane to tablica; klucz to nazwa pliku, wartość - zawartość pliku (rozmiar około 500b).

+0

Jakie dane? Czy można go wymienić na JSON? A ile to jest duże? – cartant

+0

@cartant I zaktualizowałem pytanie – FreeLightman

Odpowiedz

5

Opcja insertGlobalVars pobiera object that contains functions (wywoływana z argumentami file i basedir). Więc trzeba by określić opcję insertGlobalVars tak:

var browserify = require('browserify'); 
var someData = getSomeData(); 

browserify('entry.js', { 
    insertGlobalVars: { 
     someData: function() { return JSON.stringify(someData); } 
    } 
}) 
.bundle() 
.pipe(process.stdout); 

zauważyć, że dane zostaną uwzględnione tylko w wiązce jeśli someData globalny jest faktycznie wykorzystywany w kodzie. A każdy moduł korzystający z globalnego otrzyma swoją własną kopię.

Byłoby możliwe wprowadzenie dodatkowego modułu do pakietu, aby dane mogły być wymagane (i pakiet zawierałby tylko jedną kopię danych), ale byłoby to bardziej skomplikowane ze względu na interakcję między module-deps i system plików. Aby uzyskać więcej informacji, możesz rzucić okiem na to answer.

+0

Odpowiedź jest więcej niż do zaakceptowania. Ale potrzebna mi jest właściwa dokumentacja przeglądarki. Jeśli istniało, nie zadałem tego pytania. Próbowałem przeglądać kod źródłowy, ale jest zbyt sprzężony i niczego nie zrozumiałem. – FreeLightman