mirror of
https://github.com/Einundzwanzig-Podcast/einundzwanzig.space.git
synced 2025-12-13 16:26:50 +00:00
🎉 Initial setup
🎉 Initial setup
Setup deployment
This commit is contained in:
13
tasks/fetch_feed.js
Normal file
13
tasks/fetch_feed.js
Normal file
@@ -0,0 +1,13 @@
|
||||
const { writeFileSync } = require('fs')
|
||||
const { join, resolve } = require('path')
|
||||
const Parser = require('rss-parser')
|
||||
|
||||
const dir = resolve(__dirname, '..')
|
||||
const dst = join(dir, 'feed.json')
|
||||
|
||||
;(async () => {
|
||||
const parser = new Parser()
|
||||
const feed = await parser.parseURL('https://anchor.fm/s/d8d3c38/podcast/rss')
|
||||
|
||||
writeFileSync(dst, JSON.stringify(feed, null, 2))
|
||||
})()
|
||||
22
tasks/generate_pages.js
Normal file
22
tasks/generate_pages.js
Normal file
@@ -0,0 +1,22 @@
|
||||
const pug = require('pug')
|
||||
const { mkdirSync, writeFileSync } = require('fs')
|
||||
const { dirname, resolve } = require('path')
|
||||
const config = require('../pug.config')
|
||||
const site = require('../site-data')
|
||||
const feed = require('../feed.json')
|
||||
const team = require('../content/team.json')
|
||||
|
||||
const renderPage = (name, out, data = {}) => {
|
||||
const file = resolve(__dirname, '..', `src/${name}.pug`)
|
||||
const options = Object.assign({}, config, { site }, data)
|
||||
const rendered = pug.renderFile(file, options)
|
||||
const dst = resolve(__dirname, '..', 'dist', `${out}.html`)
|
||||
const dir = dirname(dst)
|
||||
|
||||
mkdirSync(dir, { recursive: true })
|
||||
writeFileSync(dst, rendered)
|
||||
}
|
||||
|
||||
renderPage('index', 'index', { navCurrent: 'index' })
|
||||
renderPage('team', 'team/index', { navCurrent: 'team', team })
|
||||
renderPage('podcast', 'podcast/index', { navCurrent: 'podcast', feed })
|
||||
12
tasks/generate_site_data.js
Normal file
12
tasks/generate_site_data.js
Normal file
@@ -0,0 +1,12 @@
|
||||
const { writeFileSync } = require('fs')
|
||||
const { join, resolve } = require('path')
|
||||
|
||||
const meta = require('../content/meta.json')
|
||||
|
||||
const dir = resolve(__dirname, '..')
|
||||
const dst = join(dir, 'site-data.json')
|
||||
|
||||
const date = (new Date()).toJSON().split('T')[0]
|
||||
const data = { date, meta }
|
||||
|
||||
writeFileSync(dst, JSON.stringify(data, null, 2))
|
||||
14
tasks/optimize_images.js
Normal file
14
tasks/optimize_images.js
Normal file
@@ -0,0 +1,14 @@
|
||||
const compress_images = require('compress-images')
|
||||
const input = 'compress/*.{jpg,png,svg,gif}'
|
||||
const output = 'compress/out/'
|
||||
|
||||
compress_images(input, output, { compress_force: true, statistic: true, autoupdate: false }, false,
|
||||
{ jpg: { engine: "mozjpeg", command: ["-quality", "60"] } },
|
||||
{ png: { engine: "pngquant", command: ["--quality=20-50", "-o"] } },
|
||||
{ svg: { engine: "svgo", command: "--multipass" } },
|
||||
{ gif: { engine: "gifsicle", command: ["--colors", "64", "--use-col=web"] } },
|
||||
(error, completed, statistic) => {
|
||||
if (error) console.error(error)
|
||||
if (statistic) console.log(statistic)
|
||||
}
|
||||
)
|
||||
Reference in New Issue
Block a user