Skip to content

Instantly share code, notes, and snippets.

@tonjohn
Created April 27, 2020 21:17
Show Gist options
  • Select an option

  • Save tonjohn/667c90d90bd0de6f9c71e1073608caeb to your computer and use it in GitHub Desktop.

Select an option

Save tonjohn/667c90d90bd0de6f9c71e1073608caeb to your computer and use it in GitHub Desktop.
Convert html files to Nuxt .vue files
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