Gulp and Bower - создание правильной структуры файлов

Я добавляю Bower в проект, который уже использует Gulp. Моя структура папок выглядит так:

 |- bower_components
 |   |- dependency1
 |   |   |- dist
 |   |       |- lib1.js
 |   |       |- lib1.min.js
 |   |
 |   |- dependency2
 |       |- core
 |           |- sub
 |           |   |- extra.js
 |           |
 |           |- lib2.js
 |
 |- target
     |- js

Мне уже удалось скопировать все сторонние библиотеки в target/js, используя main-bower-files и bower-normalize. Но это сплющено (и я не установил опцию нормализации flatten правда!), так это выглядит так:

target
 |- js
     |- lib1.js
     |- extra.js
     |- lib2.js

файлы lib1.js, extra.js а также lib2.js помечены как main в конфигурационном файле bower.json.

Чего я хотел бы добиться, так это иметь такую ​​структуру файлов:

target
 |- js
     |- dependency1
     |   |- lib1.js
     |
     |- dependency2
         |-  sub
         |    |- extra.js
         |
         |-  lib2.js

Я буду очень признателен за помощь!

1 ответ

Решение

Пройдите через gulp-flatten, это поможет вам удалить или заменить относительный путь к файлам. А также, я очень рекомендую Wiredep. Он автоматически обрабатывает все ваши зависимости, а также порядок зависимостей. Надеюсь, что это поможет вам.

Ваш исходный каталог с компонентами Bower:

 |- bower_components
 |   |- dependency1
 |   |   |- dist
 |   |       |- lib1.js
 |   |       |- lib1.min.js
 |   |
 |   |- dependency2
 |       |- core
 |           |- sub
 |           |   |- extra.js
 |           |
 |           |- lib2.js
 |
 |- target
     |- js

Использование gulp-flatten -

gulp.src(['bower_components/**/*.js'])
  .pipe(flatten({ includeParents: [1, 1]} ))
  .pipe(gulp.dest('build/'));

создаст эту структуру (сверху дерева каталогов):

|- bower_components
|   |- dependency1
|   |   |- lib1.js
|   |
|   |- dependency2
|            |-  sub
|            |    |- extra.js
|            |
|            |-  lib2.js

includeParents: [1, 1] Если передать в виде массива из двух чисел, оба родителя сверху и снизу будут сохранены в результирующий путь файла.

includeParents: 1 Если передано как положительное число, оно будет включать в себя число родителей верхнего уровня в выходных данных.

includeParents: -1 Если передано как отрицательное число, оно будет включать количество нижестоящих родителей в выводе.

Другие вопросы по тегам