2013-08-11 17 views
20

Załóżmy poniższy kod znajduje się w bundler.js i śledzenie entry.js prowadzi do var B = require('backbone'); (Backbone jest zależność zainstalowany jako zadeklarowany w package.json).jak ignorować biblioteki w browserify programowym API

var browserify = require('browserify'); 
var bundle = new browserify(); 
bundle.add('entry.js'); 
bundle.bundle({ 
    noParse: ['backbone'] 
}); 

Wykonanie tego pakietu dostarcza strumień zawierający oryginalne źródło backbone. W oparciu o przeglądniętą wersję command line options oczekiwałem, że całkowicie pominie ona szkielet. Czytając źródła, spodziewałem być może będzie działać co następuje:

var browserify = require('browserify'); 
var bundle = new browserify({ 
    noParse: ['backbone'] 
}); 
bundle.add('entry.js'); 
bundle.bundle(); 

Choć backbone źródło wciąż pojawia się na wyjściu strumień.

Czy można użyć --noparse=FILE jako opcji konfiguracyjnej w tej aplikacji api?

+0

Czy znalazłeś rozwiązanie tego problemu? – smhg

Odpowiedz

8

Jak widać from here opcja --noparse podana w wierszu poleceń jest przekazywana do wywołania browserify({ }).

Aby przekazać przeglądarce, aby nie parsować plików jquery i three.js, musisz podać pełną ścieżkę do plików jquery i three.js.

przykład:

browserify({ 
    noParse: [ 
    require.resolve('./vendor/jquery'), 
    require.resolve('./vendor/three') 
    ] 
}) 
.require(require.resolve('./entry.js'), { entry: true }) 
.bundle(); 
+8

Doceniam odniesienie do źródła. Zaimplementowałem podobny blok, ale czasy parowania zi bezParse na wszystkich dużych plikach (jQuery, Backbone, Lodash) są identyczne: ~ 15 sekund. dla mnie, co sugeruje, że pliki są nadal przetwarzane. – kurttheviking

+7

Miałem problemy z weryfikacją, że funkcja noParse faktycznie działała. Skończyło się na dodaniu 'console.log (file);' w funkcji 'global_modules/browserify/index.js'' 'globalTr' tuż przed linią' var parts = file.split ('/ node_modules /'); '. Pomogło mi to uświadomić sobie, że używam złych ścieżek do pliku, który chciałem zignorować. Chciałbym, aby przeglądarka miała bardziej szczegółowy tryb '--verbose'. –

9
var browserify = require("browserify") 

browserify({entries: ['./src/client/app.js']}) 
.ignore('jquery') 

Pozwoliłoby browserify ignorować jquery, a następnie mogą być dodawane JQuery index.html bezpośrednio.

+1

Być może trochę więcej wyjaśnień? –

+1

to działało dla mnie, dzięki, przykład: browserify ({wpisy: ['./js/index.js']}).ignore('backbone') .ignore('jquery').ignore('underscore') – cancerbero

+0

Więcej przykładów pliku chart.js, który zrobił to tutaj: https://github.com/chartjs/Chart.js/blob/master/gulpfile.js#L105 – haxpor

Powiązane problemy