2013-08-11 5 views
20

Angenommen, der folgende Code ist in bundler.js gefunden und verfolgt entry.js führt zu var B = require('backbone'); (Backbone ist eine Abhängigkeit installiert wie in package.json deklariert).Wie ignoriert man Bibliotheken in browserify programmatic api

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

dieses bundler Executing liefert einen Strom, der die ursprüngliche backbone Quelle enthält. Basierend auf command line options von browserify habe ich erwartet, dass es das Backbone insgesamt überspringt. Durch das Lesen der Quelle, erwartete ich vielleicht folgendes funktionieren würde:

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

Obwohl backbone Quelle erscheint noch im Strom ausgegeben.

Ist es möglich, --noparse=FILE als Konfigurationsoption in dieser Anwendung der API zu verwenden?

+0

Haben Sie eine Lösung gefunden? – smhg

Antwort

8

Wie Sie sehen können from here die --noparse Option in der Befehlszeile an den browserify({ }) Aufruf übergeben wird.

Um browserify mitzuteilen, dass jquery und three.js nicht analysiert werden sollen, müssen Sie den vollständigen Pfad zu Ihren jquery- und three.js-Dateien übergeben.

Beispiel:

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

Ich schätze den Verweis auf die Quelle. Ich habe einen ähnlichen Block implementiert, aber die Parse-Zeiten mit und ohne noParse auf allen großen Dateien (jQuery, Backbone, Lodash) ist identisch: ~ 15 Sekunden. für mich, das schlägt vor, die Dateien werden in der Tat noch geparst – kurttheviking

+7

Ich hatte Probleme zu überprüfen, dass NoParse tatsächlich funktioniert. Am Ende habe ich 'console.log (file);' in 'node_modules/browserify/index.js' '' globalTr'-Funktion direkt vor der 'var parts = file.split ('/node_modules/'); Zeile hinzugefügt. Es half mir zu erkennen, dass ich die falschen Pfade für die Datei benutzte, die ich ignorieren wollte. Ich wünschte, browserify hätte einen ausführlicheren '--verbose' Modus. –

9
var browserify = require("browserify") 

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

Die jquery browserify ignorieren würde, und dann kann jquery auf index.html direkt hinzugefügt werden.

+1

Vielleicht ein wenig mehr Erklärung? –

+1

Dies funktionierte für mich, danke, Beispiel: browsery ({entries: ['./js/index.js']}).ignore('backbone').ignore('jquery').ignore('underscore') – cancerbero

+0

Mehr Beispiel für chart.js, die es hier getan hat https://github.com/chartjs/Chart.js/blob/master/gulpfile.js#L105 – haxpor

Verwandte Themen