{"id":1305,"date":"2018-09-26T08:03:35","date_gmt":"2018-09-26T07:03:35","guid":{"rendered":"https:\/\/solidt.eu\/site\/?p=1305"},"modified":"2018-09-26T08:03:35","modified_gmt":"2018-09-26T07:03:35","slug":"script-generate-cache-manifest","status":"publish","type":"post","link":"https:\/\/solidt.eu\/site\/script-generate-cache-manifest\/","title":{"rendered":"Script Generate Cache Manifest"},"content":{"rendered":"<pre class=\"lang:js decode:true\" title=\"generate-appcache.js\">const recursive = require(\"recursive-readdir\");\r\nconst path = require(\"path\");\r\nconst fs = require(\"fs\");\r\n\r\nconst regexes = [\r\n    \/assets\\\/\/,\r\n    \/\\.(html|css|js|ico|json|mf)$\/i\r\n];\r\n\r\nconst dirToProcess = \"dist\/\";\r\nconst targetFile = \"dist\/index.mf\"\r\n\r\nrecursive(dirToProcess, function (err, files) {\r\n    \/\/ `files` is an array of file paths\r\n\r\n    let filesToCache = [];\r\n    files.forEach((file) =&gt; {\r\n        const found = regexes.some((r) =&gt; r.test(file));\r\n        if (found) {\r\n            filesToCache.push(file.slice(dirToProcess.length));\r\n        }\r\n    });\r\n\r\n    filesToCache.sort((a, b) =&gt; {\r\n        return a.length - b.length;\r\n    });\r\n\r\n    filesToCache.unshift(\"CACHE MANIFEST\");\r\n    const randomStr = \"#\" + Math.random().toString().substring(2);\r\n    filesToCache.push(randomStr);\r\n    filesToCache.push(\"NETWORK:\");\r\n    filesToCache.push(\"*\");\r\n\r\n    const cacheManifest = filesToCache.join('\\r\\n');\r\n    console.log(cacheManifest);\r\n    fs.writeFileSync(targetFile, cacheManifest);\r\n});\r\n<\/pre>\n<pre class=\"lang:default decode:true \">npm i --save recursive-readdir<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>const recursive = require(&#8220;recursive-readdir&#8221;); const path = require(&#8220;path&#8221;); const fs = require(&#8220;fs&#8221;); const regexes = [ \/assets\\\/\/, \/\\.(html|css|js|ico|json|mf)$\/i ]; const dirToProcess = &#8220;dist\/&#8221;; const targetFile = &#8220;dist\/index.mf&#8221; recursive(dirToProcess, function (err, files) { \/\/ `files` is an array of file paths let filesToCache = []; files.forEach((file) =&gt; { const found = regexes.some((r) =&gt; r.test(file)); if (found) [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[5],"tags":[],"class_list":["post-1305","post","type-post","status-publish","format-standard","hentry","category-javascript"],"_links":{"self":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/1305","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/comments?post=1305"}],"version-history":[{"count":1,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/1305\/revisions"}],"predecessor-version":[{"id":1306,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/1305\/revisions\/1306"}],"wp:attachment":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/media?parent=1305"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/categories?post=1305"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/tags?post=1305"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}