Browse Source

REFA,CHORE: introducing module bundling

dev-feat-component_preview
chris 2 months ago
parent
commit
e4e4c60f27
  1. 67
      generate_single_file.js

67
generate_single_file.js

@ -37,11 +37,13 @@ class OAO {
}
}
const copyright_disclaimer = `/*
const copyright_disclaimer = `
/**
* This file is part of the jps-like-websites lib
* URL: https://git.labos.goip.de/chris/jpc-like-websites
* @copyright by its creator Christian Martin
*/
`;
let fileOrder = Object.assign(new OAO(), require('./fileOrder.json'));
@ -118,20 +120,45 @@ function resolveDependencyOrder(oao) {
}
function appendContent(srcFile, targetFile) {
return fs.readFile(srcFile, 'utf8')
.then(content => {
console.log(`Processing '${srcFile}'`);
console.log(` READ: successfully!`)
console.log(` Attepting to append`);
return fs.appendFile(targetFile, content);
})
.then(() => {
console.log(` Append/Write: successfully!`);
})
.catch(error => {
console.error(`Error reading/writing files: ${error.message}`);
})
/**
*
* @param {string} srcFile path to src file
* @param {string} targetFile path of target file that will contain all scripts
*/
async function appendContent(srcFile, targetFile) {
try {
let content = await fs.readFile(srcFile, 'utf8');
console.log(`Processing '${srcFile}'`);
console.log(` READ: successfully!`);
console.log(` Adding Copyright disclaimer!`);
console.log(` Attepting to append to default script variant`);
content = [
...copyright_disclaimer.split('\r\n'),
...content.split('\r\n')
];
await fs.appendFile(targetFile, content.join('\r\n'));
console.log(` Adding export to "modulize"!`);
/**
* Checks weither the given line starts with any of the exportable values.
* @param {string} line
* @returns {boolean}
*/
const isExpStarter = line => ["function", "const", "let", "class"].some(starter => line.startsWith(starter));
console.log(` Attepting to append to module variant`);
await fs.appendFile(
targetFileModule,
content
.map(l => (isExpStarter(l) ? "export " : "") + l)
.join('\r\n')
);
console.log(` Append/Write: successfully!`);
} catch (error) {
console.error(`Error reading/writing files: ${error.message}`);
}
}
@ -150,14 +177,16 @@ let orderedJoinList = fileOrder.keys
const targetFile = "./jpc-like-websites.js";
const targetFileModule = "./jpc-like-websites.module.js";
console.log("(Re-) Creating target file: '" + targetFile + "'");
/* EMPTY (create?) TARGET FILE */
fs.writeFile(targetFile, "", err => { })
fs.writeFile(targetFile, "", err => { });
fs.writeFile(targetFileModule, "", err => { });
orderedJoinList
.reduce((prevPromise, filePath) => prevPromise
.then(
()=>appendContent(filePath, targetFile)
), Promise.resolve())
.then(
() => appendContent(filePath, targetFile)
), Promise.resolve())

Loading…
Cancel
Save