| { | |
| "name": "docs.github.com", | |
| "private": true, | |
| "repository": "https://github.com/github/docs", | |
| "license": "(MIT AND CC-BY-4.0)", | |
| "author": { | |
| "name": "GitHub", | |
| "email": "opensource+docs@github.com", | |
| "url": "https://github.com/github/docs" | |
| }, | |
| "type": "module", | |
| "exports": "./src/frame/server.ts", | |
| "scripts": { | |
| "add-content-type": "tsx src/content-render/scripts/add-content-type.ts", | |
| "ai-tools": "tsx src/ai-tools/scripts/ai-tools.ts", | |
| "all-documents": "tsx src/content-render/scripts/all-documents/cli.ts", | |
| "analyze-text": "tsx src/search/scripts/analyze-text.ts", | |
| "analyze-comment": "tsx src/events/scripts/analyze-comment-cli.ts", | |
| "build": "next build --webpack", | |
| "check-content-type": "tsx src/workflows/check-content-type.ts", | |
| "check-github-github-links": "tsx src/links/scripts/check-github-github-links.ts", | |
| "clone-early-access": "./src/early-access/scripts/clone-locally", | |
| "clone-translations": "./src/languages/scripts/clone-translations.sh", | |
| "cmp-files": "tsx src/workflows/cmp-files.ts", | |
| "content-changes-table-comment": "tsx src/workflows/content-changes-table-comment.ts", | |
| "copy-fixture-data": "tsx src/tests/scripts/copy-fixture-data.ts", | |
| "count-translation-corruptions": "cross-env NODE_OPTIONS=--max-old-space-size=8192 tsx src/languages/scripts/count-translation-corruptions.ts", | |
| "create-early-access-branch": "./src/early-access/scripts/create-branch", | |
| "create-enterprise-issue": "tsx src/ghes-releases/scripts/create-enterprise-issue.ts", | |
| "cta-builder": "tsx src/content-render/scripts/cta-builder.ts", | |
| "debug": "cross-env NODE_ENV=development ENABLED_LANGUAGES=en nodemon --inspect src/frame/server.ts", | |
| "delete-orphan-translation-files": "tsx src/workflows/delete-orphan-translation-files.ts", | |
| "docsaudit": "tsx src/metrics/scripts/docsaudit.ts", | |
| "docstat": "tsx src/metrics/scripts/docstat.ts", | |
| "deleted-assets-pr-comment": "tsx src/assets/scripts/deleted-assets-pr-comment.ts", | |
| "deleted-features-pr-comment": "tsx src/data-directory/scripts/deleted-features-pr-comment.ts", | |
| "deprecate-ghes": "tsx src/ghes-releases/scripts/deprecate/index.ts", | |
| "deprecate-ghes-archive": "cross-env NODE_OPTIONS=--max-old-space-size=16384 tsx src/ghes-releases/scripts/deprecate/archive-version.ts", | |
| "dev": "cross-env npm start", | |
| "dev-toc": "tsx src/dev-toc/generate.ts", | |
| "enable-automerge": "tsx src/workflows/enable-automerge.ts", | |
| "find-orphaned-assets": "tsx src/assets/scripts/find-orphaned-assets.ts", | |
| "find-orphaned-features": "tsx src/data-directory/scripts/find-orphaned-features/index.ts", | |
| "find-past-built-pr": "tsx src/workflows/find-past-built-pr.ts", | |
| "find-unused-variables": "tsx src/content-linter/scripts/find-unsed-variables.ts", | |
| "fixture-dev": "cross-env ROOT=src/fixtures/fixtures npm start", | |
| "fixture-dev-debug": "cross-env NODE_ENV=development ROOT=src/fixtures/fixtures nodemon --inspect src/frame/server.ts", | |
| "fixture-test": "cross-env ROOT=src/fixtures/fixtures sh -c 'npm test -- ${1:-src/fixtures/tests}' --", | |
| "fr-add-docs-reviewers-requests": "tsx src/workflows/fr-add-docs-reviewers-requests.ts", | |
| "general-search-scrape": "tsx src/search/scripts/scrape/scrape-cli.ts", | |
| "general-search-scrape-server": "cross-env NODE_ENV=production PORT=4002 MINIMAL_RENDER=true CHANGELOG_DISABLED=true tsx src/frame/server.ts", | |
| "ghes-release-scrape-with-server": "cross-env GHES_RELEASE=1 start-server-and-test general-search-scrape-server 4002 general-search-scrape", | |
| "general-search-scrape-with-server": "cross-env NODE_OPTIONS='--max_old_space_size=8192' start-server-and-test general-search-scrape-server 4002 general-search-scrape", | |
| "index-ai-search-autocomplete": "tsx src/search/scripts/index/index-cli ai-search-autocomplete", | |
| "index-general-search": "tsx src/search/scripts/index/index-cli general-search", | |
| "index-test-fixtures": "./src/search/scripts/index-test-fixtures.sh", | |
| "labeler": "tsx .github/actions/labeler/labeler.ts", | |
| "lint": "eslint '**/*.{ts,tsx}'", | |
| "lint-content": "tsx src/content-linter/scripts/lint-content.ts", | |
| "lint-translation": "vitest src/content-linter/tests/lint-files.ts", | |
| "liquid-markdown-tables": "tsx src/tools/scripts/liquid-markdown-tables/index.ts", | |
| "generate-article-api-docs": "tsx src/article-api/scripts/generate-api-docs.ts", | |
| "generate-code-scanning-query-list": "tsx src/code-scanning/scripts/generate-code-scanning-query-list.ts", | |
| "generate-content-linter-docs": "tsx src/content-linter/scripts/generate-docs.ts", | |
| "move-content": "tsx src/content-render/scripts/move-content.ts", | |
| "openapi-docs": "tsx src/rest/docs.ts", | |
| "playwright-test": "playwright test --config src/fixtures/playwright.config.ts --project=\"Google Chrome\"", | |
| "lint-report": "tsx src/content-linter/scripts/lint-report.ts", | |
| "postinstall": "cp package-lock.json .installed.package-lock.json && echo \"Updated .installed.package-lock.json\" # see husky/post-checkout and husky/post-merge", | |
| "precompute-pageinfo": "tsx src/article-api/scripts/precompute-pageinfo.ts", | |
| "prepare": "husky src/workflows/husky", | |
| "prettier": "prettier -w \"**/*.{ts,tsx,scss,yml,yaml}\"", | |
| "prettier-check": "prettier -c \"**/*.{ts,tsx,scss,yml,yaml}\"", | |
| "prevent-pushes-to-main": "tsx src/workflows/prevent-pushes-to-main.ts", | |
| "purge-fastly-edge-cache": "tsx src/workflows/purge-fastly-edge-cache.ts", | |
| "purge-fastly-edge-cache-per-language": "tsx src/languages/scripts/purge-fastly-edge-cache-per-language.ts", | |
| "readability-report": "tsx src/workflows/experimental/readability-report.ts", | |
| "ready-for-docs-review": "tsx src/workflows/ready-for-docs-review.ts", | |
| "release-banner": "tsx src/ghes-releases/scripts/release-banner.ts", | |
| "repo-sync": "./src/workflows/local-repo-sync.sh", | |
| "reusables": "tsx src/content-render/scripts/reusables-cli.ts", | |
| "rendered-content-link-checker": "tsx src/links/scripts/rendered-content-link-checker.ts", | |
| "rendered-content-link-checker-cli": "tsx src/links/scripts/rendered-content-link-checker-cli.ts", | |
| "rest-dev": "tsx src/rest/scripts/update-files.ts", | |
| "show-action-deps": "echo 'Action Dependencies:' && rg '^[\\s|-]*(uses:.*)$' .github -I -N --no-heading -r '$1$2' | sort | uniq | cut -c 7-", | |
| "start": "cross-env NODE_ENV=development ENABLED_LANGUAGES=en nodemon src/frame/server.ts", | |
| "start-all-languages": "cross-env NODE_ENV=development tsx src/frame/server.ts", | |
| "start-for-playwright": "cross-env ROOT=src/fixtures/fixtures TRANSLATIONS_FIXTURE_ROOT=src/fixtures/fixtures/translations ENABLED_LANGUAGES=en,ja NODE_ENV=test tsx src/frame/server.ts", | |
| "symlink-from-local-repo": "tsx src/early-access/scripts/symlink-from-local-repo.ts", | |
| "sync-audit-log": "tsx src/audit-logs/scripts/sync.ts", | |
| "sync-codeql-cli": "tsx src/codeql-cli/scripts/sync.ts", | |
| "sync-graphql": "tsx src/graphql/scripts/sync.ts", | |
| "sync-rest": "tsx src/rest/scripts/update-files.ts", | |
| "sync-secret-scanning": "tsx src/secret-scanning/scripts/sync.ts", | |
| "sync-webhooks": "npx tsx src/rest/scripts/update-files.ts -o webhooks", | |
| "test": "vitest", | |
| "test-moved-content": "tsx src/content-render/scripts/test-moved-content.ts", | |
| "tsc": "tsc --noEmit", | |
| "unallowed-contributions": "tsx src/workflows/unallowed-contributions.ts", | |
| "update-data-and-image-paths": "tsx src/early-access/scripts/update-data-and-image-paths.ts", | |
| "update-enterprise-dates": "tsx src/ghes-releases/scripts/update-enterprise-dates.ts", | |
| "update-filepaths": "tsx src/content-render/scripts/update-filepaths.ts", | |
| "update-internal-links": "tsx src/links/scripts/update-internal-links.ts", | |
| "validate-asset-images": "tsx src/assets/scripts/validate-asset-images.ts", | |
| "validate-github-github-docs-urls": "tsx src/links/scripts/validate-github-github-docs-urls/index.ts", | |
| "warmup-remotejson": "tsx src/archives/scripts/warmup-remotejson.ts", | |
| "what-docs-early-access-branch": "tsx src/early-access/scripts/what-docs-early-access-branch.ts", | |
| "writers": "tsx src/workflows/writers-help-metadata.ts" | |
| }, | |
| "lint-staged": { | |
| "*.{ts,tsx}": "eslint --cache --fix", | |
| "*.{scss,ts,tsx,yml,yaml}": "prettier --write", | |
| "{content,data}/**/*.md": "npm run lint-content -- --precommit --paths" | |
| }, | |
| "nodemonConfig": { | |
| "ext": "ts,json,yml,md,html,scss", | |
| "exec": "tsx", | |
| "ignore": [ | |
| "assets", | |
| "script", | |
| "tests", | |
| "content", | |
| "translations", | |
| "data/reusables", | |
| "data/variables", | |
| "data/glossaries", | |
| "data/product-examples", | |
| "data/learning-tracks", | |
| "rest-api-description", | |
| "semmle-code" | |
| ] | |
| }, | |
| "prettier": { | |
| "overrides": [ | |
| { | |
| "files": [ | |
| "**/*.{yml,yaml}" | |
| ], | |
| "options": { | |
| "singleQuote": true | |
| } | |
| }, | |
| { | |
| "files": [ | |
| "**/*.{ts,tsx}" | |
| ], | |
| "options": { | |
| "printWidth": 100, | |
| "semi": false, | |
| "singleQuote": true | |
| } | |
| } | |
| ] | |
| }, | |
| "dependencies": { | |
| "@elastic/elasticsearch": "8.13.1", | |
| "@github/failbot": "0.8.3", | |
| "@gr2m/gray-matter": "4.0.3-with-pr-137", | |
| "@horizon-rs/language-guesser": "0.1.1", | |
| "@octokit/plugin-retry": "8.0.1", | |
| "@octokit/request-error": "7.0.0", | |
| "@primer/behaviors": "^1.7.2", | |
| "@primer/css": "^21.3.1", | |
| "@primer/live-region-element": "^0.7.2", | |
| "@primer/octicons": "^19.19.0", | |
| "@primer/octicons-react": "^19.14.0", | |
| "@primer/react": "^38.0.0", | |
| "accept-language-parser": "^1.5.0", | |
| "ajv": "^8.17.1", | |
| "ajv-errors": "^3.0.0", | |
| "ajv-formats": "^3.0.1", | |
| "azure-kusto-data": "^7.0.0", | |
| "bottleneck": "2.19.5", | |
| "boxen": "8.0.1", | |
| "cheerio": "^1.0.0-rc.12", | |
| "cheerio-to-text": "0.2.4", | |
| "classnames": "^2.5.1", | |
| "clsx": "^2.1.1", | |
| "connect-timeout": "1.9.1", | |
| "cookie-parser": "^1.4.7", | |
| "cuss": "2.2.0", | |
| "dayjs": "^1.11.13", | |
| "dereference-json-schema": "^0.2.1", | |
| "dotenv": "^17.0.1", | |
| "escape-string-regexp": "5.0.0", | |
| "express": "^5.2.0", | |
| "fastest-levenshtein": "1.0.16", | |
| "file-type": "21.0.0", | |
| "flat": "^6.0.1", | |
| "github-slugger": "^2.0.0", | |
| "glob": "11.1.0", | |
| "hast-util-from-parse5": "^8.0.3", | |
| "hast-util-to-string": "^3.0.1", | |
| "hastscript": "^9.0.1", | |
| "helmet": "^8.0.0", | |
| "highlight.js": "^11.11.1", | |
| "highlightjs-curl": "^1.3.0", | |
| "hot-shots": "^11.1.0", | |
| "html-entities": "^2.5.6", | |
| "http-proxy-middleware": "^3.0.5", | |
| "imurmurhash": "^0.1.4", | |
| "is-svg": "6.0.0", | |
| "javascript-stringify": "^2.1.0", | |
| "js-cookie": "^3.0.5", | |
| "js-yaml": "^4.1.1", | |
| "liquidjs": "^10.16.7", | |
| "lodash": "^4.17.21", | |
| "lodash-es": "^4.17.21", | |
| "lowdb": "7.0.1", | |
| "lowlight": "^3.3.0", | |
| "markdownlint-rule-helpers": "^0.25.0", | |
| "mdast-util-from-markdown": "^2.0.2", | |
| "mdast-util-to-hast": "^13.2.1", | |
| "mdast-util-to-markdown": "2.1.2", | |
| "mdast-util-to-string": "^4.0.0", | |
| "next": "^16.0.7", | |
| "ora": "^9.0.0", | |
| "parse5": "7.1.2", | |
| "quick-lru": "7.0.1", | |
| "react": "^18.3.1", | |
| "react-dom": "^18.3.1", | |
| "react-markdown": "^10.1.0", | |
| "rehype-highlight": "^7.0.2", | |
| "rehype-raw": "^7.0.0", | |
| "rehype-slug": "^6.0.0", | |
| "rehype-stringify": "^10.0.1", | |
| "remark-gemoji-to-emoji": "^1.1.0", | |
| "remark-gfm": "^4.0.1", | |
| "remark-parse": "^11.0.0", | |
| "remark-rehype": "^11.1.2", | |
| "remark-remove-comments": "^1.0.1", | |
| "remark-stringify": "^11.0.0", | |
| "rss-parser": "^3.13.0", | |
| "scroll-anchoring": "^0.1.0", | |
| "semver": "^7.6.3", | |
| "sharp": "0.33.5", | |
| "slash": "^5.1.0", | |
| "strip-ansi": "7.1.0", | |
| "styled-components": "^5.3.11", | |
| "swr": "^2.2.5", | |
| "tcp-port-used": "1.0.2", | |
| "tsx": "^4.19.4", | |
| "unified": "^11.0.5", | |
| "unist-util-find": "^3.0.0", | |
| "unist-util-visit": "^5.0.0", | |
| "url-template": "^3.1.1", | |
| "walk-sync": "^4.0.1" | |
| }, | |
| "devDependencies": { | |
| "@actions/core": "^1.10.1", | |
| "@actions/github": "^6.0.0", | |
| "@axe-core/playwright": "^4.10.1", | |
| "@eslint/js": "^9.33.0", | |
| "@github/markdownlint-github": "^0.6.3", | |
| "@graphql-inspector/core": "^7.0.3", | |
| "@graphql-tools/load": "^8.0.19", | |
| "@octokit/rest": "22.0.0", | |
| "@playwright/test": "^1.56", | |
| "@types/accept-language-parser": "1.5.7", | |
| "@types/cheerio": "^0.22.35", | |
| "@types/connect-timeout": "1.9.0", | |
| "@types/cookie": "0.6.0", | |
| "@types/cookie-parser": "1.4.8", | |
| "@types/eslint-plugin-jsx-a11y": "^6.10.1", | |
| "@types/event-to-promise": "^0.7.5", | |
| "@types/express": "^5.0.3", | |
| "@types/imurmurhash": "^0.1.4", | |
| "@types/js-cookie": "^3.0.6", | |
| "@types/js-yaml": "^4.0.9", | |
| "@types/lodash": "^4.17.16", | |
| "@types/lodash-es": "4.17.12", | |
| "@types/mdast": "^4.0.4", | |
| "@types/react": "18.3.20", | |
| "@types/react-dom": "^18.3.6", | |
| "@types/semver": "^7.5.8", | |
| "@types/styled-components": "^5.1.34", | |
| "@types/tcp-port-used": "1.0.4", | |
| "@types/website-scraper": "^1.2.10", | |
| "@typescript-eslint/eslint-plugin": "^8.33.1", | |
| "@typescript-eslint/parser": "^8.33.1", | |
| "chalk": "^5.0.1", | |
| "change-case": "^5.4.4", | |
| "commander": "^14.0.0", | |
| "cross-env": "^10.0.0", | |
| "csp-parse": "0.0.2", | |
| "csv-parse": "6.1.0", | |
| "eslint": "^9.33.0", | |
| "eslint-config-prettier": "^10.1.8", | |
| "eslint-import-resolver-typescript": "^4.4.2", | |
| "eslint-plugin-escompat": "^3.11.4", | |
| "eslint-plugin-eslint-comments": "^3.2.0", | |
| "eslint-plugin-filenames": "^1.3.2", | |
| "eslint-plugin-github": "^6.0.0", | |
| "eslint-plugin-i18n-text": "^1.0.1", | |
| "eslint-plugin-import": "^2.32.0", | |
| "eslint-plugin-jsx-a11y": "^6.10.2", | |
| "eslint-plugin-no-only-tests": "^3.3.0", | |
| "eslint-plugin-prettier": "^5.5.4", | |
| "eslint-plugin-primer-react": "^8.0.0", | |
| "event-to-promise": "^0.8.0", | |
| "globals": "^16.3.0", | |
| "graphql": "^16.9.0", | |
| "http-status-code": "^2.1.0", | |
| "husky": "^9.1.7", | |
| "jiti": "^2.6.1", | |
| "json-schema-merge-allof": "^0.8.1", | |
| "lint-staged": "^16.0.0", | |
| "markdownlint": "^0.34.0", | |
| "markdownlint-rule-search-replace": "^1.2.0", | |
| "mkdirp": "^3.0.1", | |
| "mockdate": "^3.0.5", | |
| "nock": "^14.0.4", | |
| "nodemon": "3.1.10", | |
| "patch-package": "^8.0.1", | |
| "prettier": "^3.3.3", | |
| "rimraf": "^6.0.1", | |
| "robots-parser": "^3.0.1", | |
| "sass": "^1.77.8", | |
| "start-server-and-test": "^2.0.11", | |
| "typescript": "^5.8.3", | |
| "unist-util-remove": "^4.0.0", | |
| "unist-util-visit-parents": "6.0.1", | |
| "vitest": "^4.0.4", | |
| "website-scraper": "^5.3.1" | |
| }, | |
| "overrides": { | |
| "esbuild": "^0.25" | |
| }, | |
| "optionalDependencies": { | |
| "esm": "^3.2.25" | |
| }, | |
| "engines": { | |
| "node": "^22 || ^24" | |
| }, | |
| "cacheDirectories": [ | |
| "node_modules", | |
| ".next/cache" | |
| ] | |
| } | |