diff --git a/.gitignore b/.gitignore index 8262c5df667..1630576736b 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ /node_modules /rev-manifest.json /site-data.json +/feed.json diff --git a/package-lock.json b/package-lock.json index 9d37b5f59c8..631debdb803 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9200,6 +9200,24 @@ "align-text": "^0.1.1" } }, + "rss-parser": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/rss-parser/-/rss-parser-3.9.0.tgz", + "integrity": "sha512-wlRSfGrotOXuWo19Dtl2KmQt7o9i5zzCExUrxpechE0O54BAx7JD+xhWyGumPPqiJj771ndflV3sE3bTHen0HQ==", + "dev": true, + "requires": { + "entities": "^2.0.3", + "xml2js": "^0.4.19" + }, + "dependencies": { + "entities": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", + "dev": true + } + } + }, "run-parallel": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", @@ -9235,8 +9253,7 @@ "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "optional": true + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "seek-bzip": { "version": "1.0.6", @@ -10468,6 +10485,22 @@ "async-limiter": "~1.0.0" } }, + "xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dev": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true + }, "xmlhttprequest-ssl": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", diff --git a/package.json b/package.json index 9d1dccfa934..2e96c5f2f4b 100644 --- a/package.json +++ b/package.json @@ -9,20 +9,21 @@ "node": ">=14.0.0" }, "scripts": { - "clean": "rm -rf rev-manifest.json site-data.json dist/* && mkdir -p dist", - "start": "npm-run-all clean -p start:*", + "clean": "rm -rf rev-manifest.json feed.json site-data.json dist/* && mkdir -p dist", + "fetch": "node tasks/fetch_feed.js", + "start": "npm-run-all clean fetch -p start:*", "start:pages": "onchange -i -k 'site-data.json' 'pug.config.js' 'markdown.js' 'src/**/*.pug' 'src/**/*.svg' 'tasks/generate_pages.js' -- npm run build:pages", "start:styles": "onchange -i -k 'src/**/*.css' -- npm run build:styles", "start:data": "onchange -i -k 'content/**/*' -- npm run build:data", "start:serve": "browser-sync start --config browser-sync.config.js --watch", - "build": "npm-run-all clean -p build:*", + "build": "npm-run-all clean fetch -p build:*", "build:static": "cp -r static/* dist", "build:data": "node tasks/generate_site_data.js", "build:pages": "node tasks/generate_pages.js", "build:styles": "postcss src/css/main.css --output dist/css/main.css", "optimize": "npm-run-all -p optimize:* -s rev", "optimize:styles": "csso dist/css/main.css --output dist/css/main.css", - "rev": "node-file-rev --root=dist/ dist/css/* dist/js/* dist/img/*.jpg dist/img/*.png dist/img/*.svg", + "rev": "node-file-rev --root=dist dist/css/* dist/js/* dist/img/*.png dist/img/*.svg dist/img/team/*.jpg dist/img/team/*.png", "prod": "npm-run-all build optimize -s build:pages", "images": "node tasks/optimize_images.js" }, @@ -42,7 +43,8 @@ "postcss-import": "12.0.1", "postcss-media-variables": "2.0.1", "postcss-nesting": "7.0.1", - "pug-cli": "1.0.0-alpha6" + "pug-cli": "1.0.0-alpha6", + "rss-parser": "3.9.0" }, "optionalDependencies": { "compress-images": "1.9.5",