You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

文件修改后Gulp任务未执行问题求助

Gulp文件变化检测到但任务不执行的解决办法

问题排查与修复点:

  • Sass编译逻辑矛盾
    你的style任务里,源文件是.css后缀,但却调用了sass()编译管道——Sass编译器只处理.scss/.sass文件,直接喂CSS文件会导致任务静默失败(无语法错误但无实际编译动作),后续的autoprefixer、cleanCSS等步骤也无法正常执行。
    解决:如果用Sass开发,把源路径改成你的Sass文件目录(比如public/assets/scss/*.scss);如果是纯CSS开发,直接删掉.pipe(sass().on('error', sass.logError))这一行。

  • BrowserSync与Gulp Watch的监听冲突
    你在browserSync.init里配置了files参数监听CSS/JS文件,这会让BrowserSync自行监听并刷新页面,但和你后面用gulp.watch绑定任务的逻辑重复,导致Gulp的任务触发被覆盖。
    解决:删掉browserSync.init里的files配置项,让Gulp的watch来触发任务,再通过任务里的browserSync.stream()注入变化。

修改后的完整代码:

const gulp = require('gulp');
const sass = require('gulp-sass')(require('sass'));
const autoprefixer = require('gulp-autoprefixer');
const browserSync = require('browser-sync').create();
const cleanCSS = require('gulp-clean-css');
const concat = require('gulp-concat');
const babel = require('gulp-babel');
const uglify = require('gulp-uglify');

// 假设你用Sass开发,这里改成scss源文件路径;如果是纯CSS,删掉sass编译管道
function style() {
  return gulp
    .src('public/assets/scss/*.scss') // 改为Sass文件路径
    .pipe(sass().on('error', sass.logError)) // 仅保留Sass编译逻辑
    .pipe(autoprefixer())
    .pipe(cleanCSS())
    .pipe(concat('styles.css'))
    .pipe(gulp.dest('public/source/css'))
    .pipe(browserSync.stream());
}

function scripts() {
    return gulp
      .src('public/assets/js/*.js')
      .pipe(babel({
        presets: ['@babel/env']
      }))
      .pipe(uglify())
      .pipe(concat('scripts.min.js'))
      .pipe(gulp.dest('public/source/js'))
      .pipe(browserSync.stream());
}

function watch() {
  browserSync.init({
    proxy: "gif-ddev.ddev.site",
    open: true,
    // 删掉files配置,避免冲突
  });
  gulp.watch('public/assets/scss/*.scss', style); // 对应修改后的源路径
  gulp.watch('public/assets/js/*.js', scripts);
  gulp.watch(['templates/*.html', 'templates/**/*.twig']).on('change', browserSync.reload);
}

exports.style = style;
exports.scripts = scripts;
exports.watch = watch;

验证步骤:

  1. 先手动执行gulp style和gulp scripts,确认控制台没有报错,目标目录能生成编译后的文件
  2. 再运行gulp watch,修改对应的Sass/JS文件,看控制台是否输出任务执行日志,浏览器是否同步更新

内容的提问来源于stack exchange,提问作者JMKelley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 02:27:45