我正在构建一些站点,并且正在使用Gulp将其.scss文件编译为main.css
文件。
一切正常,但有一个原因-Gulp似乎不知道main.css
文件何时更新。
例如,如果我运行gulp sass
并编译我的main.css
文件,然后运行我的FTP部署脚本gulp ftp-deploy
、. scss文件(以及其他任何.html或.php我一直在处理的文件)将被部署,但main.css
文件不会被部署。
如果我在IDE中打开main.css
,Gulp只会识别出是否有更改,进行更改,例如添加空格或其他内容,然后保存。
当我同时运行Shopify ThemeKit的theme watch
命令时,也会发生上述问题。
有人会知道我怎么做才能检测到变化吗?
我的gulpfile.js就是这样:
const gulp = require('gulp');
const sass = require('gulp-sass'); //Compiles SASS
const ftp = require( 'vinyl-ftp' ); //FTP
gulp.task('sass', function(){
return gulp.src('scss/main.scss')
.pipe(sass())
.pipe(gulp.dest('css'))
});
gulp.task('ftp-deploy', function() {
var conn = ftp.create({
// CONFIG
});
var localFilesGlob = ['css/**'];
return gulp.src(localFilesGlob, { base: '.', buffer: false })
.pipe( conn.newer( '.' ) )
.pipe( conn.dest( '.' ) )
;
});
其他信息
node.js版本为11.6.0
npm版本是6.5.0
Gulp版本为4.0.0(2.0.1 CLI)
我在MacOS 10.14.2上
答案 0 :(得分:0)
啊,我原本以为你在谈论某种gulp watch
的行为;我错过了您的newer
中的ftp-deploy
行。
在我看来,这像是修改时间比较问题。这通常是由于本地计算机与服务器之间的时间差异(其中一个或另一个可能会关闭几分钟,从而导致任务中出现不稳定的行为)。另一种可能性是服务器位于不同的时区,并且使用本地时间而不是UTC。 S.O.的答案问题Gulp Vinyl FTP Timezone Issue可能会帮助您。
在/css
中手动编辑文件与运行gulp sass
来重新生成文件之间应该没有区别;重要的是修改时间(运行ls -l css
可以看到修改时间,这样您就可以知道正在查看的内容,并将其与服务器上的文件进行比较)。要注意的一件事是,仅重新运行gulp sass
而对SCSS文件没有任何更改将不会使用新的时间戳来更新/css
中的文件。这是gulp的功能,可能会在您进行测试时使您绊倒。