Skip to content

Commit 0a8d74d

Browse files
committed
use static hashes
1 parent 16ea4a9 commit 0a8d74d

8 files changed

+38
-15
lines changed

.gitignore

+3-5
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@ node_modules/
33
*.log
44
*.DS_Store
55
public/css/main.css
6-
public/css/main-v8.css
7-
public/js/main.js
8-
public/js/main-v8.js
9-
public/js/main.js.map
10-
public/js/main-v8.js.map
6+
public/css/main.*.css
7+
public/js/*.js
8+
public/js/*.map
119
public/release-notes/*.html
1210
public/contribute/index.html
1311
public/cli/*.html

build/build-pages.js

+10
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,14 @@ function buildPages(
8888
dest = './public',
8989
} = {},
9090
) {
91+
const cssHash = fs
92+
.readdirSync('./public/css')
93+
.filter((f) => f.includes('main.'))[0]
94+
.split('.')[1];
95+
const jsHash = fs
96+
.readdirSync('./public/js')
97+
.filter((f) => f.includes('main.') && !f.includes('main.js'))[0]
98+
.split('.')[1];
9199
const cdn = process.argv.slice(3)
92100
? process.argv.slice(3).toString().replace('-', '') !== 'local'
93101
: true;
@@ -140,6 +148,8 @@ function buildPages(
140148
version: releaseVersion,
141149
date: releaseDate,
142150
},
151+
cssHash,
152+
jsHash,
143153
cdn: cdn ? pkg.cdn : '',
144154
icons: iconsManifest.icons,
145155
getYamlData,

build/build-script.js

+12-5
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
const fs = require('fs');
2+
const crypto = require('crypto');
23
const rollup = require('rollup');
34
const { babel } = require('@rollup/plugin-babel');
45
const { nodeResolve } = require('@rollup/plugin-node-resolve');
56
const Terser = require('terser');
67
const replace = require('@rollup/plugin-replace');
78

89
function build(cb) {
10+
fs.readdirSync('./public/js').forEach((f) => {
11+
if (f.includes('main')) {
12+
fs.unlinkSync(`./public/js/${f}`);
13+
}
14+
});
915
rollup
1016
.rollup({
1117
input: './src/js/main.js',
@@ -23,25 +29,26 @@ function build(cb) {
2329
.then((bundle) => {
2430
return bundle.write({
2531
strict: true,
26-
file: './public/js/main-v8.js',
32+
file: './public/js/main.js',
2733
format: 'umd',
2834
name: 'app',
2935
sourcemap: true,
30-
sourcemapFile: './public/js/main-v8.js.map',
36+
sourcemapFile: './public/js/main.js.map',
3137
});
3238
})
3339
.then(async (bundle) => {
3440
const result = bundle.output[0];
41+
const hash = crypto.createHash('md5').update(result.code).digest('hex').slice(0, 6);
3542

3643
const minified = await Terser.minify(result.code, {
3744
sourceMap: {
3845
content: result.map,
39-
url: 'main-v8.js.map',
46+
url: `main.${hash}.js.map`,
4047
},
4148
});
4249

43-
fs.writeFileSync('./public/js/main-v8.js', minified.code);
44-
fs.writeFileSync('./public/js/main-v8.js.map', minified.map);
50+
fs.writeFileSync(`./public/js/main.${hash}.js`, minified.code);
51+
fs.writeFileSync(`./public/js/main.${hash}.js.map`, minified.map);
4552

4653
cb();
4754
})

build/build-styles.js

+9-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
const fs = require('fs');
2+
const crypto = require('crypto');
23
const path = require('path');
34
const gulp = require('gulp');
45
const gulpLess = require('gulp-less');
56
const connect = require('gulp-connect');
67
const cleanCss = require('gulp-clean-css');
78

89
function buildLess(cb) {
10+
fs.readdirSync('./public/css').forEach((f) => {
11+
if (f.includes('main')) {
12+
fs.unlinkSync(`./public/css/${f}`);
13+
}
14+
});
915
gulp
1016
.src(['./src/less/main.less'])
1117
.pipe(
@@ -17,9 +23,11 @@ function buildLess(cb) {
1723
.pipe(gulp.dest('./public/css/'))
1824
.pipe(connect.reload())
1925
.on('end', () => {
26+
const content = fs.readFileSync(path.resolve(__dirname, '../public/css/main.css'));
27+
const hash = crypto.createHash('md5').update(content).digest('hex').slice(0, 6);
2028
fs.renameSync(
2129
path.resolve(__dirname, '../public/css/main.css'),
22-
path.resolve(__dirname, '../public/css/main-v8.css'),
30+
path.resolve(__dirname, `../public/css/main.${hash}.css`),
2331
);
2432
if (cb) cb();
2533
});

gulpfile.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ gulp.task('svelte-demos', buildSvelteDemos.all);
2525
gulp.task('vue-demos', buildVueDemos.all);
2626
gulp.task('react-demos', buildReactDemos.all);
2727
gulp.task('demos', gulp.series(['core-demos', 'svelte-demos', 'vue-demos', 'react-demos']));
28-
gulp.task('build', gulp.series(['sponsors', 'pug', 'less', 'js', 'demos']));
28+
gulp.task('build', gulp.series(['sponsors', 'less', 'js', 'pug', 'demos']));
2929

3030
/* =================================
3131
Watch

src/pug/_docs-template.pug

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ html
1818
link(rel="preconnect" href="https://fonts.gstatic.com" crossorigin)
1919
link(rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@docsearch/css@3")
2020
link(href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet")
21-
link(rel="stylesheet", href="/css/main-v8.css")
21+
link(rel="stylesheet", href=`/css/main.${cssHash}.css`)
2222
body.body-docs
2323
include _nav
2424
main

src/pug/_footer-scripts.pug

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
script(src="https://cdn.jsdelivr.net/npm/@docsearch/js@3")
2-
script(src="/js/main-v8.js")
2+
script(src=`/js/main.${jsHash}.js`)
33
script.
44
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
55
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),

src/pug/_internal-template.pug

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ html
2020
link(rel="preconnect" href="https://fonts.gstatic.com" crossorigin)
2121
link(rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@docsearch/css@3")
2222
link(href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet")
23-
link(rel="stylesheet", href="/css/main-v8.css")
23+
link(rel="stylesheet", href=`/css/main.${cssHash}.css`)
2424
body
2525
include _nav
2626
main

0 commit comments

Comments
 (0)