Octopack не будет упаковывать выходные данные сборки ng, если есть подпапки

Здесь указана версия gulp-octo 0.0.10, которая больше не является текущей версией. Это может относиться или не относиться к более новым версиям

Команда angular-cli ng-build создает мое приложение angular в папке /dist.

В итоге я получаю плоскую папку dist, содержащую мои файлы js, html и т. д.

/dist
  index.html
  inline.js
  [etc]

Затем я могу использовать gulp-octo для публикации моего пакета на моем хосте развертывания осьминога, например:

// You need to bump version in package.json and ng build before running this
gulp.task("publish", function() {
    return gulp.src(["dist/**"])
        .pipe(octo.pack())
        .pipe(octo.push(octoConfig));
});

Который работает.

Затем я добавляю файл assetsFile.png в файл ресурсов. Это меняет внешний вид /dist. Он уже не совсем плоский:

/dist
   /assets
      assetFile.png
  index.html
  inline.js
  [etc]

Внезапно gulp publish вылетает с этой ошибкой:

λ gulp publish
[11:14:58] Using gulpfile C:\Source\blank-angular-cli-app\gulpfile.js
[11:14:58] Starting 'publish'...
[11:14:58] Packed 'foo.0.0.0.2.tar.gz' with 10 files
C:\Source\blank-angular-cli-app\node_modules\@octopusdeploy\octopackjs\lib\pack.js:26
    throw err;
    ^

Error: ENOENT: no such file or directory, stat 'C:\Source\blank-angular-cli-app\assets'
    at Error (native)

Он явно недоволен папкой /dist, содержащей вложенные папки (я получаю ту же ошибку, если добавляю папки в дистрибутив после сборки). Но я не знаю, почему и что с этим делать.

Что происходит? Как исправить это развертывание?

Минимальный пример того, что происходит, находится на Github, который пустое приложение, которое я создал с помощью ng init (angular-cli), а затем добавил gulp и octopus.


person Nathan Cooper    schedule 05.12.2016    source источник
comment
Решил это, ответим в ближайшее время. Ошибка в gulp-octo, я думаю.   -  person Nathan Cooper    schedule 06.12.2016


Ответы (2)


Таким образом, исправление заключается в добавлении папки assets/ на верхний уровень.

- assets
    unrelatedDoesntMatter.png
- dist
  - assets
    assetFile.png
[etc]

Вот коммит , исправляющий мой пример приложения. Эта папка не имеет значения и не упаковывается. Он просто должен существовать. Странно, похоже на ошибку в gulp-octo.

person Nathan Cooper    schedule 06.12.2016

Если вы измените строку 20 в файле gulp.js

return gulp.src(["dist/**"])

to

return gulp.src(["dist/**"], { "base" : "." })

это сработает. Этот второй параметр gulp.src говорит, что нужно получить все каталоги. См. этот пост для получения дополнительной информации: Как рекурсивно копировать каталоги с помощью gulp?

person Stephen Baleno    schedule 27.09.2017