mirror of
https://github.com/veggiemonk/awesome-docker.git
synced 2024-12-22 22:19:30 -05:00
99 lines
2.6 KiB
Markdown
99 lines
2.6 KiB
Markdown
const fs = require('fs');
|
|
const showdown = require('showdown');
|
|
const cheerio = require('cheerio');
|
|
const Parcel = require('parcel-bundler');
|
|
const sm = require('sitemap');
|
|
|
|
process.env.NODE_ENV = 'production';
|
|
|
|
process.on('unhandledRejection', error => {
|
|
console.log('unhandledRejection', error.message);
|
|
});
|
|
|
|
const readme = 'README.md';
|
|
const template = 'website/index.tmpl.html';
|
|
const merged = 'website/index.html';
|
|
const destination = 'website/index.html';
|
|
|
|
const includeReadme = ({
|
|
md = readme,
|
|
templateHTML = template,
|
|
dest = merged,
|
|
} = {}) => {
|
|
const converter = new showdown.Converter({
|
|
omitExtraWLInCodeBlocks: true,
|
|
simplifiedAutoLink: true,
|
|
excludeTrailingPunctuationFromURLs: true,
|
|
literalMidWordUnderscores: true,
|
|
strikethrough: true,
|
|
tables: true,
|
|
tablesHeaderId: true,
|
|
ghCodeBlocks: true,
|
|
tasklists: true,
|
|
disableForced4SpacesIndentedSublists: true,
|
|
simpleLineBreaks: true,
|
|
requireSpaceBeforeHeadingText: true,
|
|
ghCompatibleHeaderId: true,
|
|
ghMentions: true,
|
|
backslashEscapesHTMLTags: true,
|
|
emoji: true,
|
|
splitAdjacentBlockquotes: true,
|
|
});
|
|
// converter.setFlavor('github');
|
|
|
|
console.log('Loading files...');
|
|
const indexTemplate = fs.readFileSync(templateHTML, 'utf8');
|
|
const markdown = fs.readFileSync(md, 'utf8');
|
|
|
|
console.log('Merging files...');
|
|
const $ = cheerio.load(indexTemplate);
|
|
$('#md').append(converter.makeHtml(markdown));
|
|
console.log('Writing index.html');
|
|
fs.writeFileSync(dest, $.html(), 'utf8');
|
|
console.log('DONE 👍');
|
|
};
|
|
|
|
const bundle = (dest = destination) => {
|
|
console.log('');
|
|
console.log('Bundling with Parcel.js');
|
|
console.log('');
|
|
|
|
new Parcel(dest, {
|
|
name: 'build',
|
|
publicURL: '/',
|
|
})
|
|
.bundle()
|
|
.then(() => {
|
|
// Creates a sitemap object given the input configuration with URLs
|
|
const sitemap = sm.createSitemap({
|
|
hostname: 'https://awesome-docker.netlify.com/',
|
|
cacheTime: 6000000, // 600 sec (10 min) cache purge period
|
|
urls: [
|
|
{
|
|
url: '/',
|
|
changefreq: 'daily',
|
|
priority: 0.8,
|
|
lastmodrealtime: true,
|
|
lastmodfile: 'dist/index.html',
|
|
},
|
|
{
|
|
url: '/table.html',
|
|
changefreq: 'weekly',
|
|
priority: 0.8,
|
|
lastmodrealtime: true,
|
|
lastmodfile: 'dist/table.html',
|
|
},
|
|
],
|
|
});
|
|
fs.writeFileSync('dist/sitemap.xml', sitemap.toString());
|
|
// fs.copyFileSync('website/sitemap.xml', 'dist/sitemap.xml');
|
|
});
|
|
};
|
|
|
|
const main = () => {
|
|
includeReadme();
|
|
bundle();
|
|
};
|
|
|
|
main();
|