2017-01-23 2 views
1

Ссылка https://github.com/jhades/angularjs-gulp-example/blob/master/gulpfile.js имеет определение galp build-js с использованием браузера paths. Я не понимаю необходимости в этом ... Невозможно было просто указать записи как entries: './js/**/*.js',, и это вынудило бы его искать все подкаталоги ... вместо явного указания paths: ['./js/controllers', './js/services', './js/directives'],, которые все подкаталоги одного и того же родителя?Зачем нужна интерпретация «путей»?

Любые намеки приветствуются.

ответ

2

Автор использует конфигурацию paths для того, чтобы неродственный require вызовов как these:

require('todoCtrl'); 
require('todoStorage'); 
require('todoFocus'); 
require('todoEscape'); 
require('footer'); 

Browserify эмулирует механизм разрешения узлового модуля (который объясняется here), и когда узел решает неродственный require, он выглядит в node_modules. Опция paths предоставляет Browserify список путей, которые не находятся в node_modules, чтобы он проверял (до, проверяя node_modules) при попытке разрешить не связанные require звонки.

Если все ваши require требуют, чтобы модули в вашем собственном проекте использовали относительные пути (например, require('./js/controllers/todoCtrl')), вам не нужен параметр конфигурации paths.

+0

Я сейчас немного запутался. Возможно, мне стоит вернуться к чертежной доске. Может ли кто-нибудь объяснить мне, что именно делает «записи»? Является ли поиск файлов javascript для преобразования или действительно ли он указывает целевой файл? – Grateful

+1

@Grateful 'entries' - файлы, которые Browserify будет вызывать при загрузке сгенерированного скрипта. «Пути» предназначены для совершенно другой цели. – Gerrit0

+0

@Grateful Да. 'entries' указывает модули, которые загружаются и вызывается при загрузке пакета. Эти модули могут «требовать» других, а опция «пути» относится к механизму разрешения, используемому для этих других модулей. Не все модули должны быть указаны как «записи» - только модуль (или модули), который загружает приложение, так сказать. – cartant

0

Ну, один простой ответ, по-видимому, состоит в том, что **/* не распознается, Вам нужно было бы require("glob"), чтобы сделать это ... но, вероятно, проще просто использовать paths, чтобы указать дополнительные папки.

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