generated from nhcarrigan/template
This commit is contained in:
@@ -2,5 +2,6 @@ prod
|
||||
node_modules
|
||||
review.md
|
||||
content/**/*
|
||||
data/**/*
|
||||
!.gitkeep
|
||||
fcc-review-pages.pdf
|
||||
@@ -6,8 +6,9 @@ This tool allows you to compile all of freeCodeCamp's review lessons into a sing
|
||||
|
||||
1. Clone the repo, `pnpm install`.
|
||||
2. Go to the freeCodeCamp repo, copy all of the review blocks into the `content` directory here. Nested directories are fine, we walk the file tree recursively. Only markdown files will be parsed.
|
||||
3. Run `pnpm start` to start reading the files, compiling them into a single doc, and turning that doc into a PDF.
|
||||
4. Profit.
|
||||
3. Go to the freeCodeCamp repo, copy the Full Stack order in `/curriculum/structure/superblocks/fullstack.json` to the `data/order.json` here.
|
||||
4. Run `pnpm start` to start reading the files, compiling them into a single doc, and turning that doc into a PDF.
|
||||
5. Profit.
|
||||
|
||||
## Feedback and Bugs
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
This is where the superblock order goes.
|
||||
+19
-1
@@ -13,9 +13,16 @@ import {
|
||||
} from "node:fs/promises";
|
||||
import { join } from "node:path";
|
||||
import { mdToPdf } from "md-to-pdf";
|
||||
import order from "../data/order.json" assert { type: "json" };
|
||||
import { options } from "./config/options.js";
|
||||
import { starterText } from "./config/text.js";
|
||||
|
||||
const flattenedOrder: Array<string> = order.chapters.flatMap((chapter) => {
|
||||
return chapter.modules.flatMap((module) => {
|
||||
return module.blocks;
|
||||
});
|
||||
});
|
||||
|
||||
const readDirectoryRecursively = async(
|
||||
directory: string,
|
||||
): Promise<Array<string>> => {
|
||||
@@ -31,6 +38,14 @@ const readDirectoryRecursively = async(
|
||||
return files.flat();
|
||||
};
|
||||
|
||||
const sortFiles = (a: string, b: string): number => {
|
||||
const aDashedName = a.split("/").at(1);
|
||||
const bDashedName = b.split("/").at(1);
|
||||
const aIndex = flattenedOrder.indexOf(aDashedName ?? "");
|
||||
const bIndex = flattenedOrder.indexOf(bDashedName ?? "");
|
||||
return aIndex - bIndex;
|
||||
};
|
||||
|
||||
const rollupFiles = async(
|
||||
inputDirectory: string,
|
||||
outputFile: string,
|
||||
@@ -39,7 +54,10 @@ const rollupFiles = async(
|
||||
console.log("Process started...");
|
||||
await writeFile(outputFile, `${starterText}\n`);
|
||||
console.log("Reading content directory...");
|
||||
const files = await readDirectoryRecursively(inputDirectory);
|
||||
const unsortedFiles = await readDirectoryRecursively(inputDirectory);
|
||||
console.log(unsortedFiles);
|
||||
const files = unsortedFiles.toSorted(sortFiles);
|
||||
console.log("Files found, processing...");
|
||||
for (const file of files) {
|
||||
if (file === ".gitkeep") {
|
||||
continue;
|
||||
|
||||
+4
-1
@@ -2,6 +2,9 @@
|
||||
"extends": "@nhcarrigan/typescript-config",
|
||||
"compilerOptions": {
|
||||
"outDir": "./prod",
|
||||
"rootDir": "./src"
|
||||
"rootDir": "./src",
|
||||
"resolveJsonModule": true,
|
||||
"module": "esnext",
|
||||
"lib": ["es2024"]
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user