网站地图    收藏   

主页 > 前端 > gulp教程 >

gulp修改模块js,但是没更新,除非修改了主js才更新,如何解决?

来源:未知    时间:2023-11-10 11:21 作者:小飞侠 阅读:

[导读] 如果你的 Gulp 构建在修改模块文件时不触发更新,除非修改了主 main.js 文件,这可能是因为 Gulp 默认使用文件的修改时间(timestamp)来判断文件是否需要更新。这对于模块文件可能不起...

如果你的 Gulp 构建在修改模块文件时不触发更新,除非修改了主 main.js 文件,这可能是因为 Gulp 默认使用文件的修改时间(timestamp)来判断文件是否需要更新。这对于模块文件可能不起作用,因为它们的修改时间可能没有发生变化,即使文件内容发生了变化。

解决这个问题的一种方法是使用 Gulp 插件 gulp-changed,它会比较文件内容而不仅仅是修改时间。以下是一个可能的 Gulp 配置:

首先,确保你已经安装了 gulp-changed:

npm install gulp-changed --save-dev
然后,在你的 gulpfile.js 文件中,将 gulp-newer 替换为 gulp-changed:
const gulp = require('gulp');
const changed = require('gulp-changed');
const gulpif = require('gulp-if');
const concat = require('gulp-concat');
const paths = {
  scripts: 'src/**/*.js',
  mainJS: 'src/main.js',
  dest: 'dist'
};
gulp.task('scripts', function() {
  return gulp.src(paths.scripts)
    .pipe(changed(paths.dest)) // 使用 gulp-changed 替换 gulp-newer
    .pipe(gulp.dest(paths.dest));
});
gulp.task('concat', function() {
  return gulp.src([paths.mainJS, paths.scripts])
    .pipe(gulpif('main.js', concat('bundle.js')))
    .pipe(gulp.dest(paths.dest));
});
gulp.task('watch', function() {
  gulp.watch(paths.scripts, gulp.series('scripts', 'concat'));
});
gulp.task('default', gulp.series('scripts', 'concat', 'watch'));



通过使用 gulp-changed,它会根据文件内容而不是修改时间来判断文件是否需要更新。这样,即使模块文件内容发生变化,构建任务也会正确更新。


自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论