Gulp with WinSCP - livereload and less

时间:2015-01-09 20:52:34

标签: twitter-bootstrap-3 gulp winscp gulp-less gulp-livereload

我在远程服务器上使用gulp livereloadless和其他人。我多次成功使用过gulp,从未体验过这种情况。

我正在使用WinSCP来保存/编辑文件(我双击该文件,它在Sublime Text中打开...我保存它,WinSCP会自动将其上传回服务器)。

然而,当这样做时,gulp-less几乎一直都会失败。我有两个核心CSS文件被编译 - 一个是Bootstrap,一个是我自己的 - 它们都应该在修改后用自己的gulp任务编译 - 但是Bootstrap每次都会失败,而另一个文件大约有一半的时间都会失败。 / p>

当我说失败时,这就是我的意思 - 使用Bootstrap我总是得到同样的错误:

    variable @grid-columns is undefined in file ....grid.less line no. 48

即使我将@grid-columns定义为我的主Bootstrap“导入”文件中的第一个标题,也会发生这种情况。

另一个失败的原因是livereload在编译Less文件之前的某个时刻重新加载编译的CSS。这应该是不可能的,但它会以某种方式发生。

但是,当我从SSH命令提示符输入touch myfile.lesstouch anybootstrapfile.less时,一切正常。

显然这很烦人,但它宜居。我认为必须有一些方法来解决它。关于世界上有什么可以实现这一点的任何想法以及我能做些什么(如果有的话)来修复它?

2 个答案:

答案 0 :(得分:1)

当WinSCP在内部编辑器中保存文件后上传文件时,它可能会将上传文件的时间戳设置为比以前更旧。

如果您使用的是FTP协议或Windows Vista或更早版本,则可能尤其如此。

有关详细信息,请参阅WinSCP常见问题解答:
Why are the changes, I upload to webserver, not visible in the web browser?

答案 1 :(得分:1)

好的。在马丁的帮助下,我现在意识到他是WinScp的开发者,我已经解决了这个问题。我一直在使用gulp.wait插件并在最终重新加载之前插入暂停 - 它无法正常工作。

因为...... 不是问题所在。问题发生在上传时;因为文件很快被“触及”(或者有时间戳的内容最终导致功能等同)。

所以我把等待过程移到了调用less进程之前:

gulp.src(src)
.pipe(plumber({
  errorHandler:onError
})
.pipe(wait(500))
.pipe(less())
//etc

我要试验,500毫秒可能比需要更长时间......但不要太长,不要痛苦。这立即解决了这个问题。

谢谢马丁!