0

我在远程服务器上使用 gulp 和livereload,less等。我之前已经成功使用过很多次gulp,从来没有遇到过这种情况。

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

但是,这样做gulp-less几乎总是失败。我有两个已编译的核心 CSS 文件——一个是 Bootstrap,一个是我自己的——它们都应该在修改时使用自己的 gulp 任务进行编译——但 Bootstrap 每次都失败,另一个文件大约有一半的时间失败。

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

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

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

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

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

显然这很烦人,但它是宜居的。我认为必须有某种方法来解决它。关于世界上有什么可以使这种情况发生以及我可以做些什么(如果有的话)来解决它的任何想法?

4

2 回答 2

1

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

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

有关详细信息,请参阅 WinSCP 常见问题解答:
为什么我上传到网络服务器的更改在网络浏览器中不可见?

于 2015-01-10T19:36:01.630 回答
1

好吧。在 Martin(我现在意识到他是 WinScp 的开发者)的帮助下,我解决了这个问题。我一直在使用gulp.wait插件并在最终重新加载之前插入一个暂停 - 它没有工作。

因为……那不是问题所在。问题在上传时发生;因为该文件很快就会被“触及”(或者时间戳中的某些内容最终导致了功能等效项)。

因此,我将等待过程移到了调用 less 过程之前,如下所示:

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

我要进行实验,500 毫秒可能比需要的时间长……但不会太长而不会痛苦。这立即解决了问题。

谢谢马丁!

于 2015-01-11T00:12:20.753 回答