Initial commit
Static site generation from md wip
This commit is contained in:
5
.firebaserc
Normal file
5
.firebaserc
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"projects": {
|
||||||
|
"default": "blog-zacke-dev"
|
||||||
|
}
|
||||||
|
}
|
||||||
68
.gitignore
vendored
Normal file
68
.gitignore
vendored
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
firebase-debug.log*
|
||||||
|
firebase-debug.*.log*
|
||||||
|
|
||||||
|
# Firebase cache
|
||||||
|
.firebase/
|
||||||
|
|
||||||
|
# Firebase config
|
||||||
|
|
||||||
|
# Uncomment this if you'd like others to create their own Firebase project.
|
||||||
|
# For a team working on the same Firebase project(s), it is recommended to leave
|
||||||
|
# it commented so all members can deploy to the same project(s) in .firebaserc.
|
||||||
|
# .firebaserc
|
||||||
|
|
||||||
|
# Runtime data
|
||||||
|
pids
|
||||||
|
*.pid
|
||||||
|
*.seed
|
||||||
|
*.pid.lock
|
||||||
|
|
||||||
|
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||||
|
lib-cov
|
||||||
|
|
||||||
|
# Coverage directory used by tools like istanbul
|
||||||
|
coverage
|
||||||
|
|
||||||
|
# nyc test coverage
|
||||||
|
.nyc_output
|
||||||
|
|
||||||
|
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
|
||||||
|
.grunt
|
||||||
|
|
||||||
|
# Bower dependency directory (https://bower.io/)
|
||||||
|
bower_components
|
||||||
|
|
||||||
|
# node-waf configuration
|
||||||
|
.lock-wscript
|
||||||
|
|
||||||
|
# Compiled binary addons (http://nodejs.org/api/addons.html)
|
||||||
|
build/Release
|
||||||
|
|
||||||
|
# Dependency directories
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# Optional npm cache directory
|
||||||
|
.npm
|
||||||
|
|
||||||
|
# Optional eslint cache
|
||||||
|
.eslintcache
|
||||||
|
|
||||||
|
# Optional REPL history
|
||||||
|
.node_repl_history
|
||||||
|
|
||||||
|
# Output of 'npm pack'
|
||||||
|
*.tgz
|
||||||
|
|
||||||
|
# Yarn Integrity file
|
||||||
|
.yarn-integrity
|
||||||
|
|
||||||
|
# dotenv environment variables file
|
||||||
|
.env
|
||||||
|
|
||||||
|
.dist
|
||||||
69
build.js
Normal file
69
build.js
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
import * as fs from "fs";
|
||||||
|
|
||||||
|
const paths = {
|
||||||
|
output: ".dist",
|
||||||
|
notes: {
|
||||||
|
root: "notes",
|
||||||
|
assets: "assets",
|
||||||
|
note: "note.md",
|
||||||
|
},
|
||||||
|
templates: {
|
||||||
|
root: "templates",
|
||||||
|
note: "note.html",
|
||||||
|
index: "index.html",
|
||||||
|
notFound: "404.html",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
if (fs.readdirSync(".").includes(paths.output)) {
|
||||||
|
fs.rmSync(paths.output, { recursive: true, force: true });
|
||||||
|
}
|
||||||
|
fs.mkdirSync(paths.output);
|
||||||
|
|
||||||
|
const directoryNames = fs.readdirSync(paths.notes.root);
|
||||||
|
const manifest = directoryNames.map((noteDirectory) => ({
|
||||||
|
directoryName: noteDirectory,
|
||||||
|
name: noteDirectory,
|
||||||
|
markdown: fs.readFileSync(
|
||||||
|
`${paths.notes.root}/${noteDirectory}/${paths.notes.note}`,
|
||||||
|
{ encoding: "utf-8" }
|
||||||
|
),
|
||||||
|
assetDirectoryPath: `${paths.notes.root}/${noteDirectory}/${paths.notes.assets}`,
|
||||||
|
}));
|
||||||
|
|
||||||
|
manifest.forEach((m) => {
|
||||||
|
const notePath = `${paths.templates.root}/${paths.templates.note}`;
|
||||||
|
let htmlTemplate = fs.readFileSync(notePath, {
|
||||||
|
encoding: "utf-8",
|
||||||
|
});
|
||||||
|
htmlTemplate = htmlTemplate.replace("{{markdown}}", m.markdown);
|
||||||
|
fs.writeFileSync(`${paths.output}/${m.directoryName}.html`, htmlTemplate, {
|
||||||
|
encoding: "utf-8",
|
||||||
|
flag: "ax",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
[paths.templates.notFound].forEach((filename) => {
|
||||||
|
fs.copyFileSync(
|
||||||
|
`${paths.templates.root}/${filename}`,
|
||||||
|
`${paths.output}/${filename}`
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
let htmlTemplate = fs.readFileSync(
|
||||||
|
`${paths.templates.root}/${paths.templates.index}`,
|
||||||
|
{
|
||||||
|
encoding: "utf-8",
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
const links = manifest.map(
|
||||||
|
(m) => `<a href='/${m.directoryName}.html'>${m.name}</a>`
|
||||||
|
);
|
||||||
|
htmlTemplate = htmlTemplate.replace("{{content}}", links);
|
||||||
|
fs.writeFileSync(`${paths.output}/index.html`, htmlTemplate, {
|
||||||
|
encoding: "utf-8",
|
||||||
|
flag: "ax",
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log(manifest);
|
||||||
6
firebase.json
Normal file
6
firebase.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"hosting": {
|
||||||
|
"public": ".dist",
|
||||||
|
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"]
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
notes/1-initial-commit/assets/git.png
Normal file
BIN
notes/1-initial-commit/assets/git.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.3 KiB |
6
notes/1-initial-commit/note.md
Normal file
6
notes/1-initial-commit/note.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# Initial commit
|
||||||
|
|
||||||
|
Testing
|
||||||
|
|
||||||
|
- testing
|
||||||
|
[testing](https://blog.zacke.dev)
|
||||||
1001
package-lock.json
generated
Normal file
1001
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
19
package.json
Normal file
19
package.json
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"name": "blog",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"type": "module",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"init": "npm install -g firebase-tools && firebase login",
|
||||||
|
"serve": "serve .dist"
|
||||||
|
},
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"devDependencies": {
|
||||||
|
"serve": "^14.2.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@types/node": "^20.6.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
17
templates/404.html
Normal file
17
templates/404.html
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<title>Page Not Found</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="message">
|
||||||
|
<h2>404</h2>
|
||||||
|
<h1>Page Not Found</h1>
|
||||||
|
<p>The specified file was not found on this website. Please check the URL for mistakes and try again.</p>
|
||||||
|
<h3>Why am I seeing this?</h3>
|
||||||
|
<p>This page was generated by the Firebase Command-Line Interface. To modify it, edit the <code>404.html</code> file in your project's configured <code>public</code> directory.</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
11
templates/index.html
Normal file
11
templates/index.html
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Document</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
{{content}}
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
11
templates/note.html
Normal file
11
templates/note.html
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Document</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
{{markdown}}
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Reference in New Issue
Block a user