Gulp-Inject Positions
Если я хочу ввести файлы Js в diff. места, например <head> here
а также here </body>
, Мне нужно установить имена, как описано здесь для инъекций: https://github.com/klei/gulp-inject
<!-- head:js -->
<!-- only importantFile.js will be injected here -->
<!-- endinject -->
Как я могу изменить этот селектор, чтобы мне не нужно было называть каждый файл. Например, взять все файлы, которые содержат *_important.js
.pipe(inject(gulp.src('./src/importantFile.js', {read: false}), {name: 'head'}))
И есть ли лучший способ. Например, добавление s.th. внутри файла javascript или назовите его следующим образом: orderModule.above.js, googleAnalytics.below.js
2 ответа
gulp.task('dev', function () {
var target = gulp.src('./index.html');
return target
.pipe(inject(gulp.src('_MAIN_CSS_FILES_', {read: false})))
.pipe(inject(gulp.src('_BOWER_CSS_FILES_', {read: false}), {name: 'bower'}))
.pipe(inject(gulp.src('_MAIN_JS_FILES_', {read: false})))
.pipe(inject(gulp.src('_BOWER_JS_FILES_', {read: false}), {name: 'bower'}))
.pipe(gulp.dest("./dest/"));
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Index</title>
<!-- inject:css -->
<!-- built css files will go here... -->
<!-- endinject -->
<!-- bower:css -->
<!-- bower installed css files will go here... -->
<!-- endinject -->
</head>
<body>
<!-- bower:js -->
<!-- bower installed js files will go here... -->
<!-- endinject -->
<!-- inject:js -->
<!-- built js files will go here... -->
<!-- endinject -->
</body>
</html>
От gulp
документация:
gulp.src(globs[, options])
- Издает файлы, соответствующие указанному glob или массиву glob.
Поэтому у вас есть огромная свобода определять, как вы хотите различать "важные" файлы и другие.
.pipe(inject(gulp.src('*_important.js')))
.pipe(inject(gulp.src('*.head.js')))
и т.д. Затем просто предоставьте отрицание этого шаблона во втором gulp.src
вызов
.pipe(inject(gulp.src(['*.js', '!*_important.js'])))
.pipe(inject(gulp.src(['*.js', '!*.head.js'])))