Почему 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' ]

Но почему? Что-то связано с тем, как работает глобус? Я googled, но не могу узнать.

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

Ответ 1

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

Однако есть простое решение. Передайте объект с ключом 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(...);