Gulp Useref Вложенные каталоги

Я новичок Gulp с такой структурой каталогов:

.tmp
│   file001.html
│   file002.html
|   ...
│
|───js
|   │   file1.js
|   │   file2.js
└───css
    │   file1.css
    │   file2.css
    |
    └───folder1
    │   file011.html
    │   file012.html
    │
    ├───subfolder1
    │   │   file111.html
    │   │   file112.html
    │   │   ...
    │
    └───folder2
    │   file021.html
    │   file022.html
    |

Вот мое задание useref

gulp.task('useref', function() {
 return gulp.src('.tmp/**/*.html')
.pipe(useref())
.pipe(gulpIf('*.js', uglify()))
.pipe(gulpIf('*.css', cssnano()))
.pipe(gulp.dest('dist'));
});

А вот и HTML

<!--build:css /css/styles.min.css-->
<link rel="stylesheet" href="/css/file1.css">
<link rel="stylesheet" href="/css/file2.css">
<!--endbuild-->

<!--build:js /js/main.min.js -->
<script src="/js/file1.js"></script>
<script src="/js/file2.js"></script>
<!-- endbuild -->

Я хочу, чтобы useref захватил ресурсы во всех html-файлах в каталоге.tmp, в том числе в подкаталогах, и заново создал структуру каталога в каталоге dist.

Я получаю файлы uglified и minified, как и ожидалось, в корне dist, но я также получаю несколько ошибок, таких как эта:

Ошибка: файл не найден с единичным глобусом: .tmp/folder1/subfolder1/js/file1.js

Файл не найден, потому что, как вы видите, путь неверный (должен быть.tmp/js/file1.js). Также подкаталоги не создаются в dist.

Я пытался понять, почему это происходит, и что я могу сделать, чтобы исправить это, но после нескольких часов попыток я обращаюсь за помощью. Заранее спасибо.

1 ответ

Я нашел плагин, который выполняет то, что мне нужно. https://docs.omniref.com/js/npm/gulp-use-asset/0.1.1 делает то же самое, что и useref, но поддерживает структуру каталогов, когда файлы копируются в dist.

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