Чому gulp.src не любить пропускати масив повних шляхів до файлів?


94

Я намагаюся передати 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' ]

Але чому? Щось із тим, як працює глобус? Я гуглив, але не можу дізнатися.

Можливо, це не є метою глобалізації, але мені не має сенсу, що це має працювати саме так. Чи може хтось пролити світло?

Відповіді:


162

При передачі масиву повних шляхів кожен файл обробляється незалежно. Глобус не знає, де знаходиться корінь шляху (насправді він здогадується на основі першого глобуса). Тому кожен файл вкорінюється в папці, яку він містить, і відносний шлях порожній.

Однак є просте рішення. Передайте об’єкт з ключем 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(...);

23
Також: Це взагалі не згадується в документах із глоткою, для того,glob-stream щоб розібратися в цьому , ви повинні натиснути на документи .
OverZealous

9
що робити, якщо всі шляхи не мають однакової бази? У мене є аналогічне запитання для конкретного сценарію: gulp src не читає необхідні значення масиву файлу json
Андре

1
те саме питання з мого боку. У мене є дві основи для виконання завдання, яке мені потрібно виконати
Синтія Санчес,

4
Мабуть, завжди є спільна база десь у файловій системі? Навіть якщо це "/". Якщо gulp працює від кореня вашого проекту dir, ви просто вкажіть поточний dir як базовий, а трубу до поточного dir. gulp.src(mixed, {base: "."}).pipe(doStuff).pipe(dest("."))
числа1311407
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.