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
  • 相应地更新源映射名称。源映射的名称应该与js文件相同,因为源映射的哈希将不同于缩小的js文件
  • 最后,以某种方式更新视图中的引用。根据我的需要,使用正确的引用更新
    views/**
    下的pug模板。适用于所有人(js | css | img)
  • 该模块可以满足您的需要。它可以向文件名添加散列,并创建一个清单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的人,但总体目标是引用
    散列资产.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
    文件并迭代每个键以实现其值