Как скопировать и вставить файлы main-bower за один шаг с помощью gulp?

При развертывании моего приложения я хочу скопировать зависимость bower в каталог deploy и вставить ссылки на эти файлы в index.html, который также находится в каталоге deploy.

Каждый шаг работает отлично, я не могу их комбинировать.

Скопируйте файлы:

return gulp.src(mainBowerFiles(), { read: false })
    .pipe(gulp.dest('./deploy/lib/'));

Ввод файлов:

return gulp.src('./deploy/index.html')
    .pipe(plugins.inject(
        gulp.src(mainBowerFiles(), { read: false }), { relative: true }))
    .pipe(gulp.dest('./deploy/'));

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

Я пробовал эту комбинацию, но это не сработало.

return gulp.src('./deploy/index.html')
    .pipe(plugins.inject(
        gulp.src(mainBowerFiles(), { read: false })
            .pipe(gulp.dest('./deploy/lib/'), { relative: true })))
    .pipe(gulp.dest('./deploy/'));

Ответ 1

Я рекомендую wiredep:

Вы добавляете блок в свой html:

<html>
<head>
</head>
<body>
  <!-- bower:js -->
  <!-- endbower -->
</body>
</html>

и ваша задача wiredep выглядит так:

// inject bower components
gulp.task('wiredep', function () {
  var wiredep = require('wiredep').stream;
  gulp.src('app/*.html')
    .pipe(wiredep())
    .pipe(gulp.dest('app'));
});

Что добавит депиляции в ваш html как таковой:

<html>
<head>
</head>
<body>
  <!-- bower:js -->
  <script src="bower_components/foo/bar.js"></script>
  <!-- endbower -->
</body>
</html>

Затем вы можете объединить это с useref для заказа всех зависимостей javascript проекта

html block

<!-- build:js scripts/app.js -->
<!-- bower:js -->
<script src="bower_components/foo/bar.js"></script>
<!-- endbower -->
<script src="js/yourcustomscript.js"></script>
<!-- endbuild -->

gulp Задача

gulp.task('html', ['styles'], function () {
  var assets = $.useref.assets({searchPath: '{.tmp,app}'});

  return gulp.src('app/*.html')
    .pipe(assets)
    .pipe(assets.restore())
    .pipe($.useref())
    .pipe(gulp.dest('dist'));
});

Посмотрите, как генератор- gulp -webapp делает вещи: https://github.com/yeoman/generator-gulp-webapp

Примечание: синтаксис $.plugin предполагает var $ = require('gulp-load-plugins')();