如何让Gulp识别编译文件中的更改/更新?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让Gulp识别编译文件中的更改/更新?相关的知识,希望对你有一定的参考价值。
我正在构建一些网站,并使用Gulp将他们的.scss文件编译成main.css
文件。
事情进展顺利,但有一点--Gulp似乎不知道main.css
文件何时更新。
例如,如果我运行gulp sass
并编译我的main.css
文件,然后运行我的FTP部署脚本,gulp ftp-deploy
,.scss文件(以及我一直在研究的任何其他.html或.php文件)将部署,但不会运行main.css
文件。
Gulp只会识别main.css
是否有变化,如果我在IDE中打开它,进行更改,如添加空格或其他内容,然后保存。
当我运行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上
啊,我原本以为你在谈论某种gulp watch
行为;我错过了你的newer
中的ftp-deploy
线。
这听起来像修改时间比较问题。这通常是由于本地计算机和服务器之间的时间差异(您可能会在几分钟内关闭一个或另一个,从而导致任务中的不稳定行为)。另一种可能性是服务器位于不同的时区并使用本地时间而不是UTC。 S.O.的答案问题Gulp Vinyl FTP Timezone Issue可能会帮助你。
手工编辑/css
中的文件和运行gulp sass
来重新生成它们之间应该没有区别;重要的是修改时间(运行ls -l css
来查看,所以你知道正在查看什么,并可以将它与服务器上的文件进行比较)。有一点需要注意的是,只需重新运行gulp sass
而不对SCSS文件进行任何更改,就不会使用新的时间戳更新/css
中的文件。这是gulp的一个功能,可能会在你测试时绊倒你。
以上是关于如何让Gulp识别编译文件中的更改/更新?的主要内容,如果未能解决你的问题,请参考以下文章
Gulp 3 到 Gulp 4:如何观看 scss 并将其缩小/编译成 css?
Gulp-sass 5.0 如何使用带有 import() 而不是 require() 的编译器?