我试图整理一个gulp脚本,它将观察我更改的文件(前端文件,如css,js,cshtml),并在修改后将它们FTP到我的Azure WebApp。 我使用gulp-ftp,但如果有更好的选择,请告诉我。
gulp.src(cssRoot).pipe(
foreach(function (stream, rootFolder) {
gulp.watch([cssRoot + "/**/*.css", jsRoot + "/**/*.js", cshtmlRoot + "/**/*.cshtml"], function (event) {
if (event.type === "changed") {
console.log("publish file " + event.path);
gulp.src(event.path, { base: './' })
.pipe(ftp({
host: 'ftp://my-azure.website-ftp-url/',
user: 'my-azure-ftp-username\in-the-complete-form',
pass: 'my-azure-ftp-password',
remotePath: 'site\wwwroot\'
}))
.pipe(gutil.noop());
}
console.log("published " + event.path);
});
return stream;
})
);
});
我已经使用FileZilla检查了FTP的凭据,它运行正常。 (我使用here方法提取它们。
手表似乎工作正常,但FTP似乎失败了,出现以下错误:
events.js:160
throw er; // Unhandled 'error' event
^
Error: getaddrinfo ENOTFOUND ftp://my-azure.website-ftp-url/ ftp://my-azure.website-ftp-url/:21
at errnoException (dns.js:28:10)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26)
有谁知道它为什么无法连接?
我也不确定我的脚本是否会将文件复制到网站的相对位置,或者它是否会直接转到根网.....但那是另一个完全是问题。
答案 0 :(得分:2)
好吧,gulp-ftp确实说它已被弃用而不是vinyl-ftp,尽管这不是你的问题。我会删除" ftp://"从你的主机价值(如果它在那里)看到它是否更好。
这是一个关于使用vinyl-ftp using gulp with vinyl-ftp的非常好的博客。 vinyl-ftp也可以很好地处理新文件。
答案 1 :(得分:1)
正如@Mark指出的那样,请先从主机值中删除“ftp://”。
然后你还需要将用户值中的“\”加倍(例如:“someapp \\ someuser”)。请参阅Vinyl-ftp strange error。