UNPKG

web-analyst

Version:

Web Analyst is a simple back-end tracking system to measure your web app performance.

68 lines (51 loc) 1.71 kB
const {existsSync, readFileSync, writeFileSync, mkdirSync, statSync} = require("fs"); const glob = require("glob"); const {joinPath} = require("@thimpat/libutils"); const rootDir = joinPath(__dirname, ".."); process.chdir(rootDir); const packageJsonPath = joinPath(rootDir, "package.json"); const packageJson = require(packageJsonPath); const templatesDir = joinPath(rootDir, "templates"); mkdirSync(templatesDir, {recursive: true}); const outputDir = joinPath(rootDir, "web"); mkdirSync(outputDir, {recursive: true}); // options is optional const files = glob.sync(`**/*`, { cwd : templatesDir }); for (let i = 0; i < files.length; ++i) { const originalFile = joinPath(templatesDir, files[i]); const targetFile = joinPath(outputDir, files[i]); if (statSync(originalFile).isDirectory()) { if (!existsSync(targetFile)) { mkdirSync(targetFile, {recursive: true}); } continue; } const initialContent = readFileSync(originalFile, {encoding: "utf-8"}); const finalContent = initialContent.replace(/\{\{([^}]+)}}/g, (match, offset) => { const val = packageJson[offset]; if (!val) { return match; } return val; }); if (initialContent === finalContent) { if (!existsSync(targetFile)) { writeFileSync(targetFile, finalContent, {encoding: "utf8"}); console.log(`Generated: [${targetFile}]`); } } else { writeFileSync(targetFile, finalContent, {encoding: "utf8"}); console.log(`Updated: [${originalFile}]`); } }