it-swarm.com.ru

Почему gulp.src не нравится, когда передают массив полных путей к файлам?

Я пытаюсь передать gulp.src массив файлов, с которыми я хочу иметь дело. Это массив, как он есть.

['bower_components/jquery/jquery.js',
 'bower_components/superscrollorama/js/greensock/TweenMax.min.js',
 'bower_components/superscrollorama/jquery.superscrollorama.js' ]

Я обнаружил, что gulp.src, похоже, не нравится, и третий элемент не проходит через конечный пункт назначения.

Я обнаружил, что все работает нормально, когда я ввожу такие символы:

['bower_components/**/jquery.js',
 'bower_components/**/js/greensock/TweenMax.min.js',
 'bower_components/**/jquery.superscrollorama.js' ]

Но почему? Какое-то отношение к тому, как работает глобализация? Я гуглил, но не могу узнать.

Может быть, это не предназначенная цель, но для меня не имеет смысла, чтобы это работало таким образом. Кто-нибудь может пролить свет?

93
morganesque

Когда вы передаете массив полных путей, каждый файл обрабатывается независимо. Глобинг не знает, где находится корень пути (на самом деле, он основывается на первом глобе). Поэтому каждый файл имеет корень в папке, в которой он содержится, а относительный путь пуст.

Однако есть простое решение. Передайте объект с ключом base в качестве второго аргумента gulp.src, и все будет иметь правильный относительный путь:

return gulp.src(['bower_components/jquery/jquery.js',
                'bower_components/superscrollorama/js/greensock/TweenMax.min.js',
                'bower_components/superscrollorama/jquery.superscrollorama.js' ],
            {base: 'bower_components/'})
        .pipe(...);
160
OverZealous