{"id":19747017,"url":"https://github.com/phphe/spa-prerender-cli","last_synced_at":"2026-02-15T06:31:58.581Z","repository":{"id":57750504,"uuid":"525710723","full_name":"phphe/spa-prerender-cli","owner":"phphe","description":"A CLI program to prerender single page app with Chromium, like VueJs, React, Angular.","archived":false,"fork":false,"pushed_at":"2025-02-23T11:44:21.000Z","size":123,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-19T16:51:22.373Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phphe.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-08-17T08:51:48.000Z","updated_at":"2025-02-23T11:44:25.000Z","dependencies_parsed_at":"2022-08-26T08:31:31.783Z","dependency_job_id":null,"html_url":"https://github.com/phphe/spa-prerender-cli","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/phphe/spa-prerender-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phphe%2Fspa-prerender-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phphe%2Fspa-prerender-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phphe%2Fspa-prerender-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phphe%2Fspa-prerender-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phphe","download_url":"https://codeload.github.com/phphe/spa-prerender-cli/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phphe%2Fspa-prerender-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29471941,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T05:26:30.465Z","status":"ssl_error","status_checked_at":"2026-02-15T05:26:21.858Z","response_time":118,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-12T02:16:39.629Z","updated_at":"2026-02-15T06:31:58.567Z","avatar_url":"https://github.com/phphe.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# spa-prerender-cli\n\nA CLI program to prerender single page app with Chromium, like VueJs, React, Angular. Also generate sitemap.xml\n\njs 命令行程序, 使用 Chromium 浏览器预渲染 SPA(单页面应用)网站. 支持 VueJs, React, Angular. 同时生成 sitemap.xml.\n\n## Install / 安装\n\n```sh\nnpm install spa-prerender-cli\n```\n\n## Usage / 使用\n\n### Create config / 创建配置文件\n\nCreate `prerender.config.ts`.\n\n```ts\nimport { defineConfig } from \"spa-prerender-cli\";\n\nexport default defineConfig({\n  origin: \"https://example.com\",\n  staticDir: \"dist\",\n  outDir: \"dist-pre\",\n});\n```\n\n### Add script in package.json / 在 package.json 添加执行脚本\n\n```json\n\"scripts\": {\n  \"prerender\": \"prerender\"\n}\n```\n\n### Run script / 运行脚本\n\n```sh\nnpm run prerender\n```\n\n## How it works / 工作原理\n\nIt creates a server for SPA applications, then use Chromium browser to visit home page, find links, and scrape its rendered HTML code. It finds all internal links from element `a` and `link[rel=\"alternate\"]`. If a link can't be found, add it to `addtionalUrl` in config. It injects variable `window.__IS_GENERATED__ = true`, you can use this to detect if prerendered.\n\n它创建临时服务器运行 SPA 程序, 然后使用 Chromium 浏览器访问首页, 查找链接, 并抓取渲染后的 HTML 代码. 它通过`a`标签和`link[rel=\"alternate\"]`查找站内链接. 如果某链接不能被找到, 把它添加到配置的`addtionalUrl`中. 会注入变量`window.__IS_GENERATED__ = true`, 你可以使用此变量判断是否是预渲染后的 HTML.\n\n## Config / 配置\n\n```ts\n// 默认配置\nconst defaultConfig = {\n  staticDir: \"dist\", // SPA bundle. SPA程序的构建结果文件夹路径.\n  outDir: \"dist-pre\", // pre-rendered bundle. 预渲染的结果路径.\n  retry: 3, // retry to scrape a page. 抓取页面失败时的重试次数.\n  workers: 5, // scrape several pages at the same time. 同时抓取多个页面.\n  urlAmountLimit: 1000, // maximum number of url. 最大链接数量.\n  pageTimeout: 1000 * 20, // timeout to scrape a page, unit ms. 抓取页面超时, 单位毫秒.\n  addtionalUrl: [] as string[], // 其他入口链接.\n  viewport: { width: 1773, height: 887 }, // browser viewport. 抓取时浏览器的大小.\n};\n// required config. 必填配置\n{\n  // site origin, e.g.: https://example.com\n  origin: string;\n}\n// optional config. 可选配置\n{\n  // replace, e.g.: replace: {'hello world': 'world hello'}\n  // 文字替换, 是一个对象, 将会把键替换成值. 见上一行的例子\n  replace: Record\u003cstring, string\u003e;\n}\n```\n\n## Examples / 例子\n\nFeel free to add examples here if your project works well with spa-prerender-cli.\n\n如果 spa-prerender-cli 在你的项目工作良好, 欢迎添加到此处.\n\n- Work with Vue3, [docs-site of he-tree](https://github.com/phphe/he-tree/tree/dev/packages/docs-site)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphphe%2Fspa-prerender-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphphe%2Fspa-prerender-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphphe%2Fspa-prerender-cli/lists"}