Jelajahi Sumber

fix: add style hash

代强 2 tahun lalu
induk
melakukan
9ab3e6efa1
1 mengubah file dengan 65 tambahan dan 26 penghapusan
  1. 65 26
      gatsby-node.js

+ 65 - 26
gatsby-node.js

@@ -349,34 +349,73 @@ exports.onPostBuild = async () => {
         }
     }
 
-    const jsFiles = glob.sync(`${publicPath}/*.js`);
-
-    const replaceNames = {};
-    for (let file of jsFiles) {
-        const filename = path.basename(file);
-        const fileNameWithoutExt = filename.split('.')[0];
-        const originHash = fileNameWithoutExt.split('-').at(-1);
-
-        if (originHash && originHash!==fileNameWithoutExt){
-            let fileNameWithoutExtWithHash = fileNameWithoutExt.replace(originHash, `${originHash}${numHash}`);
-            replaceNames[originHash] = `${originHash}${numHash}`;
-            fs.renameSync(file, path.join(path.dirname(file), `${fileNameWithoutExtWithHash}.js`));
-        } else {
-            let finalFileName = `${fileNameWithoutExt}${numHash}.js`;
-            replaceNames[filename] = finalFileName;
-            fs.renameSync(file, path.join(path.dirname(file), finalFileName));
+    (()=>{
+        const jsFiles = glob.sync(`${publicPath}/*.js`);
+
+        const replaceNames = {};
+        for (let file of jsFiles) {
+            const filename = path.basename(file);
+            const fileNameWithoutExt = filename.split('.')[0];
+            const originHash = fileNameWithoutExt.split('-').at(-1);
+
+            if (originHash && originHash!==fileNameWithoutExt){
+                let fileNameWithoutExtWithHash = fileNameWithoutExt.replace(originHash, `${originHash}${numHash}`);
+                replaceNames[originHash] = `${originHash}${numHash}`;
+                fs.renameSync(file, path.join(path.dirname(file), `${fileNameWithoutExtWithHash}.js`));
+            } else {
+                let finalFileName = `${fileNameWithoutExt}${numHash}.js`;
+                replaceNames[filename] = finalFileName;
+                fs.renameSync(file, path.join(path.dirname(file), finalFileName));
+            }
         }
-    }
-    const allFiles = glob.sync(`${publicPath}/**/*.{js,html,json}`);
-    for (let file of allFiles) {
-        const stats = fs.statSync(file);
-        if (stats.isFile()) {
-            let result = fs.readFileSync(file, 'utf8');
-            for (let [oldName, newName] of Object.entries(replaceNames)) {
-                result = result.replaceAll(oldName, newName);
+        const allFiles = glob.sync(`${publicPath}/**/*.{js,html,json}`);
+        for (let file of allFiles) {
+            const stats = fs.statSync(file);
+            if (stats.isFile()) {
+                let result = fs.readFileSync(file, 'utf8');
+                for (let [oldName, newName] of Object.entries(replaceNames)) {
+                    result = result.replaceAll(oldName, newName);
+                }
+                fs.writeFileSync(file, result, 'utf8');
             }
-            fs.writeFileSync(file, result, 'utf8');
         }
-    }
+    })();
+
+
+
+    (()=>{
+        const cssFiles = glob.sync(`${publicPath}/*.css`);
+
+        const replaceNames = {};
+        for (let file of cssFiles) {
+            const { base: filename, name: fileNameWithoutExt } = path.parse(file);
+            const originHash = fileNameWithoutExt.split('.').at(-1);
+
+
+            if (originHash && originHash!==fileNameWithoutExt){
+                let fileNameWithoutExtWithHash = fileNameWithoutExt.replace(originHash, `${originHash}${numHash}`);
+                replaceNames[originHash] = `${originHash}${numHash}`;
+                fs.renameSync(file, path.join(path.dirname(file), `${fileNameWithoutExtWithHash}.css`));
+            } else {
+                let finalFileName = `${fileNameWithoutExt}${numHash}.css`;
+                replaceNames[filename] = finalFileName;
+                fs.renameSync(file, path.join(path.dirname(file), finalFileName));
+            }
+
+        }
+        const allFiles = glob.sync(`${publicPath}/**/*.{js,html,json}`);
+        for (let file of allFiles) {
+            const stats = fs.statSync(file);
+            if (stats.isFile()) {
+                let result = fs.readFileSync(file, 'utf8');
+                for (let [oldName, newName] of Object.entries(replaceNames)) {
+                    result = result.replaceAll(oldName, newName);
+                }
+                fs.writeFileSync(file, result, 'utf8');
+            }
+        }
+    })();
+
+
 
 };