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

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

Команда angular-cli ng-build строит мое угловое приложение в папку /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));
});

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

Затем я добавляю файл assetFile.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, содержащей подпапки (я получаю ту же ошибку, если добавляю папки в dist после сборки). Но я не уверен, почему и что с этим делать.

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

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

2 ответа

Решение

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

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

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

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

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

в

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

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

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