{ "hosting": { "target": "nodejs-dev", "public": "public", "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ], "headers": [ { "source": "**/*", "headers": [ { "key": "cache-control", "value": "public, max-age=0, must-revalidate" } ] }, { "source": "static/**", "headers": [ { "key": "cache-control", "value": "public, max-age=31536000, immutable" } ] }, { "source": "**/*.@(css|js)", "headers": [ { "key": "cache-control", "value": "public, max-age=31536000, immutable" } ] }, { "source": "sw.js", "headers": [ { "key": "cache-control", "value": "public, max-age=0, must-revalidate" } ] }, { "source": "page-data/**", "headers": [ { "key": "cache-control", "value": "public, max-age=0, must-revalidate" } ] } ] }, "redirects": [ { "source": "/governance/", "destination": "/about/governance/", "type": "301" }, { "source": "/working-groups/", "destination": "https://github.com/nodejs/TSC/blob/main/WORKING_GROUPS.md", "type": "301" }, { "source": "/releases/", "destination": "/about/releases/", "type": "301" }, { "source": "/security/", "destination": "/about/security/", "type": "301" }, { "source": "/trademark/", "destination": "https://trademark-policy.openjsf.org/", "type": "301" }, { "source": "/about/trademark/", "destination": "https://trademark-policy.openjsf.org/", "type": "301" }, { "source": "/docs/*", "destination": "/api/", "type": "301" }, { "source": "/storybook/*", "destination": "/", "type": "301" }, { "source": "/learn/the-package-json-guide/", "destination": "https://docs.npmjs.com/cli/v8/configuring-npm/package-json", "type": "301" }, { "source": "/the-package-json-guide/", "destination": "https://docs.npmjs.com/cli/v8/configuring-npm/package-json", "type": "301" }, { "source": "/learn/the-package-lockjson-file/", "destination": "https://docs.npmjs.com/cli/v8/configuring-npm/package-lock-json", "type": "301" }, { "source": "/learn/how-to-exit-from-a-nodejs-program/", "destination": "/learn/", "type": "301" }, { "source": "/learn/where-does-npm-install-the-packages/", "destination": "/learn/", "type": "301" }, { "source": "/learn/get-http-request-body-data-using-nodejs/", "destination": "/learn/", "type": "301" }, { "source": "/learn/nodejs-file-paths/", "destination": "/learn/", "type": "301" }, { "source": "/learn/asynchronous-work/blocking-vs-non-blocking", "destination": "https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Introducing", "type": "301" }, { "source": "/learn/discover-javascript-timers", "destination": "https://developer.mozilla.org/en-US/docs/Web/API/setTimeout", "type": "301" }, { "source": "/learn/modern-asynchronous-javascript-with-async-and-await", "destination": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises", "type": "301" }, { "source": "/learn/the-nodejs-event-loop", "destination": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises", "type": "301" }, { "source": "/blog/advisory-board/2014/12/05/listening-to-the-community", "destination": "/blog/", "type": "301" }, { "source": "/blog/community/2015/05/15/foundation-benefits-all/", "destination": "/blog/", "type": "301" }, { "source": "/blog/community/2016/09/06/v5-to-v7", "destination": "/blog/", "type": "301" }, { "source": "/blog/npm/2011/03/24/npm-1-0-global-vs-local-installation", "destination": "/blog/", "type": "301" }, { "source": "/blog/vulnerabilities/2017/01/27/openssl-january-2017", "destination": "/blog/", "type": "301" }, { "source": "/blog/vulnerabilities/2017/09/29/september-2017-path-validation", "destination": "/blog/", "type": "301" }, { "source": "/blog/weekly-updates/2015/04/24/weekly-update.2015-04-24", "destination": "/blog/", "type": "301" }, { "source": "/blog/weekly-updates/2015/05/29/weekly-update.2015-05-29", "destination": "/blog/", "type": "301" }, { "source": "/blog/weekly-updates/2015/07/31/weekly-update.2015-07-31", "destination": "/blog/", "type": "301" }, { "source": "/blog/weekly-updates/2016/02/15/weekly-update.2016-02-15", "destination": "/blog/", "type": "301" }, { "source": "/blog/weekly-updates/2016/03/07/weekly-update.2016-03-07", "destination": "/blog/", "type": "301" }, { "source": "/blog/announcements/2021/10/07/retiring-the-node-js-community-committee", "destination": "/blog/", "type": "301" }, { "source": "/blog/announcements/2022/02/14/nodejs-trademarks-transferred-to-openjs-foundation", "destination": "/blog/", "type": "301" }, { "source": "/blog/announcements/2022/04/19/v18-release-announce", "destination": "/blog/", "type": "301" }, { "source": "/blog/announcements/2022/06/08/nodejs16-eol", "destination": "/blog/", "type": "301" }, { "source": "/blog/community/2016/12/03/update-v8-5.4", "destination": "/blog/", "type": "301" }, { "source": "/blog/vulnerabilities/2018/06/12/june-2018-security-releases", "destination": "/blog/", "type": "301" }, { "source": "/blog/weekly-updates/2015/07/17/weekly-update.2015-07-17", "destination": "/blog/", "type": "301" }, { "source": "/blog/weekly-updates/2016/04/29/weekly-update.2016-04-29", "destination": "/blog/", "type": "301" }, { "source": "/blog/weekly-updates/2016/07/22/weekly-update.2016-07-22", "destination": "/blog/", "type": "301" }, { "source": "/blog/weekly-updates/2016/08/15/weekly-update.2016-08-15", "destination": "/blog/", "type": "301" }, { "source": "/learn/accept-input-from-the-command-line-in-nodejs/", "destination": "/learn/", "type": "301" }, { "source": "/learn/asynchronous-flow-control/", "destination": "/learn/", "type": "301" }, { "source": "/learn/build-an-http-server/", "destination": "/learn/", "type": "301" }, { "source": "/learn/discover-javascript-timers/", "destination": "/learn/", "type": "301" }, { "source": "/learn/expose-functionality-from-a-nodejs-file-using-exports/", "destination": "/learn/", "type": "301" }, { "source": "/learn/how-to-log-an-object-in-nodejs/", "destination": "/learn/", "type": "301" }, { "source": "/learn/how-to-read-environment-variables-from-nodejs/", "destination": "/learn/", "type": "301" }, { "source": "/learn/how-to-use-the-nodejs-repl/", "destination": "/learn/", "type": "301" }, { "source": "/learn/install-an-older-version-of-an-npm-package/", "destination": "/learn/", "type": "301" }, { "source": "/learn/making-http-requests-with-nodejs/", "destination": "/learn/", "type": "301" }, { "source": "/learn/modern-asynchronous-javascript-with-async-and-await/", "destination": "/learn/", "type": "301" }, { "source": "/learn/nodejs-accept-arguments-from-the-command-line/", "destination": "/learn/", "type": "301" }, { "source": "/learn/nodejs-streams/", "destination": "/learn/", "type": "301" }, { "source": "/learn/nodejs-with-typescript/", "destination": "/learn/", "type": "301" }, { "source": "/learn/nodejs-with-webassembly/", "destination": "/learn/", "type": "301" }, { "source": "/learn/output-to-the-command-line-using-nodejs/", "destination": "/learn/", "type": "301" }, { "source": "/learn/overview-of-blocking-vs-non-blocking/", "destination": "/learn/", "type": "301" }, { "source": "/learn/reading-files-with-nodejs/", "destination": "/learn/", "type": "301" }, { "source": "/learn/semantic-versioning-using-npm/", "destination": "/learn/", "type": "301" }, { "source": "/learn/the-nodejs-event-loop/", "destination": "/learn/", "type": "301" }, { "source": "/learn/the-nodejs-events-module/", "destination": "/learn/", "type": "301" }, { "source": "/learn/the-npx-nodejs-package-runner/", "destination": "/learn/", "type": "301" }, { "source": "/learn/the-v8-javascript-engine/", "destination": "/learn/", "type": "301" }, { "source": "/learn/understanding-javascript-promises/", "destination": "/learn/", "type": "301" }, { "source": "/learn/understanding-setimmediate/", "destination": "/learn/", "type": "301" }, { "source": "/learn/uninstalling-npm-packages/", "destination": "/learn/", "type": "301" }, { "source": "/learn/working-with-folders-in-nodejs", "destination": "/learn/", "type": "301" }, { "source": "/learn/a-brief-history-of-nodejs/", "destination": "/learn/", "type": "301" }, { "source": "/learn/ecmascript-2015-es6-and-beyond/", "destination": "/learn/", "type": "301" }, { "source": "/learn/error-handling-in-nodejs/", "destination": "/learn/", "type": "301" }, { "source": "/learn/find-the-installed-version-of-an-npm-package/", "destination": "/learn/", "type": "301" }, { "source": "/learn/javascript-asynchronous-programming-and-callbacks/", "destination": "/learn/", "type": "301" }, { "source": "/learn/nodejs-buffers/", "destination": "/learn/", "type": "301" }, { "source": "/learn/npm-dependencies-and-devdependencies/", "destination": "/learn/", "type": "301" }, { "source": "/learn/run-nodejs-scripts-from-the-command-line/", "destination": "/learn/", "type": "301" }, { "source": "/learn/the-nodejs-event-emitter/", "destination": "/learn/", "type": "301" }, { "source": "/learn/the-nodejs-path-module/", "destination": "/learn/", "type": "301" }, { "source": "/learn/update-all-the-nodejs-dependencies-to-their-latest-version/", "destination": "/learn/", "type": "301" }, { "source": "/learn/working-with-folders-in-nodejs/", "destination": "/learn/", "type": "301" }, { "source": "/learn/writing-files-with-nodejs/", "destination": "/learn/", "type": "301" }, { "source": "/learn/introduction-to-nodejs/", "destination": "/learn/", "type": "301" }, { "source": "/api/", "destination": "/api/v18/documentation/", "type": "301" }, { "source": "/api/v18/", "destination": "/api/v18/documentation/", "type": "301" }, { "source": "/api/latest/", "destination": "/api/v18/documentation/", "type": "301" } ] }