Javascript 仅在gulp中发生更改时生成和注入文件
我正在使用gulp inject和hash generator每次构建具有唯一名称的javascript文件,以避免缓存问题。在构建之前,我运行gulp clean删除以前生成的javascript文件。问题是,现在每次运行npm build时,即使源代码中没有任何更改,也会重建文件。在运行clean和inject之前,我想检查源文件中是否有更改。我认为gulp改变了解决方案,但不确定如何使其与哈希和清理一起工作。我的部分实现如下所示Javascript 仅在gulp中发生更改时生成和注入文件,javascript,node.js,build,gulp,gulp-changed,Javascript,Node.js,Build,Gulp,Gulp Changed,我正在使用gulp inject和hash generator每次构建具有唯一名称的javascript文件,以避免缓存问题。在构建之前,我运行gulp clean删除以前生成的javascript文件。问题是,现在每次运行npm build时,即使源代码中没有任何更改,也会重建文件。在运行clean和inject之前,我想检查源文件中是否有更改。我认为gulp改变了解决方案,但不确定如何使其与哈希和清理一起工作。我的部分实现如下所示 gulp.task('clean-scripts', fun
gulp.task('clean-scripts', function () {
// return del(['./static/js/**/*.js'])
return gulp.src(['./static/js/temp/**/*.js', './static/css/**/style-*.css'], {read: false})
.pipe(clean());
});
gulp.task('index', function () {
var target = gulp.src('./templates/base.html');
// It's not necessary to read the files (will speed up things), we're only after their paths:
var sources = gulp.src(['./static/js/temp/**/*.js', './static/css/'+cssFileName], {read: false}, {relative : true});
return target.pipe(inject(sources))
.pipe(gulp.dest('./templates'));
});
您可以使用
gulprev
或forkgulprevall
执行此操作。这片土地光秃秃的;查看,了解两者的作用和区别(最大的区别是gulp rev all
不仅检查您传递的文件中的更改,而且检查它们引用的文件中的更改)
很难准确地说出这将如何适应您提供的“吞咽”任务,但下面是每个插件的通用示例:
将gulp rev
中的所有内容复制到/src
,并在文件名后附加一个哈希(默认格式为/dest rev
;您可以在哈希中添加前缀和/或后缀,还可以更改扩展名)basename-a2c4e6g8i0.ext
执行相同的操作,但使用gulp revall
(默认格式为/dest revall
;您可以向哈希添加前缀、转换basename、转换文件路径和更改哈希长度)basename.a2c4e6g8.ext
gulp rev
还是gulp revall
,您都可以(并且需要)重写已重命名的文件名–有关详细信息,请参阅插件文档
请注意,我正在删除输出目录,因为否则将保留文件的早期版本。如果您想保留以前的版本,只需去掉del
调用即可
"dependencies": {
"del": "^2.2.2",
"gulp": "^3.9.1",
"gulp-rev": "^7.1.2",
"gulp-rev-all": "^0.8.24"
}
const gulp = require('gulp'),
del = require('del'),
rev = require('gulp-rev'),
revAll = require('gulp-rev-all');
gulp.task('rev', function() {
del('dest-rev');
return gulp.src('src/*')
.pipe(rev())
.pipe(gulp.dest('dest-rev'));
});
gulp.task('revall', function() {
del('dest-revall');
var rev_all = new revAll();
gulp.src('src/*')
.pipe(rev_all.revision())
.pipe(gulp.dest('dest-revall'));
});