Created
April 27, 2020 21:17
-
-
Save tonjohn/667c90d90bd0de6f9c71e1073608caeb to your computer and use it in GitHub Desktop.
Convert html files to Nuxt .vue files
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| let vTemplate = ""; | |
| let vScript = ""; | |
| let vStyle = ""; | |
| const path = require("path"); | |
| const PATH_READ = path.join(__dirname, "../classic"); | |
| const PATH_WRITE = path.join(__dirname, "../dist/"); | |
| const fs = require("fs"); | |
| const cheerio = require("cheerio"); | |
| // for every html file... | |
| // starts with "compare", goes in compare folder, ends with 'review' reviews folder | |
| // extract everything between header and footer, save in <template> | |
| // - update image paths | |
| // - find all img tags | |
| // - .indexOf('images') and "~/assets/" + .slice(index) | |
| // - update urls | |
| // extract style and script tags | |
| function dataLoaded(data, page) { | |
| $ = cheerio.load(data); | |
| $("img").each(function() { | |
| var old_src = $(this).attr("src"); | |
| var new_src = "~/assets/" + old_src.slice(old_src.indexOf("images/")); | |
| console.log(new_src); | |
| $(this).attr("src", new_src); | |
| }); | |
| let maincontent = $(".container"); | |
| // console.log(maincontent[2]); | |
| vTemplate = $.html(maincontent[2]); | |
| // console.log(vTemplate); | |
| let vueFile = ` | |
| <script> | |
| // ${page} | |
| export default { | |
| name:"${page}-page", | |
| components: {}, | |
| data() { | |
| return { | |
| }; | |
| }, | |
| head() { | |
| return { | |
| title: "", | |
| meta: [ | |
| { | |
| hid: "description", | |
| name: "description", | |
| content: "" | |
| } | |
| ] | |
| }; | |
| } | |
| }; | |
| ${vScript} | |
| </script> | |
| <template> | |
| ${vTemplate} | |
| </template> | |
| <style> | |
| ${vStyle} | |
| </style>`; | |
| fs.writeFileSync(`${PATH_WRITE}/${page}.vue`, vueFile); | |
| } | |
| fs.readdir(PATH_READ, function(err, items) { | |
| console.log(items); | |
| for (var i = 0; i < items.length; i++) { | |
| [fileName, fileType] = items[i].split("."); | |
| if (fileType == "html") { | |
| console.log(items[i]); | |
| let data = fs.readFileSync(`${PATH_READ}/${items[i]}`, "utf8"); | |
| dataLoaded(data, fileName); | |
| } | |
| } | |
| }); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment