edgepress 2026.10.1 → 2026.10.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +216 -16
- package/config.yml +99 -127
- package/content/assets/edgepress/brand/avatar.png +0 -0
- package/content/assets/edgepress/brand/deploy-esa.svg +1 -0
- package/content/assets/edgepress/brand/home-hero-768.webp +0 -0
- package/content/assets/edgepress/brand/home-hero.png +0 -0
- package/content/assets/edgepress/brand/home-hero.webp +0 -0
- package/content/assets/edgepress/brand/mascot.png +0 -0
- package/content/assets/edgepress/brand/mascot.webp +0 -0
- package/content/assets/edgepress/brand/og-image.png +0 -0
- package/content/assets/edgepress/brand/og-image.webp +0 -0
- package/content/assets/edgepress/brand/sources/edgepress-avatar-master.png +0 -0
- package/content/assets/edgepress/brand/sources/export-manifest.json +181 -0
- package/content/assets/edgepress/brand/sources/prompts.json +12 -0
- package/content/assets/edgepress/favicon/apple-touch-icon.png +0 -0
- package/content/assets/edgepress/favicon/favicon-16.png +0 -0
- package/content/assets/edgepress/favicon/favicon-32.png +0 -0
- package/content/assets/edgepress/favicon/favicon-48.png +0 -0
- package/content/assets/edgepress/favicon/favicon-64.png +0 -0
- package/content/assets/edgepress/favicon/favicon.ico +0 -0
- package/content/assets/edgepress/icons/LICENSE.txt +43 -0
- package/content/assets/edgepress/icons/arrow-right.svg +16 -0
- package/content/assets/edgepress/icons/arrow-up-right.svg +16 -0
- package/content/assets/edgepress/icons/book-open.svg +16 -0
- package/content/assets/edgepress/icons/check-circle.svg +16 -0
- package/content/assets/edgepress/icons/check.svg +15 -0
- package/content/assets/edgepress/icons/cloud.svg +15 -0
- package/content/assets/edgepress/icons/code.svg +16 -0
- package/content/assets/edgepress/icons/cpu.svg +28 -0
- package/content/assets/edgepress/icons/file-text.svg +19 -0
- package/content/assets/edgepress/icons/github.svg +17 -0
- package/content/assets/edgepress/icons/globe.svg +17 -0
- package/content/assets/edgepress/icons/help-circle.svg +17 -0
- package/content/assets/edgepress/icons/home.svg +16 -0
- package/content/assets/edgepress/icons/layers.svg +17 -0
- package/content/assets/edgepress/icons/layout-grid.svg +18 -0
- package/content/assets/edgepress/icons/mail.svg +16 -0
- package/content/assets/edgepress/icons/newspaper.svg +18 -0
- package/content/assets/edgepress/icons/palette.svg +19 -0
- package/content/assets/edgepress/icons/plug.svg +18 -0
- package/content/assets/edgepress/icons/provenance.json +8 -0
- package/content/assets/edgepress/icons/puzzle.svg +15 -0
- package/content/assets/edgepress/icons/rocket.svg +18 -0
- package/content/assets/edgepress/icons/rss.svg +17 -0
- package/content/assets/edgepress/icons/search.svg +16 -0
- package/content/assets/edgepress/icons/settings.svg +16 -0
- package/content/assets/edgepress/icons/shield-check.svg +16 -0
- package/content/assets/edgepress/icons/sparkles.svg +18 -0
- package/content/assets/edgepress/icons/terminal.svg +16 -0
- package/content/assets/edgepress/icons/x.svg +16 -0
- package/{static → content/assets}/edgepress-markdown-guide.svg +1 -1
- package/content/assets/images/previews/edgepress-en.webp +0 -0
- package/content/assets/images/previews/edgepress-revisions-en.png +0 -0
- package/content/assets/images/previews/edgepress-workflow-en.90f4650b21013786.gif +0 -0
- package/content/assets/images/previews/edgepress-workflow-zh.41f1e0a685f47267.gif +0 -0
- package/content/assets/images/previews/edgepress-zh.webp +0 -0
- package/content/assets/images/previews/provenance.json +49 -0
- package/content/guides/markdown-media.md +38 -0
- package/content/guides/platforms.md +15 -0
- package/content/guides/product-demos.md +37 -0
- package/content/guides/zh-cn.md +62 -0
- package/content/pages/deployment/en.json +74 -0
- package/content/pages/deployment/zh-cn.json +74 -0
- package/content/pages/home/en.json +248 -0
- package/content/pages/home/zh-cn.json +248 -0
- package/content/pages/local-tools/en.json +14 -0
- package/content/pages/local-tools/zh-cn.json +14 -0
- package/content/pages/page-authoring/en.json +107 -0
- package/content/pages/page-authoring/zh-cn.json +107 -0
- package/content/pages/plugin-development/en.json +202 -0
- package/content/pages/plugin-development/zh-cn.json +202 -0
- package/content/pages/privacy-policy/en.json +171 -0
- package/content/pages/privacy-policy/zh-cn.json +171 -0
- package/content/pages/project-introduction/en.json +158 -0
- package/content/pages/project-introduction/zh-cn.json +158 -0
- package/content/pages/quick-start/en.json +325 -0
- package/content/pages/quick-start/zh-cn.json +325 -0
- package/content/pages/theme-development/en.json +353 -0
- package/content/pages/theme-development/zh-cn.json +349 -0
- package/content/posts/2026-09-24-edgepress-release-2026-9-1/en.md +1 -1
- package/content/posts/2026-09-24-edgepress-release-2026-9-1/zh-cn.md +1 -1
- package/content/posts/2026-10-03-edgepress-release-2026-10-3/en.md +16 -0
- package/content/posts/2026-10-03-edgepress-release-2026-10-3/zh-cn.md +16 -0
- package/content/posts/2026-10-03-edgepress-release-202610-4/en.md +22 -0
- package/content/posts/2026-10-03-edgepress-release-202610-4/zh-cn.md +20 -0
- package/content/posts/2026-10-03-edgepress-release-202610-5/en.md +15 -0
- package/content/posts/2026-10-03-edgepress-release-202610-5/zh-cn.md +15 -0
- package/edgeone.json +43 -0
- package/esa.jsonc +9 -0
- package/languages/base/en.json +75 -10
- package/languages/packs/zh-CN.json +74 -9
- package/netlify.toml +6 -0
- package/package.json +37 -6
- package/plugins/consent/index.js +10 -17
- package/project-compatibility.json +142 -25
- package/schemas/pages.schema.json +74 -0
- package/src/assets.js +146 -18
- package/src/browser-audit.js +158 -0
- package/src/build.js +34 -9
- package/src/cli.js +46 -41
- package/src/config.js +114 -63
- package/src/consent-csp.js +137 -0
- package/src/content.js +55 -30
- package/src/data-saver.js +194 -0
- package/src/deploy.js +28 -0
- package/src/document.js +44 -0
- package/src/embed.js +60 -0
- package/src/generators.js +101 -59
- package/src/i18n.js +19 -3
- package/src/icons.js +5 -4
- package/src/image-dimensions.js +17 -0
- package/src/local-tool.js +29 -0
- package/src/maintenance.js +25 -8
- package/src/markdown-fixture.js +20 -0
- package/src/markdown.js +80 -16
- package/src/media-assets.js +19 -0
- package/src/media-viewer.js +47 -0
- package/src/oembed.js +53 -0
- package/src/page-blocks.js +124 -54
- package/src/page-check.js +29 -39
- package/src/plugin-api.js +7 -1
- package/src/post-details.js +60 -0
- package/src/post-template.js +5 -0
- package/src/publication-time.js +47 -0
- package/src/report-path.js +19 -0
- package/src/report-visuals.js +91 -18
- package/src/revision-cards.js +30 -0
- package/src/revision-images.js +44 -0
- package/src/revisions.js +77 -0
- package/src/rss.js +100 -0
- package/src/service-block.js +18 -0
- package/src/theme.js +59 -9
- package/src/video-metadata.js +36 -0
- package/static/edgepress/data-saver.css +12 -0
- package/static/edgepress/data-saver.js +333 -0
- package/static/edgepress/document-viewer.js +35 -0
- package/static/edgepress/external-links-policy.js +14 -0
- package/static/edgepress/external-links.css +13 -0
- package/static/edgepress/external-links.js +120 -0
- package/static/edgepress/fonts/faces.css +2217 -0
- package/static/edgepress/fonts/noto-sans-OFL.txt +93 -0
- package/static/edgepress/fonts/noto-sans-cyrillic-ext-wght-normal.82ff72b28e6610f2.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-cyrillic-wght-normal.6ab64433de6077ca.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-devanagari-wght-normal.ea6a530b75d93de7.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-greek-ext-wght-normal.790b255c10c32e0b.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-greek-wght-normal.7f655207c2f6c140.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-latin-ext-wght-normal.6d5a79315528df19.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-latin-wght-normal.51ca196f49a33e79.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-100-wght-normal.ad5f29028d5699a5.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-101-wght-normal.e189b81fc22ca6af.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-102-wght-normal.941c0c2971fc1d6d.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-103-wght-normal.bafbd591af6493ff.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-104-wght-normal.b0bf80ced89dd61b.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-105-wght-normal.8d8b4e6f4a00621d.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-106-wght-normal.bae74acc629d2e74.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-107-wght-normal.a42eff5010de7b0d.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-108-wght-normal.91882203459867be.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-109-wght-normal.a91f8b038e5ce108.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-110-wght-normal.bbca9081655c4523.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-111-wght-normal.372be010ac0e87cb.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-112-wght-normal.34a4580239eae8dc.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-113-wght-normal.614ab8f616352583.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-114-wght-normal.cf7b8344807a316e.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-115-wght-normal.fb29957c7adccb9a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-116-wght-normal.a98dc5a726f82141.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-117-wght-normal.d94b5af0c14838af.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-118-wght-normal.76c9ddb85ae4578c.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-119-wght-normal.b3b2374881f4cd93.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-21-wght-normal.c1409c43e55ecff2.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-22-wght-normal.77037ed42ff4e7b0.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-23-wght-normal.38d0df21ac374e93.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-24-wght-normal.8fa21e7e457acf3e.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-25-wght-normal.f760b7a3871d214d.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-26-wght-normal.be8386e7bd7facfe.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-27-wght-normal.4895abcaddbd162e.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-28-wght-normal.82540b6201a9b9ad.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-29-wght-normal.ff21d8fcc60ce391.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-30-wght-normal.1f76f6ffded00b9e.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-31-wght-normal.e6c25be1bb08a63a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-32-wght-normal.0cda750d7d04a4e1.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-33-wght-normal.b9732b5606bd87c5.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-34-wght-normal.38aa326b4c84902a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-35-wght-normal.bd98226c8e0aa808.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-36-wght-normal.0db1ca695a491d37.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-37-wght-normal.8df409a4e0a237c2.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-38-wght-normal.672d2d994994a3c3.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-39-wght-normal.272d6d0e153f56e8.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-4-wght-normal.9fafd93ac77b81ff.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-40-wght-normal.5b9ef1ed48420aa7.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-41-wght-normal.30aee47f660fd88a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-42-wght-normal.ec0014830db682b6.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-43-wght-normal.43df2b5dad9bb835.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-44-wght-normal.acaa6195041b1a92.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-45-wght-normal.8cdb9903f770db21.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-46-wght-normal.6590d0a6fe94571c.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-47-wght-normal.b05afdd32b3bf722.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-48-wght-normal.c9585f7d070700be.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-49-wght-normal.4943895a4dfa5dcf.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-5-wght-normal.e64f57937e3ae4fe.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-50-wght-normal.13e51063d7743cfe.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-51-wght-normal.fd4df1f02c2cb4d7.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-52-wght-normal.06999a39c4c3a7ea.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-53-wght-normal.767b7b9864658d91.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-54-wght-normal.4cd00537a46f6f1a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-55-wght-normal.0118ec5d8c30b197.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-56-wght-normal.a3e4a78929826930.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-57-wght-normal.7623501009e4a6db.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-58-wght-normal.56ae1a59a32e4a25.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-59-wght-normal.7a377a40e99fd9bc.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-6-wght-normal.17e15c4f0a5bfd92.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-60-wght-normal.3657f66babdf6aff.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-61-wght-normal.23919a2eb11d25dd.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-62-wght-normal.a901edf25bc1cfae.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-63-wght-normal.92f56f713cc0b62f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-64-wght-normal.4929c9f39a5a4bd9.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-65-wght-normal.8daa61282fb62a11.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-66-wght-normal.6479166925eb462b.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-67-wght-normal.a6b0e11c4c761ffd.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-68-wght-normal.65b77f1fe9d68dae.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-69-wght-normal.b34f765cbbf4d02e.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-70-wght-normal.a99d55c00e4f95b7.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-71-wght-normal.3298bed30dc8d233.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-72-wght-normal.6597209ca9707726.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-73-wght-normal.e7ac1d4930eabd78.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-74-wght-normal.1f0287be83a28e7a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-75-wght-normal.d9a4bb7bcc2be578.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-76-wght-normal.5a019946bcadcec6.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-77-wght-normal.7c445e85d04f5319.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-78-wght-normal.7d4afb70f641781c.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-79-wght-normal.5798753a721bb4ec.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-80-wght-normal.db887159ca6e46f3.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-81-wght-normal.71e5743bbd225b3d.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-82-wght-normal.8c5094c3785fd04f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-83-wght-normal.4a60a1ccba905284.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-84-wght-normal.3ed54e59ef4758e3.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-85-wght-normal.e87e0a1342e1778c.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-86-wght-normal.6d3ac3e20959dbcb.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-87-wght-normal.0eeffd5daad5c17b.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-88-wght-normal.b1d9582dfa268463.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-89-wght-normal.8b437aeb9e9fcb5a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-90-wght-normal.83b0a59e0a5e045a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-91-wght-normal.382f72b98d4bb9d7.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-97-wght-normal.5e52856457c5cdab.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-98-wght-normal.ffded4e7fd560d93.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-99-wght-normal.54e302c23f11a8fd.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-OFL.txt +93 -0
- package/static/edgepress/fonts/noto-sans-sc-cyrillic-wght-normal.5932d441e7126669.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-latin-ext-wght-normal.e316201f3fc493d1.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-latin-wght-normal.c1d919c8701a86ed.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-vietnamese-wght-normal.cba3d00c8db989f0.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-0-wght-normal.63c21eda5d20203f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-100-wght-normal.87a7c76301c24a28.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-101-wght-normal.c9e83fc4ffd53746.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-102-wght-normal.9a00ae0e5735852b.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-103-wght-normal.7cfe93b3221f4def.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-104-wght-normal.2d5ac7497d84cb99.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-105-wght-normal.0989885bb16bcd9b.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-106-wght-normal.1faa921b035064e7.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-107-wght-normal.2f6006745ae16d69.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-108-wght-normal.a61e48c10a2cf4b9.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-109-wght-normal.f28c767724736d2d.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-110-wght-normal.4b04bd88c3dc7c5d.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-111-wght-normal.b6251e1967932a52.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-112-wght-normal.e264513b32f90660.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-113-wght-normal.46cb347d88f3338e.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-114-wght-normal.9f9e1e0d0ab2aeb4.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-115-wght-normal.653dd2ab7d551b40.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-116-wght-normal.4718bf3627191297.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-117-wght-normal.b241a9409682af5f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-118-wght-normal.fda2800dc1c06852.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-119-wght-normal.948af36bd63a72c7.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-19-wght-normal.62191cdc3a10e60a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-20-wght-normal.65c90892c2e01657.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-21-wght-normal.d3f59b094c334866.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-22-wght-normal.b1983a041d7e4e1f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-23-wght-normal.16e2163b66c7732a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-24-wght-normal.72c8561976116537.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-25-wght-normal.b2948d928ce4dd54.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-26-wght-normal.d583236b90abedc9.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-27-wght-normal.7d6073ba07597c9b.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-28-wght-normal.517204d716b089cd.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-29-wght-normal.10189a8f8ca38099.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-30-wght-normal.695a71d72dfab3f7.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-31-wght-normal.868d59473ef0e73c.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-32-wght-normal.92efa2d4b3702ec0.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-33-wght-normal.d2274bcd5636197d.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-34-wght-normal.1ac8c3718ee2eed2.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-35-wght-normal.00b3df730d5a4c73.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-36-wght-normal.6963feb6c628b81f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-37-wght-normal.a1b4bd294af24cd1.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-38-wght-normal.8edb2f7f2955921b.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-39-wght-normal.37bf7394eb3148c6.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-40-wght-normal.3efa655bc48f9133.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-41-wght-normal.48d47014544ebd5d.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-42-wght-normal.214c733a59d423e7.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-43-wght-normal.c2c9876f138bb20f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-44-wght-normal.28928bfea29db06a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-45-wght-normal.bf3743f8155fa9d2.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-46-wght-normal.06970903593781c3.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-47-wght-normal.8932ed83a91794d4.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-48-wght-normal.dfd9225628bcf234.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-49-wght-normal.c27d341ad39d44eb.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-50-wght-normal.01a0f4e7dfba0a56.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-51-wght-normal.5a30022af3d30e0f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-52-wght-normal.4884f032342a3274.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-53-wght-normal.537adcae44511270.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-54-wght-normal.6bc8c7d3e47c6fde.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-55-wght-normal.725a48711f1e1997.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-56-wght-normal.f43ecaa73e0cd8fc.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-57-wght-normal.15b24e9d42a3270f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-58-wght-normal.9b2d8a71667d3da6.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-59-wght-normal.a68535a6b3289d89.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-6-wght-normal.32cece1ae80c4f2b.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-60-wght-normal.3b2c56a921d1cad4.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-61-wght-normal.54f51f80a0740878.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-62-wght-normal.ba029c5bb6c07bf1.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-63-wght-normal.380919beec4c7f3d.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-64-wght-normal.f96fe0be479d201f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-65-wght-normal.7d544b80701fe678.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-66-wght-normal.fab669c07a1e3bee.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-67-wght-normal.0001bb744743fdfa.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-68-wght-normal.1a57eda03886b43c.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-69-wght-normal.017fecc749bcd6d5.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-7-wght-normal.cd0f0cac743dbbfe.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-70-wght-normal.79fb9d70b9534ec7.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-71-wght-normal.04a6ea581b5f1195.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-72-wght-normal.d3a4eb35499157b7.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-73-wght-normal.d81f8484404ee465.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-74-wght-normal.4a5da9e0c2702f7d.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-75-wght-normal.8b87f9c6c164513a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-76-wght-normal.a71463dbfd9fa7b5.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-77-wght-normal.d094414ea752cd52.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-78-wght-normal.04f7c97bd9cbc73b.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-79-wght-normal.1ed089d037a02049.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-8-wght-normal.d052677dfb5db5bd.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-80-wght-normal.6d41ca59cfd50442.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-81-wght-normal.f09bd0afa8a58114.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-82-wght-normal.7920841c526b1b02.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-83-wght-normal.0c6f7f82db8da0d8.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-84-wght-normal.f37c0a853b31265e.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-85-wght-normal.4173bff087653b82.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-86-wght-normal.dac35605ebec15c4.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-87-wght-normal.8ac85fdd0b15a6bd.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-88-wght-normal.61625b0b21e8407f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-89-wght-normal.a1da3dccbf00698e.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-90-wght-normal.bf08f0355222a782.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-91-wght-normal.2ecf295bba2bfaa3.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-92-wght-normal.36508326bb68115f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-97-wght-normal.c712899e0fc9e947.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-98-wght-normal.13a648e521d18d7f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-99-wght-normal.7f8c9a777e64159a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-OFL.txt +93 -0
- package/static/edgepress/fonts/noto-sans-tc-cyrillic-wght-normal.dd0980ced8e46cb3.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-latin-ext-wght-normal.817d96335dc52ce6.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-latin-wght-normal.50cb5fb0a522cfaf.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-vietnamese-wght-normal.2a77fb7b70fa304d.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-vietnamese-wght-normal.791e3f213c155a5b.woff2 +0 -0
- package/static/edgepress/fonts/noto-serif-OFL.txt +93 -0
- package/static/edgepress/fonts/noto-serif-cyrillic-ext-wght-normal.7c7afb20d33e30ec.woff2 +0 -0
- package/static/edgepress/fonts/noto-serif-cyrillic-wght-normal.54e3bd0c4a002b0f.woff2 +0 -0
- package/static/edgepress/fonts/noto-serif-greek-ext-wght-normal.9b3f4c4ff3adefd2.woff2 +0 -0
- package/static/edgepress/fonts/noto-serif-greek-wght-normal.1252037b6f1d6e86.woff2 +0 -0
- package/static/edgepress/fonts/noto-serif-latin-ext-wght-normal.2654f8d1261a420f.woff2 +0 -0
- package/static/edgepress/fonts/noto-serif-latin-wght-normal.46281456234014ce.woff2 +0 -0
- package/static/edgepress/fonts/noto-serif-math-wght-normal.d4a6aba2cb4636b3.woff2 +0 -0
- package/static/edgepress/fonts/noto-serif-vietnamese-wght-normal.fb6a5ed734c2fbe3.woff2 +0 -0
- package/static/edgepress/fonts/provenance.json +1356 -0
- package/static/edgepress/fonts.css +14 -0
- package/static/edgepress/image-viewer.js +23 -0
- package/static/edgepress/images.css +4 -0
- package/static/edgepress/link-directory.css +14 -0
- package/static/edgepress/local-time.js +12 -0
- package/static/edgepress/media-viewer.css +1 -0
- package/static/edgepress/media-viewer.js +111 -0
- package/static/edgepress/navigation-select.js +14 -0
- package/static/edgepress/oembed.js +129 -0
- package/static/edgepress/plugins/backend/external-api.js +4 -0
- package/static/edgepress/plugins/backend/external-widget.js +13 -0
- package/static/edgepress/plugins/consent/choices.js +47 -0
- package/static/edgepress/plugins/consent/manager.js +56 -74
- package/static/edgepress/project-demo.js +93 -0
- package/static/edgepress/search.js +2 -2
- package/static/edgepress/services-consent.js +3 -0
- package/static/edgepress/services.js +15 -0
- package/static/edgepress/webmcp.js +86 -0
- package/tests/assets-runtime.test.mjs +91 -0
- package/tests/audit.test.mjs +142 -0
- package/tests/brand-regression.test.mjs +110 -0
- package/tests/consent-browser.test.mjs +132 -0
- package/tests/consent-config.test.mjs +85 -0
- package/tests/consent-csp.test.mjs +90 -0
- package/tests/data-saver-loading.test.mjs +158 -0
- package/tests/data-saver-network.test.mjs +99 -0
- package/tests/data-saver.test.mjs +294 -0
- package/tests/document-package.test.mjs +28 -0
- package/tests/document-viewer.test.mjs +152 -0
- package/tests/edge-issues.test.mjs +65 -0
- package/tests/embed-syntax.test.mjs +68 -0
- package/tests/external-links.test.mjs +198 -0
- package/tests/fixtures/recording.mp4 +0 -0
- package/tests/fonts.test.mjs +99 -0
- package/tests/image-dimensions.test.mjs +15 -0
- package/tests/image-viewer.test.mjs +36 -0
- package/tests/json-pages.test.mjs +66 -0
- package/tests/link-directory.test.mjs +51 -0
- package/tests/local-tool.test.mjs +34 -0
- package/tests/markdown-media.test.mjs +119 -0
- package/tests/media-block.test.mjs +102 -0
- package/tests/navigation.test.mjs +87 -0
- package/tests/oembed-layout.test.mjs +98 -0
- package/tests/oembed.test.mjs +96 -0
- package/tests/page-authoring.test.mjs +27 -0
- package/tests/page-formatting.test.mjs +37 -0
- package/tests/post-list.test.mjs +96 -0
- package/tests/project-demo.test.mjs +73 -0
- package/tests/publication-time.test.mjs +43 -0
- package/tests/release-version.test.mjs +28 -0
- package/tests/revisions.test.mjs +93 -0
- package/tests/rss.test.mjs +54 -0
- package/tests/services.test.mjs +35 -0
- package/tests/theme-layout.test.mjs +95 -0
- package/tests/video-metadata.test.mjs +28 -0
- package/tests/webmcp.test.mjs +121 -0
- package/tests/writing.test.mjs +101 -0
- package/themes/atelier/assets/style.css +144 -22
- package/themes/atelier/layouts/partials/head.html +8 -1
- package/themes/atelier/layouts/partials/header.html +3 -1
- package/themes/default/assets/data-saver-theme.css +2 -0
- package/themes/default/assets/style.css +139 -23
- package/themes/default/layouts/partials/head.html +9 -2
- package/themes/default/layouts/partials/header.html +3 -1
- package/themes/default/theme.json +1 -0
- package/themes/folio/README.md +7 -0
- package/themes/folio/assets/data-saver-theme.css +3 -0
- package/themes/folio/assets/folio/navigation.js +10 -0
- package/themes/folio/assets/style.css +516 -0
- package/themes/folio/layouts/layout.html +15 -0
- package/themes/folio/layouts/partials/footer.html +6 -0
- package/themes/folio/layouts/partials/head.html +30 -0
- package/themes/folio/layouts/partials/header.html +8 -0
- package/themes/folio/theme.json +7 -0
- package/themes/signal/assets/style.css +143 -21
- package/themes/signal/layouts/partials/head.html +8 -1
- package/themes/signal/layouts/partials/header.html +3 -1
- package/tools/README.md +14 -0
- package/tools/assets/format-pages.mjs +56 -0
- package/tools/assets/generate-brand-assets.py +160 -0
- package/tools/assets/sync-fonts.mjs +71 -0
- package/tools/assets/sync-icons.mjs +17 -0
- package/tools/assets/video-preview.mjs +15 -0
- package/tools/recordings/capture-document-demo.mjs +147 -0
- package/tools/recordings/demo-workbench.mjs +57 -0
- package/tools/recordings/desktop-recording.mjs +92 -0
- package/tools/recordings/provision-vm.sh +18 -0
- package/tools/recordings/start-vm-desktop.sh +28 -0
- package/tools/recordings/vm-desktop.mjs +124 -0
- package/tools/verification/README.md +44 -0
- package/tools/verification/data-saver-site.mjs +405 -0
- package/tools/verification/page-performance.mjs +76 -0
- package/tools/verification/verify-brand-assets.py +52 -0
- package/tools/verification/verify-brand.mjs +180 -0
- package/vercel.json +36 -0
- package/wrangler.jsonc +5 -7
- package/content/pages/home/en.md +0 -99
- package/content/pages/home/zh-cn.md +0 -99
- package/content/pages/plugin-development/en.md +0 -109
- package/content/pages/plugin-development/zh-cn.md +0 -109
- package/content/pages/privacy-policy/en.md +0 -93
- package/content/pages/privacy-policy/zh-cn.md +0 -93
- package/content/pages/project-introduction/en.md +0 -88
- package/content/pages/project-introduction/zh-cn.md +0 -88
- package/content/pages/quick-start/en.md +0 -153
- package/content/pages/quick-start/zh-cn.md +0 -153
- package/content/pages/theme-development/en.md +0 -132
- package/content/pages/theme-development/zh-cn.md +0 -132
- package/src/worker.js +0 -139
- package/static/edgepress/brand/edgepress-mark.svg +0 -7
- package/static/edgepress/brand/mascot-209.webp +0 -0
- package/static/edgepress/brand/mascot-418.png +0 -0
- package/static/edgepress/brand/mascot-418.webp +0 -0
- package/static/edgepress/brand/mascot.png +0 -0
- package/static/edgepress/brand/og-image.png +0 -0
- package/static/edgepress/brand/og-image.svg +0 -46
- package/static/edgepress/icons.svg +0 -24
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../../../schemas/pages.schema.json",
|
|
3
|
+
"title": "Quick start",
|
|
4
|
+
"lang": "en",
|
|
5
|
+
"slug": "quick-start",
|
|
6
|
+
"description": "Install EdgePress, create Markdown posts, edit page elements, build the site, and preview it locally.",
|
|
7
|
+
"blocks": [
|
|
8
|
+
{
|
|
9
|
+
"columns": 1,
|
|
10
|
+
"cells": [
|
|
11
|
+
[
|
|
12
|
+
{
|
|
13
|
+
"type": "hero",
|
|
14
|
+
"eyebrow": "Start here",
|
|
15
|
+
"title": "Set up the project and open the live preview.",
|
|
16
|
+
"text": "Use the edgepress command after installing project dependencies. Local preview rebuilds changed source files and refreshes the PDF accessibility and agent-friendliness report."
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"columns": 1,
|
|
23
|
+
"cells": [
|
|
24
|
+
[
|
|
25
|
+
{
|
|
26
|
+
"type": "section",
|
|
27
|
+
"title": "Requirements and first commands",
|
|
28
|
+
"tone": "soft",
|
|
29
|
+
"blocks": [
|
|
30
|
+
{
|
|
31
|
+
"type": "data-table",
|
|
32
|
+
"title": "Supported baseline",
|
|
33
|
+
"headers": [
|
|
34
|
+
"Requirement",
|
|
35
|
+
"Minimum"
|
|
36
|
+
],
|
|
37
|
+
"rows": [
|
|
38
|
+
[
|
|
39
|
+
"Node.js",
|
|
40
|
+
"22.12"
|
|
41
|
+
],
|
|
42
|
+
[
|
|
43
|
+
"npm",
|
|
44
|
+
"Current supported release"
|
|
45
|
+
],
|
|
46
|
+
[
|
|
47
|
+
"Cloudflare account",
|
|
48
|
+
"Only needed to deploy"
|
|
49
|
+
]
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"type": "code",
|
|
54
|
+
"title": "Install dependencies and run EdgePress",
|
|
55
|
+
"language": "sh",
|
|
56
|
+
"code": "npm ci\nnpm run build\nnpm run dev\n"
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
]
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"columns": 1,
|
|
65
|
+
"cells": [
|
|
66
|
+
[
|
|
67
|
+
{
|
|
68
|
+
"type": "section",
|
|
69
|
+
"title": "Write your first article with Markdown",
|
|
70
|
+
"tone": "soft",
|
|
71
|
+
"blocks": [
|
|
72
|
+
{
|
|
73
|
+
"type": "text",
|
|
74
|
+
"text": "After the one-time setup, everyday writing uses Markdown. EdgePress creates the title, date, and language for you. Open the path printed by the command and write below the second --- line. The theme handles the page title, article list, contents, search, and feed."
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"type": "steps",
|
|
78
|
+
"items": [
|
|
79
|
+
{
|
|
80
|
+
"title": "Create an article",
|
|
81
|
+
"text": "The command prints the new Markdown file path and never overwrites an existing post.",
|
|
82
|
+
"command": "npm run new -- post \"My first article\""
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"title": "Write in Markdown",
|
|
86
|
+
"text": "Replace the starter paragraph. Use"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"title": "Preview and publish",
|
|
90
|
+
"text": "Keep the preview running while you edit. Save the file to refresh it. Build before publishing through your existing deployment workflow.",
|
|
91
|
+
"command": "npm run dev"
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"type": "code",
|
|
97
|
+
"title": "A short article body",
|
|
98
|
+
"language": "markdown",
|
|
99
|
+
"code": "This is my first article. **Markdown** formats the text.\n\n## What I learned\n\n- Record the problem.\n- Explain the solution.\n\n[Project source](https://github.com/jsw-teams/edgepress)\n"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"type": "text",
|
|
103
|
+
"text": "Site settings are handled during setup. The page-layout and theme guides below are available when you want to change the website design. They are optional for everyday article writing."
|
|
104
|
+
}
|
|
105
|
+
]
|
|
106
|
+
}
|
|
107
|
+
]
|
|
108
|
+
]
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"columns": 1,
|
|
112
|
+
"cells": [
|
|
113
|
+
[
|
|
114
|
+
{
|
|
115
|
+
"type": "heading",
|
|
116
|
+
"level": 2,
|
|
117
|
+
"text": "Read Pages as nested collections"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"type": "text",
|
|
121
|
+
"text": "Page (rows) → row (cells) → cell (elements). \"cells\": [[{ \"type\": \"text\", \"text\": \"Hello\" }]] places one text element in one cell. See the Pages authoring guide for the complete example."
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"type": "link-list",
|
|
125
|
+
"title": "Read Pages as nested collections",
|
|
126
|
+
"items": [
|
|
127
|
+
{
|
|
128
|
+
"label": "Read Pages as nested collections",
|
|
129
|
+
"url": "/page-authoring/"
|
|
130
|
+
}
|
|
131
|
+
]
|
|
132
|
+
}
|
|
133
|
+
]
|
|
134
|
+
]
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"columns": 2,
|
|
138
|
+
"cells": [
|
|
139
|
+
[
|
|
140
|
+
{
|
|
141
|
+
"type": "section",
|
|
142
|
+
"title": "Create content",
|
|
143
|
+
"blocks": [
|
|
144
|
+
{
|
|
145
|
+
"type": "steps",
|
|
146
|
+
"items": [
|
|
147
|
+
{
|
|
148
|
+
"title": "Create an article",
|
|
149
|
+
"text": "Posts use Markdown and are written in content/posts/<post-id>/en.md or a localized file such as zh-cn.md.",
|
|
150
|
+
"command": "edgepress new post \"A project update\""
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"title": "Create a page folder",
|
|
154
|
+
"text": "Add content/pages/<page-id>/en.json. Each configured locale gets its own lowercase locale filename."
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"title": "Set the language",
|
|
158
|
+
"text": "Match the metadata lang value to the filename and enable optional locales in edgepress.config.mjs."
|
|
159
|
+
}
|
|
160
|
+
]
|
|
161
|
+
}
|
|
162
|
+
]
|
|
163
|
+
}
|
|
164
|
+
],
|
|
165
|
+
[
|
|
166
|
+
{
|
|
167
|
+
"type": "section",
|
|
168
|
+
"title": "Edit a page layout",
|
|
169
|
+
"blocks": [
|
|
170
|
+
{
|
|
171
|
+
"type": "text",
|
|
172
|
+
"paragraphs": [
|
|
173
|
+
"Pages have no Markdown article body. Put the layout in the blocks array of each localized JSON page.",
|
|
174
|
+
"At the top of each row, choose columns from 1 to 4. Add one cells entry for each column. Inside a cell, add an element type, then its content fields.",
|
|
175
|
+
"Supported content elements include hero, section, text, heading, display-text, media-text, links, lists, steps, code, tables, notices, latest-posts, and configured privacy or integration widgets."
|
|
176
|
+
]
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"type": "notice",
|
|
180
|
+
"title": "Accessibility for video",
|
|
181
|
+
"text": "A media-text video element requires a captions WebVTT file, a language code, a track label, and an accessible media label. Use locally hosted files when possible.",
|
|
182
|
+
"tone": "info"
|
|
183
|
+
}
|
|
184
|
+
]
|
|
185
|
+
}
|
|
186
|
+
]
|
|
187
|
+
]
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"columns": 1,
|
|
191
|
+
"cells": [
|
|
192
|
+
[
|
|
193
|
+
{
|
|
194
|
+
"type": "section",
|
|
195
|
+
"title": "Configure and preview",
|
|
196
|
+
"blocks": [
|
|
197
|
+
{
|
|
198
|
+
"type": "text",
|
|
199
|
+
"paragraphs": [
|
|
200
|
+
"Edit site title, description, canonical URL, agent SEO, site navigation, footer text, and privacy controller details in config.yml. Theme colors live in theme CSS.",
|
|
201
|
+
"Change the selected theme with edgepress theme list and edgepress theme use <theme-name>. Theme paths are stored in edgepress.config.mjs.",
|
|
202
|
+
"Install a theme package with edgepress theme install <npm-package> or start with a blank theme using edgepress theme create <name>.",
|
|
203
|
+
"edgepress server starts a local Wrangler server, watches source files, rebuilds changed pages, reloads the browser, and refreshes tools/reports/page-check.pdf. Screenshots are embedded in the PDF and temporary files are removed after generation."
|
|
204
|
+
]
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"type": "code",
|
|
208
|
+
"title": "Build, inspect, and deploy",
|
|
209
|
+
"language": "sh",
|
|
210
|
+
"code": "edgepress check\nedgepress doctor\nedgepress deploy\n"
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"type": "text",
|
|
214
|
+
"text": "Compatibility checks read the Node.js baseline, Worker entry, and compatibility date from project-compatibility.json and wrangler.jsonc. Review the PDF report before deploying."
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"type": "text",
|
|
218
|
+
"paragraphs": [
|
|
219
|
+
"You can run edgepress check before writing your first article. Markdown verification uses a built-in in-memory sample; no tutorial post or posts directory is required. Worker compatibility reads the actual main entry from Wrangler configuration.",
|
|
220
|
+
"With Edge, Chrome or Chromium installed, the report includes headless desktop, phone and tablet profiles in light and dark modes, browser accessibility-tree checks, and a sample of Tab, Shift+Tab and Enter navigation. No visible browser or desktop screen reader is launched. Simulations do not replace physical-device or assistive-technology testing; unavailable browser checks are labeled accordingly."
|
|
221
|
+
]
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
"type": "section",
|
|
225
|
+
"title": "Publish the source on GitHub",
|
|
226
|
+
"blocks": [
|
|
227
|
+
{
|
|
228
|
+
"type": "text",
|
|
229
|
+
"paragraphs": [
|
|
230
|
+
"Create an empty repository on GitHub, then push the EdgePress source. In the Cloudflare dashboard, create a Worker and connect that repository with Workers Builds. Choose main as the production branch. Set a unique Worker name in wrangler.jsonc before deployment.",
|
|
231
|
+
"For this repository, set Workers Builds root directory to /, build command to npm run build, and deploy command to npx wrangler deploy. No build variables are required. The build command generates dist/ before Wrangler publishes the Worker; dist/ stays out of Git.",
|
|
232
|
+
"The Deploy to Cloudflare button in the GitHub README creates a new GitHub repository copy and a new Worker. During setup, choose unused names for both. If a repository or Worker named edgepress already exists, choose a different name. To update an existing Worker, use its existing repository and Workers Builds connection; the button does not attach to or update an existing project.",
|
|
233
|
+
"If the log remains at Initializing build environment before cloning the repository or running commands, verify that the Cloudflare Workers and Pages GitHub App still has access to this repository. Reconnect the repository or reinstall and reauthorize the app, then retry. Check that the selected Cloudflare API token is still valid; Workers Builds can create a token automatically, and stale tokens must be replaced in Build settings. This stage runs before the project build command."
|
|
234
|
+
]
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"type": "code",
|
|
238
|
+
"title": "Upload the source repository",
|
|
239
|
+
"language": "sh",
|
|
240
|
+
"code": "git init\ngit add .\ngit commit -m \"Initial EdgePress site\"\ngit branch -M main\ngit remote add origin https://github.com/<owner>/<repository>.git\ngit push -u origin main\n"
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"type": "text",
|
|
244
|
+
"text": "For a local deployment, authenticate with npx wrangler login, then run edgepress deploy. The command generates dist/ and deploys the Worker using wrangler.jsonc."
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"type": "link-list",
|
|
248
|
+
"title": "Deployment references",
|
|
249
|
+
"items": [
|
|
250
|
+
{
|
|
251
|
+
"label": "Connect or reauthorize the GitHub integration",
|
|
252
|
+
"url": "https://developers.cloudflare.com/workers/ci-cd/builds/git-integration/github-integration/"
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"label": "Configure Workers Builds commands",
|
|
256
|
+
"url": "https://developers.cloudflare.com/workers/ci-cd/builds/configuration/"
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
"label": "Troubleshoot Workers Builds",
|
|
260
|
+
"url": "https://developers.cloudflare.com/workers/ci-cd/builds/troubleshoot/"
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
"label": "Deploy button behavior and setup",
|
|
264
|
+
"url": "https://developers.cloudflare.com/workers/platform/deploy-buttons/"
|
|
265
|
+
}
|
|
266
|
+
]
|
|
267
|
+
}
|
|
268
|
+
]
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
"type": "section",
|
|
272
|
+
"title": "Generate files for OpenResty or Nginx",
|
|
273
|
+
"blocks": [
|
|
274
|
+
{
|
|
275
|
+
"type": "text",
|
|
276
|
+
"paragraphs": [
|
|
277
|
+
"edgepress build and edgepress generate use the same generator and write the static site to dist/. Run edgepress generate, then upload the contents of dist/ to the server's document root. Do not upload the dist/ directory as a nested folder unless that is the URL path you want.",
|
|
278
|
+
"OpenResty uses Nginx configuration syntax for static files. Set root to the uploaded directory; try_files checks the exact path, directory index, and .html route. The generated 403.html and 404.html files can be used for error responses."
|
|
279
|
+
]
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
"type": "code",
|
|
283
|
+
"title": "Minimal Nginx or OpenResty site",
|
|
284
|
+
"language": "nginx",
|
|
285
|
+
"code": "server {\n listen 80;\n server_name example.org;\n root /var/www/edgepress;\n index index.html;\n\n location / {\n try_files $uri $uri/ $uri.html =404;\n }\n\n error_page 403 /403.html;\n error_page 404 /404.html;\n}\n"
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
"type": "code",
|
|
289
|
+
"title": "Generate the upload directory",
|
|
290
|
+
"language": "sh",
|
|
291
|
+
"code": "edgepress generate"
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
"type": "notice",
|
|
295
|
+
"title": "Worker-only integrations",
|
|
296
|
+
"text": "All deployments serve static output. Register optional external APIs and widgets under plugins.consent.services in config.yml; each backend manages its own private credentials and security.",
|
|
297
|
+
"tone": "warning"
|
|
298
|
+
}
|
|
299
|
+
]
|
|
300
|
+
}
|
|
301
|
+
]
|
|
302
|
+
}
|
|
303
|
+
]
|
|
304
|
+
]
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
"columns": 1,
|
|
308
|
+
"cells": [
|
|
309
|
+
[
|
|
310
|
+
{
|
|
311
|
+
"type": "text",
|
|
312
|
+
"heading": "Publication dates and time zones",
|
|
313
|
+
"text": "Set site.timeZone in config.yml (default Asia/Taipei). New posts include a complete timestamp with an explicit offset. Timestamps without an offset are interpreted in that configured zone, independently of the build host. Date-only articles stay calendar dates; complete timestamps are shown in the reader’s current zone. Ambiguous daylight-saving times require an explicit offset."
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
"type": "code",
|
|
317
|
+
"title": "config.yml",
|
|
318
|
+
"language": "yaml",
|
|
319
|
+
"code": "site:\n timeZone: Asia/Taipei\n"
|
|
320
|
+
}
|
|
321
|
+
]
|
|
322
|
+
]
|
|
323
|
+
}
|
|
324
|
+
]
|
|
325
|
+
}
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../../../schemas/pages.schema.json",
|
|
3
|
+
"title": "快速入门",
|
|
4
|
+
"lang": "zh-CN",
|
|
5
|
+
"slug": "quick-start",
|
|
6
|
+
"description": "安装 EdgePress、创建 Markdown 文章、编辑页面元素、本地构建并打开实时预览。",
|
|
7
|
+
"blocks": [
|
|
8
|
+
{
|
|
9
|
+
"columns": 1,
|
|
10
|
+
"cells": [
|
|
11
|
+
[
|
|
12
|
+
{
|
|
13
|
+
"type": "hero",
|
|
14
|
+
"eyebrow": "从这里开始",
|
|
15
|
+
"title": "配置项目并打开实时预览。",
|
|
16
|
+
"text": "安装项目依赖后使用 edgepress 命令。本地预览会在源文件变更后自动构建,并刷新无障碍化和 agent 友好度 PDF 报告。"
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"columns": 1,
|
|
23
|
+
"cells": [
|
|
24
|
+
[
|
|
25
|
+
{
|
|
26
|
+
"type": "section",
|
|
27
|
+
"title": "环境要求与初始命令",
|
|
28
|
+
"tone": "soft",
|
|
29
|
+
"blocks": [
|
|
30
|
+
{
|
|
31
|
+
"type": "data-table",
|
|
32
|
+
"title": "支持基线",
|
|
33
|
+
"headers": [
|
|
34
|
+
"要求",
|
|
35
|
+
"最低版本"
|
|
36
|
+
],
|
|
37
|
+
"rows": [
|
|
38
|
+
[
|
|
39
|
+
"Node.js",
|
|
40
|
+
"22.12"
|
|
41
|
+
],
|
|
42
|
+
[
|
|
43
|
+
"npm",
|
|
44
|
+
"当前受支持版本"
|
|
45
|
+
],
|
|
46
|
+
[
|
|
47
|
+
"Cloudflare 账户",
|
|
48
|
+
"仅部署时需要"
|
|
49
|
+
]
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"type": "code",
|
|
54
|
+
"title": "安装依赖并运行 EdgePress",
|
|
55
|
+
"language": "sh",
|
|
56
|
+
"code": "npm ci\nnpm run build\nnpm run dev\n"
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
]
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"columns": 1,
|
|
65
|
+
"cells": [
|
|
66
|
+
[
|
|
67
|
+
{
|
|
68
|
+
"type": "section",
|
|
69
|
+
"title": "只用 Markdown 写第一篇文章",
|
|
70
|
+
"tone": "soft",
|
|
71
|
+
"blocks": [
|
|
72
|
+
{
|
|
73
|
+
"type": "text",
|
|
74
|
+
"text": "完成一次性配置后,日常写作只需 Markdown。EdgePress 会自动填写标题、日期和语言。打开命令输出的文件路径,在第二个 --- 后写正文。主题会处理文章标题、列表、目录、搜索和订阅。"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"type": "steps",
|
|
78
|
+
"items": [
|
|
79
|
+
{
|
|
80
|
+
"title": "新建文章",
|
|
81
|
+
"text": "命令会输出新文件的路径,不会覆盖已有文章。",
|
|
82
|
+
"command": "npm run new -- post \"我的第一篇文章\""
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"title": "写 Markdown 正文",
|
|
86
|
+
"text": "替换示例段落。使用"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"title": "预览并发布",
|
|
90
|
+
"text": "写作时保持预览运行,保存文件即可刷新。发布前运行 npm run build,再使用已有部署流程。",
|
|
91
|
+
"command": "npm run dev"
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"type": "code",
|
|
97
|
+
"title": "简单的文章正文",
|
|
98
|
+
"language": "markdown",
|
|
99
|
+
"code": "这是我的第一篇文章。使用 **Markdown** 排版。\n\n## 学到的内容\n\n- 记录问题现象。\n- 说明解决方法。\n\n[项目源码](https://github.com/jsw-teams/edgepress)\n"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"type": "text",
|
|
103
|
+
"text": "站点配置在初次设置时完成。想调整页面设计时,再阅读下面的页面布局与主题说明;日常发文无需掌握这些开发内容。"
|
|
104
|
+
}
|
|
105
|
+
]
|
|
106
|
+
}
|
|
107
|
+
]
|
|
108
|
+
]
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"columns": 1,
|
|
112
|
+
"cells": [
|
|
113
|
+
[
|
|
114
|
+
{
|
|
115
|
+
"type": "heading",
|
|
116
|
+
"level": 2,
|
|
117
|
+
"text": "用括号看懂 Pages 的包含关系"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"type": "text",
|
|
121
|
+
"text": "页面(行列表)→ 行(单元格列表)→ 单元格(元素列表)。\"cells\": [[{ \"type\": \"text\", \"text\": \"Hello\" }]] 表示一行的一栏里放一个文字元素。完整 JSON 示例和字段说明见 Pages 编写指南。"
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"type": "link-list",
|
|
125
|
+
"title": "用括号看懂 Pages 的包含关系",
|
|
126
|
+
"items": [
|
|
127
|
+
{
|
|
128
|
+
"label": "用括号看懂 Pages 的包含关系",
|
|
129
|
+
"url": "/page-authoring/"
|
|
130
|
+
}
|
|
131
|
+
]
|
|
132
|
+
}
|
|
133
|
+
]
|
|
134
|
+
]
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"columns": 2,
|
|
138
|
+
"cells": [
|
|
139
|
+
[
|
|
140
|
+
{
|
|
141
|
+
"type": "section",
|
|
142
|
+
"title": "创建内容",
|
|
143
|
+
"blocks": [
|
|
144
|
+
{
|
|
145
|
+
"type": "steps",
|
|
146
|
+
"items": [
|
|
147
|
+
{
|
|
148
|
+
"title": "创建文章",
|
|
149
|
+
"text": "文章使用 Markdown,保存在 content/posts/<post-id>/en.md 或 zh-cn.md 等本地化文件中。",
|
|
150
|
+
"command": "edgepress new post \"A project update\""
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"title": "创建页面目录",
|
|
154
|
+
"text": "新建 content/pages/<page-id>/en.json。每种已配置语言都有一个小写语言文件名。"
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"title": "设置语言",
|
|
158
|
+
"text": "元数据的 lang 值需与文件名匹配;在 edgepress.config.mjs 中启用可选语言。"
|
|
159
|
+
}
|
|
160
|
+
]
|
|
161
|
+
}
|
|
162
|
+
]
|
|
163
|
+
}
|
|
164
|
+
],
|
|
165
|
+
[
|
|
166
|
+
{
|
|
167
|
+
"type": "section",
|
|
168
|
+
"title": "编辑页面布局",
|
|
169
|
+
"blocks": [
|
|
170
|
+
{
|
|
171
|
+
"type": "text",
|
|
172
|
+
"paragraphs": [
|
|
173
|
+
"页面没有 Markdown 文章正文。请将布局写在每个本地化 JSON 页面文件的 blocks 数组中。",
|
|
174
|
+
"每行先选择 1 至 4 栏,并为每栏添加一个 cells 项。然后在栏内选择元素类型,再填写该元素的内容字段。",
|
|
175
|
+
"可用元素包括 hero、section、text、heading、display-text、media-text、链接、列表、步骤、代码、表格、提示、最新文章,以及已配置的隐私或集成组件。"
|
|
176
|
+
]
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"type": "notice",
|
|
180
|
+
"title": "视频无障碍要求",
|
|
181
|
+
"text": "media-text 视频元素需要 WebVTT 字幕文件、语言代码、字幕轨道名称和可访问的媒体描述。尽量使用本地托管的视频文件。",
|
|
182
|
+
"tone": "info"
|
|
183
|
+
}
|
|
184
|
+
]
|
|
185
|
+
}
|
|
186
|
+
]
|
|
187
|
+
]
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"columns": 1,
|
|
191
|
+
"cells": [
|
|
192
|
+
[
|
|
193
|
+
{
|
|
194
|
+
"type": "section",
|
|
195
|
+
"title": "配置与预览",
|
|
196
|
+
"blocks": [
|
|
197
|
+
{
|
|
198
|
+
"type": "text",
|
|
199
|
+
"paragraphs": [
|
|
200
|
+
"在 config.yml 中编辑站点标题、简介、规范 URL、agent SEO、导航、页脚文字和隐私运营者信息。主题配色保存在各自主题的 CSS 中。",
|
|
201
|
+
"使用 edgepress theme list 查看主题,使用 edgepress theme use <主题名称> 切换主题。主题路径保存在 edgepress.config.mjs 中。",
|
|
202
|
+
"使用 edgepress theme install <npm-package> 安装主题包,或使用 edgepress theme create <名称> 创建空白主题。",
|
|
203
|
+
"edgepress server 会启动本地 Wrangler 服务、监视源文件、重新构建变更页面、刷新浏览器,并更新 tools/reports/page-check.pdf。截图会嵌入 PDF,生成后会清理临时文件。"
|
|
204
|
+
]
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"type": "code",
|
|
208
|
+
"title": "构建、检查和部署",
|
|
209
|
+
"language": "sh",
|
|
210
|
+
"code": "edgepress check\nedgepress doctor\nedgepress deploy\n"
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"type": "text",
|
|
214
|
+
"text": "兼容性检查会读取 project-compatibility.json 和 wrangler.jsonc 中的 Node.js 基线、Worker 入口和兼容日期。部署前请查看 PDF 报告。"
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"type": "text",
|
|
218
|
+
"paragraphs": [
|
|
219
|
+
"第一篇文章尚未创建时,也可以运行 edgepress check。Markdown 检查使用内置的内存样例,无需发布教程文章或创建 posts 目录。Worker 兼容性检查读取 Wrangler 的实际 main 入口。",
|
|
220
|
+
"安装 Edge、Chrome 或 Chromium 后,报告会包含无窗口的桌面、手机和平板深浅模式模拟、浏览器无障碍树检查,以及 Tab、Shift+Tab 和 Enter 键盘操作抽样。不会启动可见浏览器或桌面屏幕阅读器。模拟不能代替实体设备与辅助技术测试;浏览器检查不可用时会明确标注。"
|
|
221
|
+
]
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
"type": "section",
|
|
225
|
+
"title": "将源代码上传到 GitHub",
|
|
226
|
+
"blocks": [
|
|
227
|
+
{
|
|
228
|
+
"type": "text",
|
|
229
|
+
"paragraphs": [
|
|
230
|
+
"在 GitHub 创建空仓库并推送 EdgePress 源代码。然后在 Cloudflare 控制台创建 Worker,并通过 Workers Builds 连接该仓库,选择 main 作为生产分支。部署前请在 wrangler.jsonc 中设置唯一的 Worker 名称。",
|
|
231
|
+
"此仓库的 Workers Builds 设置为:根目录 /、构建命令 npm run build、部署命令 npx wrangler deploy。无需添加构建变量。构建命令会先生成 dist/,再由 Wrangler 发布 Worker;dist/ 不会提交到 Git。",
|
|
232
|
+
"GitHub README 中的一键部署按钮会在你的 GitHub 账户创建一份新仓库副本,并在 Cloudflare 创建一个新 Worker。设置时请为目标仓库和 Worker 选择未占用的名称。如果 `edgepress` 已存在,请改用其他名称。要更新已有 Worker,请继续使用它已连接的仓库和 Workers Builds;按钮不会连接或更新已有项目。",
|
|
233
|
+
"如果日志在克隆仓库或运行命令前一直停留在 Initializing build environment,请检查 Cloudflare Workers and Pages GitHub App 是否仍有此仓库的访问权限。重新连接仓库,或重新安装并授权该 App 后再试。还需确认所选 Cloudflare API Token 仍有效;Workers Builds 可以自动创建 Token,如果已选 Token 失效,需要在 Build 设置中替换。此阶段尚未运行项目构建命令。"
|
|
234
|
+
]
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"type": "code",
|
|
238
|
+
"title": "推送源代码仓库",
|
|
239
|
+
"language": "sh",
|
|
240
|
+
"code": "git init\ngit add .\ngit commit -m \"Initial EdgePress site\"\ngit branch -M main\ngit remote add origin https://github.com/<owner>/<repository>.git\ngit push -u origin main\n"
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"type": "text",
|
|
244
|
+
"text": "本地部署时,先运行 npx wrangler login 完成 Cloudflare 身份验证,再运行 edgepress deploy。该命令会生成 dist/,并依据 wrangler.jsonc 部署 Worker。"
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"type": "link-list",
|
|
248
|
+
"title": "部署参考",
|
|
249
|
+
"items": [
|
|
250
|
+
{
|
|
251
|
+
"label": "连接或重新授权 GitHub 集成",
|
|
252
|
+
"url": "https://developers.cloudflare.com/workers/ci-cd/builds/git-integration/github-integration/"
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"label": "配置 Workers Builds 命令",
|
|
256
|
+
"url": "https://developers.cloudflare.com/workers/ci-cd/builds/configuration/"
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
"label": "排查 Workers Builds",
|
|
260
|
+
"url": "https://developers.cloudflare.com/workers/ci-cd/builds/troubleshoot/"
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
"label": "一键部署按钮的工作方式",
|
|
264
|
+
"url": "https://developers.cloudflare.com/workers/platform/deploy-buttons/"
|
|
265
|
+
}
|
|
266
|
+
]
|
|
267
|
+
}
|
|
268
|
+
]
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
"type": "section",
|
|
272
|
+
"title": "为 OpenResty 或 Nginx 生成静态文件",
|
|
273
|
+
"blocks": [
|
|
274
|
+
{
|
|
275
|
+
"type": "text",
|
|
276
|
+
"paragraphs": [
|
|
277
|
+
"edgepress build 和 edgepress generate 使用同一个生成流程,将静态网站写入 dist/。运行 edgepress generate 后,把 dist/ 目录内的文件上传到服务器网站根目录。如果不希望网址多出一层目录,不要把 dist/ 本身作为嵌套目录上传。",
|
|
278
|
+
"OpenResty 使用 Nginx 配置语法托管静态文件。将 root 指向已上传的目录;try_files 会依次检查原始路径、目录首页和 .html 路由。生成的 403.html 与 404.html 可用于错误响应。"
|
|
279
|
+
]
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
"type": "code",
|
|
283
|
+
"title": "Nginx 或 OpenResty 基础站点配置",
|
|
284
|
+
"language": "nginx",
|
|
285
|
+
"code": "server {\n listen 80;\n server_name example.org;\n root /var/www/edgepress;\n index index.html;\n\n location / {\n try_files $uri $uri/ $uri.html =404;\n }\n\n error_page 403 /403.html;\n error_page 404 /404.html;\n}\n"
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
"type": "code",
|
|
289
|
+
"title": "生成上传目录",
|
|
290
|
+
"language": "sh",
|
|
291
|
+
"code": "edgepress generate"
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
"type": "notice",
|
|
295
|
+
"title": "仅 Worker 支持的集成",
|
|
296
|
+
"text": "各平台均托管静态产物。可选外部 API 和界面在 config.yml 的 plugins.consent.services 注册,独立后端管理凭据和安全验证。",
|
|
297
|
+
"tone": "warning"
|
|
298
|
+
}
|
|
299
|
+
]
|
|
300
|
+
}
|
|
301
|
+
]
|
|
302
|
+
}
|
|
303
|
+
]
|
|
304
|
+
]
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
"columns": 1,
|
|
308
|
+
"cells": [
|
|
309
|
+
[
|
|
310
|
+
{
|
|
311
|
+
"type": "text",
|
|
312
|
+
"heading": "发表日期与时区",
|
|
313
|
+
"text": "在 config.yml 设置 site.timeZone,默认 Asia/Taipei。新文章生成带明确时差的完整时间;没有写时差的具体时间按此配置解释,不依赖构建机器时区。仅有年月日的文章保留日历日期,不补午夜或随读者时区变更。完整时间按读者当前时区展示,遇到夏令时重复或不存在的时间需明确填写时差。"
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
"type": "code",
|
|
317
|
+
"title": "config.yml",
|
|
318
|
+
"language": "yaml",
|
|
319
|
+
"code": "site:\n timeZone: Asia/Taipei\n"
|
|
320
|
+
}
|
|
321
|
+
]
|
|
322
|
+
]
|
|
323
|
+
}
|
|
324
|
+
]
|
|
325
|
+
}
|