Javascript 使用Gulp是否有完整的缓存破坏解决方案?
它至少需要做的事情:Javascript 使用Gulp是否有完整的缓存破坏解决方案?,javascript,node.js,webpack,build,gulp,Javascript,Node.js,Webpack,Build,Gulp,它至少需要做的事情: 注意dist/**中的文件更改和更新,例如icon.png,abc.css,main.js到icon1783.png,abc84848.css,main7272.js 相应地更新源映射名称。源映射的名称应该与js文件相同,因为源映射的哈希将不同于缩小的js文件 最后,以某种方式更新视图中的引用。根据我的需要,使用正确的引用更新views/**下的pug模板。适用于所有人(js | css | img) 该模块可以满足您的需要。它可以向文件名添加散列,并创建一个清单JSON文
dist/**
中的文件更改和更新,例如icon.png
,abc.css
,main.js
到icon1783.png
,abc84848.css
,main7272.js
views/**
下的pug模板。适用于所有人(js | css | img)import gulp from 'gulp';
import {exec} from 'child_process';
import hash from 'gulp-hash';
import uglify from 'gulp-uglify';
// Minifies main.js
gulp.task('script', () => {
exec('rm dist/scripts/main-*.min.js') // Deletes old hashed app JS file
return gulp
.src('dis/scripts/main.js') // Source file
.pipe(uglify()) // Minifies the file
.pipe(hash({ template: '<%= name %>-<%= hash %>.min<%= ext %>' })) // Adds randomly generated hash to JS file name
.pipe(gulp.dest('dist/scripts/`)) // Adds hashed JS file to destination dir
.pipe(hash.manifest('hashed-assets.json')) // Writes manifest JSON file
.pipe(gulp.dest(dist/)); // Adds manifest some destination dir
});
// Watch main.js file for changes
gulp.task('watch', () => {
gulp.watch('dist/scripts/main.js', ['script']);
});
// Default task
gulp.task('default', ['script', 'watch']);
当您更改main.js
时,监视任务将注意到您已更改了文件,并将触发脚本任务
在你的问题中,你就是这样做的#3我将不得不去找熟悉Pug.js的人,但总体目标是引用散列资产.json
文件,并迭代每个键以实现其价值。该模块可以满足您的需要。它可以向文件名添加散列,并创建一个清单JSON文件,将原始文件映射到散列版本。然后引用此清单JSON文件以提供文件的哈希版本
下面是一个Gulpfile示例,它监视JavaScript更改,缩小文件,使用哈希对其进行版本设置,将其映射到JSON文件中,并删除旧的过时版本:
import gulp from 'gulp';
import {exec} from 'child_process';
import hash from 'gulp-hash';
import uglify from 'gulp-uglify';
// Minifies main.js
gulp.task('script', () => {
exec('rm dist/scripts/main-*.min.js') // Deletes old hashed app JS file
return gulp
.src('dis/scripts/main.js') // Source file
.pipe(uglify()) // Minifies the file
.pipe(hash({ template: '<%= name %>-<%= hash %>.min<%= ext %>' })) // Adds randomly generated hash to JS file name
.pipe(gulp.dest('dist/scripts/`)) // Adds hashed JS file to destination dir
.pipe(hash.manifest('hashed-assets.json')) // Writes manifest JSON file
.pipe(gulp.dest(dist/)); // Adds manifest some destination dir
});
// Watch main.js file for changes
gulp.task('watch', () => {
gulp.watch('dist/scripts/main.js', ['script']);
});
// Default task
gulp.task('default', ['script', 'watch']);
当您更改main.js
时,监视任务将注意到您已更改了文件,并将触发脚本任务
在你的问题中,你就是这样做的#3我将不得不去找熟悉Pug.js的人,但总体目标是引用hashed assets.json
文件并迭代每个键以实现其值