2013-08-11 2 views
20

assuma il codice qui sotto si trova in bundler.js e rintracciare entry.js porta a var B = require('backbone'); (Backbone è una dipendenza installato come dichiarato in package.json).Come ignorare le librerie in browserify api programmatico

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

L'esecuzione di questo bundler produce un flusso che contiene il backbone sorgente originale. Sulla base di command line options di browserify, mi aspettavo che ignorasse il backbone. Leggendo la fonte, mi aspettavo forse il seguente dovrebbe funzionare:

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

Anche se backbone fonte appare ancora in uscita flusso.

È possibile utilizzare --noparse=FILE come opzione di configurazione in questa applicazione dell'api?

+0

Hai trovato una soluzione a questo? – smhg

risposta

8

Come si può vedere from here l'opzione --noparse fornita sulla riga di comando è passata alla chiamata browserify({ }).

Quindi per dire a browserify di non analizzare jquery e three.js devi passare il percorso completo ai file jquery e three.js.

Esempio:

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

Apprezzo il riferimento alla fonte. Ho implementato un blocco simile ma i tempi di analisi con e senza noParse su tutti i file di grandi dimensioni (jQuery, Backbone, Lodash) sono identici: ~ 15 secondi. per me, questo suggerisce che i file siano effettivamente analizzati – kurttheviking

+7

Ho avuto problemi nel verificare che noParse funzionasse effettivamente. Ho finito per aggiungere la funzione 'console.log (file);' in 'node_modules/browserify/index.js' '' globalTr' poco prima di 'var parts = file.split ('/node_modules/');' line. Mi ha aiutato a capire che stavo usando i percorsi sbagliati per il file che volevo ignorare. Vorrei che browserify avesse una modalità '--verbose' più dettagliata. –

9
var browserify = require("browserify") 

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

che renderebbe browserify ignorare jquery, e quindi jquery può essere aggiunto direttamente Index.HTML.

+1

Forse un po 'più di spiegazione? –

+1

questo ha funzionato per me, grazie, esempio: browserify ({entries: ['./js/index.js']}).ignore('backbone').ignore('jquery').ignore('underscore') – cancerbero

+0

Altro esempio di chart.js che lo ha eseguito qui https://github.com/chartjs/Chart.js/blob/master/gulpfile.js#L105 – haxpor