Jelajahi Sumber

fix: add hash to all static files of docsite

代强 2 tahun lalu
induk
melakukan
29ecfc791f
1 mengubah file dengan 31 tambahan dan 20 penghapusan
  1. 31 20
      gatsby-node.js

+ 31 - 20
gatsby-node.js

@@ -12,21 +12,7 @@ const items = ['basic', 'chart'];
 const sha1 = require('sha1');
 const hash = sha1(`${new Date().getTime()}${Math.random()}`);
 const glob = require('glob');
-const addPageDataVersion = async file => {
-    const stats = fs.statSync(file);
-    if (stats.isFile()) {
-        console.log(`Adding version to page-data.json app-data.json designToken.json in ${file}..`);
-        let content = fs.readFileSync(file, 'utf8');
-        const result = content.replace(
-            /page-data.json(\?v=[a-f0-9]{32})?/g,
-            `page-data.json?v=${hash}`
-        ).replace(/app-data.json(\?v=[a-f0-9]{32})?/g,
-            `app-data.json?v=${hash}`
-        ).replace(/designToken.json(\?v=[a-f0-9]{32})?/g,
-            `designToken.json?v=${hash}`);
-        fs.writeFileSync(file, result, 'utf8');
-    }
-};
+
 
 function resolve(dir) {
     return path.resolve(__dirname, dir);
@@ -298,15 +284,40 @@ exports.createPages = async ({ actions, graphql, reporter }) => {
     });
 };
 
-exports.onPostBootstrap = async () => {
-    const loader = path.join(__dirname, 'node_modules/gatsby/cache-dir/loader.js');
-    await addPageDataVersion(loader);
-};
 
 exports.onPostBuild = async () => {
     const publicPath = path.join(__dirname, 'public');
+
+    const pageDataFiles = glob.sync(`${publicPath}/page-data/**/page-data.json`);
+    for (let file of pageDataFiles) {
+        console.log(file);
+        const newFilename = file.replace(`page-data.json`, `page-data.${hash}.json`);
+        fs.renameSync(file, newFilename);
+    }
+
+    const appDataFiles = glob.sync(`${publicPath}/page-data/**/app-data.json`);
+    for (let file of appDataFiles) {
+        console.log(file);
+        const newFilename = file.replace(`app-data.json`, `app-data.${hash}.json`);
+        fs.renameSync(file, newFilename);
+    }
+
     const htmlAndJSFiles = glob.sync(`${publicPath}/**/*.{html,js}`);
     for (let file of htmlAndJSFiles) {
-        await addPageDataVersion(file);
+        const stats = fs.statSync(file);
+        if (stats.isFile()) {
+            console.log(`Adding version to page-data.json app-data.json designToken.json in ${file}..`);
+            let content = fs.readFileSync(file, 'utf8');
+            const result = content.replace(
+                /page-data.json(\?v=[a-f0-9]*)?/g,
+                `page-data.${hash}.json`
+            ).replace(/app-data.json(\?v=[a-f0-9]*)?/g,
+                `app-data.${hash}.json`
+            ).replace(/designToken.json(\?v=[a-f0-9]*)?/g,
+                `designToken.json?v=${hash}`);
+            fs.writeFileSync(file, result, 'utf8');
+        }
     }
+
+
 };