2013-08-11 2 views
20

Предположим, приведенный ниже код находится в bundler.js и отслеживании entry.js приводит к var B = require('backbone'); (Магистральные зависимость установлена, как заявлено в package.json).Как игнорировать библиотеки в browserify программной апи

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

Выполнение этого Bundler дает поток, содержащий исходный backbone источник. На основе браузера command line options я ожидал, что он будет пропускать магистраль все вместе. Чтение через источник, я ожидал, возможно, следующий будет работать:

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

Хотя backbone источник до сих пор появляется в выходном потоке.

Возможно ли использовать --noparse=FILE в качестве опции конфигурации в этом приложении api?

+0

Вы нашли решение на этом? – smhg

ответ

8

Как вы можете видеть from here, опция --noparse, предоставленная в командной строке, передается на вызов browserify({ }).

Поэтому, чтобы сообщить обозревателю, чтобы не разобрать jquery и three.js, вам необходимо передать полный путь к файлам jquery и three.js.

Пример:

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

Я ценю ссылку на источник. Я реализовал аналогичный блок, но время разбора с и без noParse на всех больших файлах (jQuery, Backbone, Lodash) идентично: ~ 15 секунд. мне кажется, что файлы действительно все еще разобраны. – kurttheviking

+7

У меня была проблема с проверкой, что noParse действительно работал. Я закончил добавление 'console.log (file);' в 'node_modules/browserify/index.js''' globalTr' функция непосредственно перед 'var parts = file.split ('/ node_modules /');' line. Это помогло мне понять, что я использовал неправильные пути для файла, который я хотел игнорировать. Желательно, чтобы браузерный режим имел более подробный режим '--verbose'. –

9
var browserify = require("browserify") 

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

Это сделало бы browserify игнорировать JQuery, а затем JQuery могут быть добавлены непосредственно index.html.

+1

Возможно, немного больше объяснений? –

+1

это сработало для меня, спасибо, например: browserify ({entries: ['./js/index.js']}).ignore('backbone').ignore('jquery').ignore('underscore') – cancerbero

+0

Еще один пример chart.js, который сделал это здесь https://github.com/chartjs/Chart.js/blob/master/gulpfile.js#L105 – haxpor

 Смежные вопросы

  • Нет связанных вопросов^_^