2017-03-07 36 views
0

我试图建立一个章鱼部署包用杯和Gulp-Octo角-CLI项目:咕嘟咕嘟-OCTO无视我的选择输出目录

const gulp = require("gulp"), 
    octopus = require("@octopusdeploy/gulp-octo"), 
    version = require("./package.json").version; 

gulp.task("octopack", 
    ["build-prod"], 
    () => gulp.src("dist/*") 
     .pipe(octopus.pack(
      "zip", // octopackjs does not support nupkg format yet 
      { 
       id: "myprojectid", 
       version: `${version}.${commandLineOptions.buildnumber}` 
      })) 
     .pipe(gulp.dest('./octopus')) 
); 

这与正确的内容,并创建一个包版本号,但是它总是进入当前目录(沿着gulpfile.js),而不是我在gulp.dest()中指定的目录。

我已经尝试了所有的以下变化在调用gulp.dest,具有相同的结果:

  • ./octopus
  • ./octopus/
  • octopus/
  • octopus
  • path.join(__dirname, 'octopus')

我误解gulp.dest()是如何工作的,或者是octopus.pack()做些奇怪的事情?

(注:如果我干脆离开了gulp.dest()则没有创建压缩文件)

回答

1

这是在gulp-octo的错误。在this line他们设置生成的存档的路径。不幸的是,他们只是使用归档文件的文件名而不是完整路径(即what they're supposed to do),所以文件总是相对于当前工作目录写入。

当我有机会时,我可能会向他们发送拉请求,因为这是一个简单的修复方法。

在您可以使用以下解决方法其间:

var path = require('path'); 

gulp.task("default", 
    () => gulp.src("dist/*") 
     .pipe(octopus.pack(
      "zip", // octopackjs does not support nupkg format yet 
      { 
       id: "myprojectid", 
       version: `${version}.${commandLineOptions.buildnumber}` 
      })) 
     .on('data', (f) => { f.path = path.join(f.base, f.path) }) 
     .pipe(gulp.dest('./octopus')) 
);