当子文件夹

时间:2016-12-05 10:31:24

标签: angular angular-cli octopus-deploy octopack

这里的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上的最小例子是https://gist.github.com/sazameki/3026845,这是我使用ng init(angular-cli)创建的空白应用程序,然后添加了gulp和章鱼。

2 个答案:

答案 0 :(得分:1)

因此,修复方法是在顶层添加 assets / 文件夹。

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

这是commit that fixes my example app。这个文件夹并不重要,也没有打包。它只需要存在。很奇怪,看起来像gulp-octo中的一个错误。

答案 1 :(得分:0)

如果您更改了gulp.js文件中的第20行

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

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

它会起作用。 gulp.src的第二个参数告诉它获取所有目录。有关详情,请参阅此帖子:How do I copy directories recursively with gulp?