Compare commits
161 Commits
v3.0.0-rc.
...
main
| Author | SHA1 | Date |
|---|---|---|
|
|
26e0bd928c | |
|
|
70415a4cef | |
|
|
a34e3f8f91 | |
|
|
7edfe0e2d1 | |
|
|
debfc87d34 | |
|
|
1a5fe5c412 | |
|
|
821247142e | |
|
|
efbe474e9c | |
|
|
06e70a4f9a | |
|
|
1430c85a82 | |
|
|
8024d9b858 | |
|
|
3877c1254f | |
|
|
6f17d54938 | |
|
|
93a09ea086 | |
|
|
91f93656d8 | |
|
|
9a47ec0581 | |
|
|
9017fb9b1d | |
|
|
465cf4d82c | |
|
|
6c724ed857 | |
|
|
c745021b01 | |
|
|
7938803747 | |
|
|
14bec09670 | |
|
|
032e3b8f4d | |
|
|
6151a41428 | |
|
|
8d115a9e0d | |
|
|
d02b96f7f5 | |
|
|
eb6424cc27 | |
|
|
ee53208f9d | |
|
|
9d89607d4d | |
|
|
319d73d54f | |
|
|
2b6d8bd646 | |
|
|
6d8108b653 | |
|
|
2851c93d0d | |
|
|
05279dc3d8 | |
|
|
324c853da0 | |
|
|
2152572a3b | |
|
|
0589b1475d | |
|
|
f159bb2472 | |
|
|
0279c329ad | |
|
|
6bf21d215c | |
|
|
85d74245f8 | |
|
|
76c0f5c2d9 | |
|
|
7a4826baa8 | |
|
|
06dabc69bd | |
|
|
4ca9b8e508 | |
|
|
6b0f9703a3 | |
|
|
0d3ac877d5 | |
|
|
1bbc68bc30 | |
|
|
3426f848a3 | |
|
|
b26e262981 | |
|
|
60d9346965 | |
|
|
8abd1899a6 | |
|
|
628752d92a | |
|
|
6fd8408a2c | |
|
|
77723a1121 | |
|
|
70ba9d2d01 | |
|
|
cc7f43580c | |
|
|
a296d727b6 | |
|
|
34297bc56d | |
|
|
d740be0e9c | |
|
|
506e763c07 | |
|
|
9e5679ff1a | |
|
|
c1ac06768b | |
|
|
436e20a42a | |
|
|
09b2005759 | |
|
|
48cab8e3fb | |
|
|
ed88097f63 | |
|
|
3d8b70e0b3 | |
|
|
d3142c5ed5 | |
|
|
2f2ed41829 | |
|
|
cce1698c60 | |
|
|
0266549a51 | |
|
|
c827b6de2d | |
|
|
8597e5dcdb | |
|
|
4b444d55e5 | |
|
|
333889d38d | |
|
|
3c982127d7 | |
|
|
bed11f62bc | |
|
|
f794559962 | |
|
|
604ccaa89c | |
|
|
0469590cc4 | |
|
|
e1899786a4 | |
|
|
d75f99f9a6 | |
|
|
0a2e6e67d3 | |
|
|
4388267c26 | |
|
|
d94adf6a6c | |
|
|
21599e22d0 | |
|
|
849608bcab | |
|
|
e19b681e51 | |
|
|
c7e090f13a | |
|
|
16500436f7 | |
|
|
ca09f238f3 | |
|
|
e0052edc4c | |
|
|
fd49301a45 | |
|
|
332a466893 | |
|
|
ece3d04d57 | |
|
|
ac5642079d | |
|
|
5baa68bea0 | |
|
|
5123035333 | |
|
|
3389daefac | |
|
|
bfb882c2f0 | |
|
|
bd7d64f455 | |
|
|
d9d700c54f | |
|
|
a180a3012f | |
|
|
60d62d1d65 | |
|
|
affca7a9a2 | |
|
|
28e7298211 | |
|
|
63d9bf2fbc | |
|
|
e844c57e89 | |
|
|
991429ff8a | |
|
|
61116e2ad6 | |
|
|
d3752d227b | |
|
|
e00340331d | |
|
|
c8c93a3854 | |
|
|
8dd1e13f2a | |
|
|
56396f32eb | |
|
|
4cc56133f7 | |
|
|
7650829e91 | |
|
|
209b035399 | |
|
|
b40524fe5f | |
|
|
452adcf735 | |
|
|
bfd2cdbd65 | |
|
|
321e674cc6 | |
|
|
13cd6d4ffd | |
|
|
d59ea067ec | |
|
|
dc3584c2aa | |
|
|
24e5b2c95c | |
|
|
6e8292da4c | |
|
|
17c93e444e | |
|
|
829fbbdea6 | |
|
|
dcb36facc6 | |
|
|
6cc29fac01 | |
|
|
8dc24b6a98 | |
|
|
bda8f14f89 | |
|
|
7c32fc341f | |
|
|
2c0bf8a3d8 | |
|
|
afacb110b5 | |
|
|
58f59e7f89 | |
|
|
424ffd2e29 | |
|
|
7dcad0c632 | |
|
|
aeca87a202 | |
|
|
6f70b27694 | |
|
|
cf08ec9790 | |
|
|
5e1587b4d9 | |
|
|
78606c4d9a | |
|
|
daf47dfba1 | |
|
|
fed25eed0b | |
|
|
b464545629 | |
|
|
95d3a65e74 | |
|
|
be5b5c660f | |
|
|
e68ef88336 | |
|
|
328e5f7ddc | |
|
|
e494f16d3c | |
|
|
9b66f575e7 | |
|
|
791da2e4a1 | |
|
|
9a425bc51b | |
|
|
b3e16c66f3 | |
|
|
a456fefca1 | |
|
|
85e5e552cb | |
|
|
10897416dc | |
|
|
495c7936b6 |
|
|
@ -37,5 +37,6 @@
|
|||
"*.min.*",
|
||||
"jest/vendor"
|
||||
],
|
||||
"ignoreRegExpList": ["Email", "Urls", "#[\\w-]*"]
|
||||
"ignoreRegExpList": ["Email", "Urls", "#[\\w-]*"],
|
||||
"enableFiletypes": ["mdx"]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -85,13 +85,14 @@ module.exports = {
|
|||
ignorePattern: '(eslint-disable|@)',
|
||||
},
|
||||
],
|
||||
'arrow-body-style': OFF,
|
||||
'no-await-in-loop': OFF,
|
||||
'no-case-declarations': WARNING,
|
||||
'no-console': OFF,
|
||||
'no-constant-binary-expression': ERROR,
|
||||
'no-continue': OFF,
|
||||
'no-control-regex': WARNING,
|
||||
'no-else-return': [WARNING, {allowElseIf: true}],
|
||||
'no-else-return': OFF,
|
||||
'no-empty': [WARNING, {allowEmptyCatch: true}],
|
||||
'no-lonely-if': WARNING,
|
||||
'no-nested-ternary': WARNING,
|
||||
|
|
@ -203,7 +204,10 @@ module.exports = {
|
|||
})),
|
||||
],
|
||||
'no-template-curly-in-string': WARNING,
|
||||
'no-unused-expressions': [WARNING, {allowTaggedTemplates: true}],
|
||||
'no-unused-expressions': [
|
||||
WARNING,
|
||||
{allowTaggedTemplates: true, allowShortCircuit: true},
|
||||
],
|
||||
'no-useless-escape': WARNING,
|
||||
'no-void': [ERROR, {allowAsStatement: true}],
|
||||
'prefer-destructuring': WARNING,
|
||||
|
|
@ -344,10 +348,7 @@ module.exports = {
|
|||
ERROR,
|
||||
{'ts-expect-error': 'allow-with-description'},
|
||||
],
|
||||
'@typescript-eslint/consistent-indexed-object-style': [
|
||||
WARNING,
|
||||
'index-signature',
|
||||
],
|
||||
'@typescript-eslint/consistent-indexed-object-style': OFF,
|
||||
'@typescript-eslint/consistent-type-imports': [
|
||||
WARNING,
|
||||
{disallowTypeAnnotations: false},
|
||||
|
|
|
|||
|
|
@ -23,14 +23,14 @@ jobs:
|
|||
# Argos is heavy to run
|
||||
# We only want to trigger Argos on PRs with the 'Argos' label
|
||||
# See https://stackoverflow.com/questions/62325286/run-github-actions-when-pull-requests-have-a-specific-label
|
||||
if: ${{ github.ref_name == 'main' || (github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'Argos')) }}
|
||||
if: ${{ (github.event_name != 'pull_request' && github.ref_name == 'main') || (github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'Argos')) }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
with:
|
||||
node-version: 18
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ jobs:
|
|||
- name: Checkout
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
- name: Set up Node
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
with:
|
||||
node-version: '18'
|
||||
cache: yarn
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ jobs:
|
|||
- name: Checkout
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
- name: Set up Node
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
with:
|
||||
node-version: '18'
|
||||
cache: yarn
|
||||
|
|
@ -60,7 +60,7 @@ jobs:
|
|||
- name: Checkout
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
- name: Set up Node
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
with:
|
||||
cache: yarn
|
||||
- name: Installation
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ jobs:
|
|||
with:
|
||||
fetch-depth: 0 # Needed to get the commit number with "git rev-list --count HEAD"
|
||||
- name: Set up Node
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
with:
|
||||
node-version: '18'
|
||||
cache: yarn
|
||||
|
|
|
|||
|
|
@ -15,4 +15,4 @@ jobs:
|
|||
- name: Checkout
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
- name: Dependency Review
|
||||
uses: actions/dependency-review-action@6c5ccdad469c9f8a2996bfecaec55a631a347034 # 3.1.0
|
||||
uses: actions/dependency-review-action@733dd5d4a5203f238c33806593ec0f5fc5343d8c # 4.2.4
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ jobs:
|
|||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
with:
|
||||
node-version: 18
|
||||
|
||||
|
|
@ -36,7 +36,7 @@ jobs:
|
|||
|
||||
- name: Audit URLs using Lighthouse
|
||||
id: lighthouse_audit
|
||||
uses: treosh/lighthouse-ci-action@03becbfc543944dd6e7534f7ff768abb8a296826 # 10.1.0
|
||||
uses: treosh/lighthouse-ci-action@1b0e7c33270fbba31a18a0fbb1de7cc5256b6d39 # 11.4.0
|
||||
with:
|
||||
urls: |
|
||||
http://localhost:3000
|
||||
|
|
@ -52,7 +52,7 @@ jobs:
|
|||
|
||||
- name: Format lighthouse score
|
||||
id: format_lighthouse_score
|
||||
uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # 7.0.1
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
script: |
|
||||
|
|
@ -64,7 +64,7 @@ jobs:
|
|||
|
||||
- name: Add Lighthouse stats as comment
|
||||
id: comment_to_pr
|
||||
uses: marocchino/sticky-pull-request-comment@efaaab3fd41a9c3de579aba759d2552635e590fd # 2.8.0
|
||||
uses: marocchino/sticky-pull-request-comment@331f8f5b4215f0445d3c07b4967662a32a2d3e31 # 2.9.0
|
||||
with:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
number: ${{ github.event.pull_request.number }}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,44 @@
|
|||
name: Lint AutoFix
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
- docusaurus-v**
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
lint-autofix:
|
||||
name: Lint AutoFix
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ github.event.pull_request.head.repo.full_name }}
|
||||
ref: ${{ github.head_ref }}
|
||||
|
||||
- name: Installation
|
||||
run: yarn
|
||||
|
||||
- name: AutoFix Format
|
||||
run: yarn format
|
||||
|
||||
- name: AutoFix JS
|
||||
run: yarn lint:js:fix
|
||||
|
||||
- name: AutoFix Style
|
||||
run: yarn lint:style:fix
|
||||
|
||||
- name: AutoFix Spelling
|
||||
run: yarn lint:spelling:fix
|
||||
|
||||
- uses: stefanzweifel/git-auto-commit-action@v5
|
||||
with:
|
||||
commit_message: 'refactor: apply lint autofix'
|
||||
|
|
@ -22,7 +22,7 @@ jobs:
|
|||
- name: Checkout
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
- name: Set up Node
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
with:
|
||||
node-version: '18'
|
||||
cache: yarn
|
||||
|
|
|
|||
|
|
@ -24,9 +24,9 @@ jobs:
|
|||
- name: Checkout
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
- name: Set up Node
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
with:
|
||||
node-version: '16'
|
||||
node-version: '20'
|
||||
cache: yarn
|
||||
- name: Installation
|
||||
run: yarn
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ jobs:
|
|||
- name: Checkout
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
- name: Use Node.js ${{ matrix.node }}
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
with:
|
||||
node-version: ${{ matrix.node }}
|
||||
cache: yarn
|
||||
|
|
@ -77,7 +77,7 @@ jobs:
|
|||
- name: Checkout
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
- name: Use Node.js 18
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
with:
|
||||
node-version: '18'
|
||||
cache: yarn
|
||||
|
|
@ -131,7 +131,7 @@ jobs:
|
|||
- name: Checkout
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
- name: Use Node.js 18
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
with:
|
||||
node-version: '18'
|
||||
cache: yarn
|
||||
|
|
@ -161,7 +161,7 @@ jobs:
|
|||
- name: Checkout
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
- name: Use Node.js 18
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
with:
|
||||
node-version: '18'
|
||||
cache: yarn
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ jobs:
|
|||
- name: Checkout
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
- name: Set up Node
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
with:
|
||||
node-version: '18'
|
||||
cache: yarn
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ jobs:
|
|||
- name: Checkout
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
- name: Use Node.js ${{ matrix.node }}
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
with:
|
||||
node-version: ${{ matrix.node }}
|
||||
- name: Installation
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ jobs:
|
|||
- name: Checkout
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
- name: Use Node.js ${{ matrix.node }}
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
with:
|
||||
node-version: ${{ matrix.node }}
|
||||
cache: yarn
|
||||
|
|
|
|||
|
|
@ -1,8 +1,5 @@
|
|||
{
|
||||
"*.{js,jsx,ts,tsx,mjs}": ["eslint --fix"],
|
||||
"*.css": ["stylelint --allow-empty-input --fix"],
|
||||
"*": [
|
||||
"prettier --ignore-unknown --write",
|
||||
"cspell --no-must-find-files --no-progress"
|
||||
]
|
||||
"*": ["prettier --ignore-unknown --write"]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,5 +24,5 @@ website/versioned_sidebars/*.json
|
|||
examples/
|
||||
website/static/katex/katex.min.css
|
||||
|
||||
website/changelog/_swizzle_theme_tests
|
||||
website/changelog
|
||||
website/_dogfooding/_swizzle_theme_tests
|
||||
|
|
|
|||
799
CHANGELOG.md
799
CHANGELOG.md
|
|
@ -1,5 +1,804 @@
|
|||
# Docusaurus 2 Changelog
|
||||
|
||||
## 3.2.0 (2024-03-29)
|
||||
|
||||
#### :rocket: New Feature
|
||||
|
||||
- `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-plugin-sitemap`, `docusaurus-types`, `docusaurus-utils`, `docusaurus`
|
||||
- [#9954](https://github.com/facebook/docusaurus/pull/9954) feat(sitemap): add support for "lastmod" ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-utils-validation`, `docusaurus-utils`
|
||||
- [#9912](https://github.com/facebook/docusaurus/pull/9912) feat(blog): add LastUpdateAuthor & LastUpdateTime ([@OzakIOne](https://github.com/OzakIOne))
|
||||
- `docusaurus-plugin-debug`, `docusaurus-types`, `docusaurus`
|
||||
- [#9931](https://github.com/facebook/docusaurus/pull/9931) feat(core): add new plugin allContentLoaded lifecycle ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-theme-translations`
|
||||
- [#9928](https://github.com/facebook/docusaurus/pull/9928) feat(theme-translations) Icelandic (is) ([@Hallinn](https://github.com/Hallinn))
|
||||
- `docusaurus-plugin-content-blog`
|
||||
- [#9886](https://github.com/facebook/docusaurus/pull/9886) feat(blog): allow processing blog posts through a processBlogPosts function ([@OzakIOne](https://github.com/OzakIOne))
|
||||
- [#9838](https://github.com/facebook/docusaurus/pull/9838) feat(blog): add blog pageBasePath plugin option ([@ilg-ul](https://github.com/ilg-ul))
|
||||
- `docusaurus`
|
||||
- [#9681](https://github.com/facebook/docusaurus/pull/9681) feat(swizzle): ask user preferred language if no language CLI option provided ([@yixiaojiu](https://github.com/yixiaojiu))
|
||||
- `create-docusaurus`, `docusaurus-utils`
|
||||
- [#9442](https://github.com/facebook/docusaurus/pull/9442) feat(create-docusaurus): ask user for preferred language when no language CLI option provided ([@Rafael-Martins](https://github.com/Rafael-Martins))
|
||||
- `docusaurus-plugin-vercel-analytics`
|
||||
- [#9687](https://github.com/facebook/docusaurus/pull/9687) feat(plugin-vercel-analytics): add new vercel analytics plugin ([@OzakIOne](https://github.com/OzakIOne))
|
||||
- `docusaurus-mdx-loader`
|
||||
- [#9684](https://github.com/facebook/docusaurus/pull/9684) feat(mdx-loader): the table-of-contents should display toc/headings of imported MDX partials ([@anatolykopyl](https://github.com/anatolykopyl))
|
||||
|
||||
#### :bug: Bug Fix
|
||||
|
||||
- `docusaurus-mdx-loader`
|
||||
- [#9999](https://github.com/facebook/docusaurus/pull/9999) fix(mdx-loader): Ignore contentTitle coming after Markdown thematicBreak ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-theme-search-algolia`
|
||||
- [#9945](https://github.com/facebook/docusaurus/pull/9945) fix(a11y): move focus algolia-search focus back to search input on Escape ([@mxschmitt](https://github.com/mxschmitt))
|
||||
- `docusaurus-plugin-content-blog`
|
||||
- [#9920](https://github.com/facebook/docusaurus/pull/9920) fix(blog): apply trailing slash to blog feed ([@OzakIOne](https://github.com/OzakIOne))
|
||||
- `docusaurus-theme-classic`
|
||||
- [#9944](https://github.com/facebook/docusaurus/pull/9944) fix(theme): improve a11y of DocSidebarItemCategory expand/collapsed button ([@mxschmitt](https://github.com/mxschmitt))
|
||||
- `docusaurus-theme-translations`
|
||||
- [#9915](https://github.com/facebook/docusaurus/pull/9915) fix(theme-translations): complete and modify Japanese translations ([@Suenaga-Ryuya](https://github.com/Suenaga-Ryuya))
|
||||
- [#9910](https://github.com/facebook/docusaurus/pull/9910) fix(theme-translations): add Japanese translations ([@Suenaga-Ryuya](https://github.com/Suenaga-Ryuya))
|
||||
- [#9872](https://github.com/facebook/docusaurus/pull/9872) fix(theme-translations): complete and improve Spanish theme translations ([@4troDev](https://github.com/4troDev))
|
||||
- [#9812](https://github.com/facebook/docusaurus/pull/9812) fix(i18n): add missing theme translations for fa locale ([@VahidNaderi](https://github.com/VahidNaderi))
|
||||
- `docusaurus-utils`
|
||||
- [#9897](https://github.com/facebook/docusaurus/pull/9897) fix(mdx-loader): mdx-code-block should support CRLF ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus`
|
||||
- [#9878](https://github.com/facebook/docusaurus/pull/9878) fix(core): fix default i18n calendar used, infer it from locale if possible ([@slorber](https://github.com/slorber))
|
||||
- [#9852](https://github.com/facebook/docusaurus/pull/9852) fix(core): ensure core error boundary is able to render theme layout ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-remark-plugin-npm2yarn`
|
||||
- [#9861](https://github.com/facebook/docusaurus/pull/9861) fix(remark-npm2yarn): update npm-to-yarn from 2.0.0 to 2.2.1, fix pnpm extra args syntax ([@OzakIOne](https://github.com/OzakIOne))
|
||||
- `docusaurus-theme-classic`, `docusaurus-theme-translations`
|
||||
- [#9851](https://github.com/facebook/docusaurus/pull/9851) fix(theme-classic): should use plurals for category items description ([@baradusov](https://github.com/baradusov))
|
||||
|
||||
#### :running_woman: Performance
|
||||
|
||||
- `docusaurus-types`, `docusaurus-utils`, `docusaurus`
|
||||
- [#9975](https://github.com/facebook/docusaurus/pull/9975) refactor(core): improve dev perf, fine-grained site reloads - part 3 ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-types`, `docusaurus`
|
||||
- [#9968](https://github.com/facebook/docusaurus/pull/9968) refactor(core): improve dev perf, fine-grained site reloads - part2 ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-types`, `docusaurus`
|
||||
- [#9903](https://github.com/facebook/docusaurus/pull/9903) refactor(core): improve dev perf, fine-grained site reloads - part1 ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-utils`
|
||||
- [#9890](https://github.com/facebook/docusaurus/pull/9890) perf: optimize getFileCommitDate, make it async ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus`
|
||||
- [#9798](https://github.com/facebook/docusaurus/pull/9798) refactor(core): internalize, simplify and optimize the SSG logic ([@slorber](https://github.com/slorber))
|
||||
|
||||
#### :nail_care: Polish
|
||||
|
||||
- `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-theme-classic`, `docusaurus-theme-common`
|
||||
- [#9868](https://github.com/facebook/docusaurus/pull/9868) refactor(theme): dates should be formatted on the client-side instead of in nodejs code ([@OzakIOne](https://github.com/OzakIOne))
|
||||
- `docusaurus-plugin-content-blog`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-types`
|
||||
- [#9669](https://github.com/facebook/docusaurus/pull/9669) refactor(theme): use JSON-LD instead of microdata for blog structured data ([@johnnyreilly](https://github.com/johnnyreilly))
|
||||
- `docusaurus-plugin-content-docs`
|
||||
- [#9839](https://github.com/facebook/docusaurus/pull/9839) refactor(blog): improve doc global data hook error message + add doc warning to blogOnly mode ([@OzakIOne](https://github.com/OzakIOne))
|
||||
|
||||
#### :memo: Documentation
|
||||
|
||||
- [#9937](https://github.com/facebook/docusaurus/pull/9937) docs: use official GitHub Action to deploy to GitHub Pages ([@vlad-nestorov](https://github.com/vlad-nestorov))
|
||||
- [#9971](https://github.com/facebook/docusaurus/pull/9971) docs: replace VuePress by VitePress on tool comparison section ([@sunkanmii](https://github.com/sunkanmii))
|
||||
- [#9914](https://github.com/facebook/docusaurus/pull/9914) docs: update legacy MDX v1 links to markdown links ([@OzakIOne](https://github.com/OzakIOne))
|
||||
- [#9913](https://github.com/facebook/docusaurus/pull/9913) docs: update legacy MDX v1 links to markdown links ([@OzakIOne](https://github.com/OzakIOne))
|
||||
- [#9906](https://github.com/facebook/docusaurus/pull/9906) docs: emphasize "index slug" convention ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- [#9877](https://github.com/facebook/docusaurus/pull/9877) docs: fix typos in deployment.mdx ([@Oreoxmt](https://github.com/Oreoxmt))
|
||||
- [#9845](https://github.com/facebook/docusaurus/pull/9845) docs: typo ([@OzakIOne](https://github.com/OzakIOne))
|
||||
- [#9816](https://github.com/facebook/docusaurus/pull/9816) docs: Add docs for Mermaid Component ([@Its-Just-Nans](https://github.com/Its-Just-Nans))
|
||||
|
||||
#### :robot: Dependencies
|
||||
|
||||
- [#9981](https://github.com/facebook/docusaurus/pull/9981) chore(deps): bump actions/dependency-review-action from 4.1.3 to 4.2.4 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#9982](https://github.com/facebook/docusaurus/pull/9982) chore(deps): bump katex from 0.16.8 to 0.16.10 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#9983](https://github.com/facebook/docusaurus/pull/9983) chore(deps): bump express from 4.18.2 to 4.19.2 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#9977](https://github.com/facebook/docusaurus/pull/9977) chore(deps): bump webpack-dev-middleware from 5.3.3 to 5.3.4 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#9958](https://github.com/facebook/docusaurus/pull/9958) chore(deps): bump follow-redirects from 1.15.4 to 1.15.6 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#9892](https://github.com/facebook/docusaurus/pull/9892) chore(deps): bump actions/dependency-review-action from 4.1.2 to 4.1.3 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#9869](https://github.com/facebook/docusaurus/pull/9869) chore(deps): bump actions/dependency-review-action from 4.0.0 to 4.1.2 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#9874](https://github.com/facebook/docusaurus/pull/9874) chore(deps): bump ip from 2.0.0 to 2.0.1 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#9843](https://github.com/facebook/docusaurus/pull/9843) chore(deps): bump actions/setup-node from 4.0.1 to 4.0.2 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#9824](https://github.com/facebook/docusaurus/pull/9824) chore(deps): bump treosh/lighthouse-ci-action from 10.1.0 to 11.4.0 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#9823](https://github.com/facebook/docusaurus/pull/9823) chore(deps): bump marocchino/sticky-pull-request-comment from 2.8.0 to 2.9.0 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
|
||||
#### :wrench: Maintenance
|
||||
|
||||
- `docusaurus-plugin-client-redirects`, `docusaurus-plugin-content-docs`, `docusaurus-utils-common`, `docusaurus-utils-validation`, `docusaurus-utils`, `docusaurus`
|
||||
- [#9972](https://github.com/facebook/docusaurus/pull/9972) refactor(utils): remove duplicated function ([@OzakIOne](https://github.com/OzakIOne))
|
||||
- Other
|
||||
- [#9965](https://github.com/facebook/docusaurus/pull/9965) refactor(website): organise blog posts by year ([@GingerGeek](https://github.com/GingerGeek))
|
||||
- [#9865](https://github.com/facebook/docusaurus/pull/9865) chore(website): update @crowdin/crowdin-api-client ([@chris-bateman](https://github.com/chris-bateman))
|
||||
- `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-utils`
|
||||
- [#9963](https://github.com/facebook/docusaurus/pull/9963) refactor(docs,blog): last update timestamp should be in milliseconds instead of seconds ([@slorber](https://github.com/slorber))
|
||||
|
||||
#### Committers: 22
|
||||
|
||||
- Aolin ([@Oreoxmt](https://github.com/Oreoxmt))
|
||||
- Anatoly Kopyl ([@anatolykopyl](https://github.com/anatolykopyl))
|
||||
- Chris Bateman ([@chris-bateman](https://github.com/chris-bateman))
|
||||
- Fafowora Sunkanmi ([@sunkanmii](https://github.com/sunkanmii))
|
||||
- Hallbjörn Magnússon ([@Hallinn](https://github.com/Hallinn))
|
||||
- John Reilly ([@johnnyreilly](https://github.com/johnnyreilly))
|
||||
- Joshua Chen ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- Josue [4tro] A ([@4troDev](https://github.com/4troDev))
|
||||
- Liviu Ionescu ([@ilg-ul](https://github.com/ilg-ul))
|
||||
- Max Schmitt ([@mxschmitt](https://github.com/mxschmitt))
|
||||
- Rafael Martins ([@Rafael-Martins](https://github.com/Rafael-Martins))
|
||||
- Sébastien Lorber ([@slorber](https://github.com/slorber))
|
||||
- Vahid Naderi ([@VahidNaderi](https://github.com/VahidNaderi))
|
||||
- Vlad Nestorov ([@vlad-nestorov](https://github.com/vlad-nestorov))
|
||||
- Zed Spencer-Milnes ([@GingerGeek](https://github.com/GingerGeek))
|
||||
- axel7083 ([@axel7083](https://github.com/axel7083))
|
||||
- krinza.eth ([@kaymomin](https://github.com/kaymomin))
|
||||
- n4n5 ([@Its-Just-Nans](https://github.com/Its-Just-Nans))
|
||||
- ozaki ([@OzakIOne](https://github.com/OzakIOne))
|
||||
- suenryu ([@Suenaga-Ryuya](https://github.com/Suenaga-Ryuya))
|
||||
- Нуриль Барадусов ([@baradusov](https://github.com/baradusov))
|
||||
- 翊小久 ([@yixiaojiu](https://github.com/yixiaojiu))
|
||||
|
||||
## 3.1.1 (2024-01-26)
|
||||
|
||||
#### :bug: Bug Fix
|
||||
|
||||
- `docusaurus-types`, `docusaurus`
|
||||
- [#9791](https://github.com/facebook/docusaurus/pull/9791) fix(core): broken links optimization behaves differently than non-optimized logic ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus`
|
||||
- [#9788](https://github.com/facebook/docusaurus/pull/9788) fix(core): links with target "\_blank" should no be checked by the broken link checker ([@slorber](https://github.com/slorber))
|
||||
- [#9407](https://github.com/facebook/docusaurus/pull/9407) fix(core): conditionally include `hostname` parameter when using… ([@jack-robson](https://github.com/jack-robson))
|
||||
- `docusaurus-utils`
|
||||
- [#9776](https://github.com/facebook/docusaurus/pull/9776) fix(mdx-loader): allow spaces before `mdx-code-block` info string ([@eitsupi](https://github.com/eitsupi))
|
||||
- `create-docusaurus`
|
||||
- [#9783](https://github.com/facebook/docusaurus/pull/9783) fix(create-docusaurus): fix typo in init template sample docs ([@dawei-wang](https://github.com/dawei-wang))
|
||||
- `docusaurus-theme-common`
|
||||
- [#9727](https://github.com/facebook/docusaurus/pull/9727) fix(theme-common): fix missing code block MagicComments style in Visual Basic (.NET) 16 ([@tats-u](https://github.com/tats-u))
|
||||
- `docusaurus-theme-classic`, `docusaurus-theme-mermaid`
|
||||
- [#9733](https://github.com/facebook/docusaurus/pull/9733) fix: remove old useless mdx typedefs ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-module-type-aliases`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-utils`, `docusaurus`
|
||||
- [#9732](https://github.com/facebook/docusaurus/pull/9732) fix(core): various broken anchor link fixes ([@slorber](https://github.com/slorber))
|
||||
|
||||
#### :running_woman: Performance
|
||||
|
||||
- `docusaurus`
|
||||
- [#9778](https://github.com/facebook/docusaurus/pull/9778) perf(core): optimize broken links checker ([@slorber](https://github.com/slorber))
|
||||
|
||||
#### :nail_care: Polish
|
||||
|
||||
- `docusaurus-theme-classic`
|
||||
- [#9470](https://github.com/facebook/docusaurus/pull/9470) polish(theme): MDX images should use async decoding ([@sanjaiyan-dev](https://github.com/sanjaiyan-dev))
|
||||
|
||||
#### Committers: 6
|
||||
|
||||
- Jack Robson ([@jack-robson](https://github.com/jack-robson))
|
||||
- Sanjaiyan Parthipan ([@sanjaiyan-dev](https://github.com/sanjaiyan-dev))
|
||||
- Sébastien Lorber ([@slorber](https://github.com/slorber))
|
||||
- Tatsunori Uchino ([@tats-u](https://github.com/tats-u))
|
||||
- [@dawei-wang](https://github.com/dawei-wang)
|
||||
- [@eitsupi](https://github.com/eitsupi)
|
||||
|
||||
## 3.1.0 (2024-01-05)
|
||||
|
||||
#### :rocket: New Feature
|
||||
|
||||
- `docusaurus-mdx-loader`, `docusaurus-module-type-aliases`, `docusaurus-theme-classic`, `docusaurus-types`, `docusaurus-utils`, `docusaurus`
|
||||
- [#9528](https://github.com/facebook/docusaurus/pull/9528) feat(core): make broken link checker detect broken anchors - add `onBrokenAnchors` config ([@OzakIOne](https://github.com/OzakIOne))
|
||||
- `docusaurus-mdx-loader`, `docusaurus-types`, `docusaurus`
|
||||
- [#9674](https://github.com/facebook/docusaurus/pull/9674) feat(mdx-loader): add support for siteConfig.markdown.remarkRehypeOptions ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-theme-common`
|
||||
- [#9671](https://github.com/facebook/docusaurus/pull/9671) feat(theme-common): code block MagicComments support for (Visual) Basic/Batch/Fortran/COBOL/ML ([@tats-u](https://github.com/tats-u))
|
||||
- `docusaurus-mdx-loader`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-types`, `docusaurus-utils`, `docusaurus`
|
||||
- [#9624](https://github.com/facebook/docusaurus/pull/9624) feat: siteConfig.markdown.parseFrontMatter hook ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-utils`
|
||||
- [#9610](https://github.com/facebook/docusaurus/pull/9610) feat(core): enable port configuration via environment variable ([@OzakIOne](https://github.com/OzakIOne))
|
||||
|
||||
#### :bug: Bug Fix
|
||||
|
||||
- `docusaurus-theme-classic`, `docusaurus-theme-live-codeblock`
|
||||
- [#9704](https://github.com/facebook/docusaurus/pull/9704) fix(theme): allow empty code blocks and live playgrounds ([@slorber](https://github.com/slorber))
|
||||
- `create-docusaurus`
|
||||
- [#9696](https://github.com/facebook/docusaurus/pull/9696) fix(create-docusaurus): fix init template code blocks, and little improvements ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-plugin-pwa`
|
||||
- [#9668](https://github.com/facebook/docusaurus/pull/9668) fix(pwa-plugin): upgrade workbox ([@SimenB](https://github.com/SimenB))
|
||||
- `docusaurus`
|
||||
- [#9648](https://github.com/facebook/docusaurus/pull/9648) fix(cli): output help when no conventional config + no subcommand ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- `docusaurus-theme-live-codeblock`
|
||||
- [#9631](https://github.com/facebook/docusaurus/pull/9631) fix(live-codeblock): stabilize react-live transformCode callback, fix editor/preview desync ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-utils`
|
||||
- [#9617](https://github.com/facebook/docusaurus/pull/9617) fix(utils): Markdown link replacement with <> but no spaces ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- `docusaurus-module-type-aliases`
|
||||
- [#9612](https://github.com/facebook/docusaurus/pull/9612) fix(type-aliases): add `title` prop for imported inline SVG React components ([@axmmisaka](https://github.com/axmmisaka))
|
||||
- `docusaurus-plugin-content-blog`
|
||||
- [#9581](https://github.com/facebook/docusaurus/pull/9581) fix(content-blog): add baseUrl for author.image_url ([@OzakIOne](https://github.com/OzakIOne))
|
||||
- `docusaurus-theme-translations`
|
||||
- [#9477](https://github.com/facebook/docusaurus/pull/9477) fix(i18n): complete translations for theme-common.json Brazilian Portuguese (pt-BR) ([@c0h1b4](https://github.com/c0h1b4))
|
||||
|
||||
#### :nail_care: Polish
|
||||
|
||||
- `docusaurus-theme-common`
|
||||
- [#9335](https://github.com/facebook/docusaurus/pull/9335) refactor(theme-common): allow optional desktopBreakpoint param in useWindowSize ([@jgarrow](https://github.com/jgarrow))
|
||||
|
||||
#### :wrench: Maintenance
|
||||
|
||||
- `docusaurus-theme-search-algolia`
|
||||
- [#9604](https://github.com/facebook/docusaurus/pull/9604) chore: add lint autofix CI job ([@slorber](https://github.com/slorber))
|
||||
|
||||
#### Committers: 8
|
||||
|
||||
- Janessa Garrow ([@jgarrow](https://github.com/jgarrow))
|
||||
- Joshua Chen ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- Simen Bekkhus ([@SimenB](https://github.com/SimenB))
|
||||
- Sébastien Lorber ([@slorber](https://github.com/slorber))
|
||||
- Tatsunori Uchino ([@tats-u](https://github.com/tats-u))
|
||||
- [@c0h1b4](https://github.com/c0h1b4)
|
||||
- axmmisaka ([@axmmisaka](https://github.com/axmmisaka))
|
||||
- ozaki ([@OzakIOne](https://github.com/OzakIOne))
|
||||
|
||||
## 3.0.1 (2023-11-30)
|
||||
|
||||
#### :bug: Bug Fix
|
||||
|
||||
- `docusaurus-utils`
|
||||
- [#9570](https://github.com/facebook/docusaurus/pull/9570) fix: add v2 retrocompatible support for quoted admonitions ([@slorber](https://github.com/slorber))
|
||||
- [#9535](https://github.com/facebook/docusaurus/pull/9535) fix: v3 admonitions should support v2 title syntax for nested admonitions ([@slorber](https://github.com/slorber))
|
||||
- `create-docusaurus`, `docusaurus-theme-classic`, `docusaurus-theme-common`
|
||||
- [#9567](https://github.com/facebook/docusaurus/pull/9567) fix(theme): upgrade prism-react-renderer, fix html script and style tag highlighting ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-theme-common`
|
||||
- [#9531](https://github.com/facebook/docusaurus/pull/9531) fix(theme): docs html sidebar items should always be visible ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-theme-classic`
|
||||
- [#9530](https://github.com/facebook/docusaurus/pull/9530) fix(theme): fix firefox CSS :has() support bug ([@slorber](https://github.com/slorber))
|
||||
- `create-docusaurus`
|
||||
- [#9487](https://github.com/facebook/docusaurus/pull/9487) fix(create-docusaurus): fix readme docusaurus 2 ref ([@slorber](https://github.com/slorber))
|
||||
|
||||
#### :robot: Dependencies
|
||||
|
||||
- `docusaurus-plugin-debug`
|
||||
- [#9566](https://github.com/facebook/docusaurus/pull/9566) chore(debug-plugin): migrate to a new maintained JSON Viewer ([@mcrstudio](https://github.com/mcrstudio))
|
||||
- `create-docusaurus`, `docusaurus-theme-classic`, `docusaurus-theme-common`
|
||||
- [#9572](https://github.com/facebook/docusaurus/pull/9572) chore: upgrade prism-react-renderer to 2.3.0 to avoid older clsx ([@harryzcy](https://github.com/harryzcy))
|
||||
- [#9567](https://github.com/facebook/docusaurus/pull/9567) fix(theme): upgrade prism-react-renderer, fix html script and style tag highlighting ([@slorber](https://github.com/slorber))
|
||||
- `create-docusaurus`, `docusaurus-plugin-pwa`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-live-codeblock`, `docusaurus-theme-search-algolia`
|
||||
- [#9464](https://github.com/facebook/docusaurus/pull/9464) chore: Upgrade clsx to 2.0.0 ([@harryzcy](https://github.com/harryzcy))
|
||||
- `docusaurus`
|
||||
- [#9547](https://github.com/facebook/docusaurus/pull/9547) chore(core): replace `wait-on` dependency with custom lighter code ([@NickGerleman](https://github.com/NickGerleman))
|
||||
- `docusaurus-plugin-pwa`, `docusaurus`
|
||||
- [#9529](https://github.com/facebook/docusaurus/pull/9529) chore: ugrade babel dependencies to v7.23.3 ([@reece-white](https://github.com/reece-white))
|
||||
|
||||
#### Committers: 6
|
||||
|
||||
- Chongyi Zheng ([@harryzcy](https://github.com/harryzcy))
|
||||
- MCR Studio ([@mcrstudio](https://github.com/mcrstudio))
|
||||
- Nick Gerleman ([@NickGerleman](https://github.com/NickGerleman))
|
||||
- Shreesh Nautiyal ([@Shreesh09](https://github.com/Shreesh09))
|
||||
- Sébastien Lorber ([@slorber](https://github.com/slorber))
|
||||
- [@reece-white](https://github.com/reece-white)
|
||||
|
||||
## 3.0.0 (2023-10-31)
|
||||
|
||||
#### :boom: Breaking Change
|
||||
|
||||
- `create-docusaurus`, `docusaurus-mdx-loader`, `docusaurus-plugin-content-blog`, `docusaurus-remark-plugin-npm2yarn`, `docusaurus-theme-classic`
|
||||
- [#9451](https://github.com/facebook/docusaurus/pull/9451) feat(mdx-loader): upgrade to MDX v3 ([@slorber](https://github.com/slorber))
|
||||
- `create-docusaurus`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-ideal-image`, `docusaurus-types`, `docusaurus-utils`, `docusaurus`
|
||||
- [#9317](https://github.com/facebook/docusaurus/pull/9317) feat(core): support TypeScript + ESM configuration ([@harryzcy](https://github.com/harryzcy))
|
||||
- `create-docusaurus`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-live-codeblock`, `docusaurus`
|
||||
- [#9316](https://github.com/facebook/docusaurus/pull/9316) chore: upgrade syntax highlighting dependencies, `prism-react-renderer` to v2, `react-live` to v4 ([@harryzcy](https://github.com/harryzcy))
|
||||
- `create-docusaurus`, `docusaurus-cssnano-preset`, `docusaurus-logger`, `docusaurus-mdx-loader`, `docusaurus-migrate`, `docusaurus-plugin-client-redirects`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-plugin-debug`, `docusaurus-plugin-google-analytics`, `docusaurus-plugin-google-gtag`, `docusaurus-plugin-google-tag-manager`, `docusaurus-plugin-ideal-image`, `docusaurus-plugin-pwa`, `docusaurus-plugin-sitemap`, `docusaurus-preset-classic`, `docusaurus-remark-plugin-npm2yarn`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-live-codeblock`, `docusaurus-theme-mermaid`, `docusaurus-theme-search-algolia`, `docusaurus-theme-translations`, `docusaurus-utils-common`, `docusaurus-utils-validation`, `docusaurus-utils`, `docusaurus`, `eslint-plugin`, `lqip-loader`
|
||||
- [#9348](https://github.com/facebook/docusaurus/pull/9348) chore: update node engine version 18 ([@OzakIOne](https://github.com/OzakIOne))
|
||||
- `docusaurus-plugin-content-docs`, `docusaurus-theme-classic`
|
||||
- [#9310](https://github.com/facebook/docusaurus/pull/9310) chore(plugin-docs): remove legacy versioned prefix on doc ids and sidebar names in versioned sidebars ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-theme-classic`, `docusaurus-theme-translations`
|
||||
- [#9308](https://github.com/facebook/docusaurus/pull/9308) fix(theme): make warning a first-class admonition, and deprecate caution admonition ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-theme-common`, `docusaurus-theme-live-codeblock`, `docusaurus-theme-mermaid`
|
||||
- [#9305](https://github.com/facebook/docusaurus/pull/9305) feat(theme-mermaid): upgrade Mermaid to v10.4 - handle async rendering ([@slorber](https://github.com/slorber))
|
||||
- `create-docusaurus`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-debug`, `docusaurus-plugin-google-analytics`, `docusaurus-plugin-google-gtag`, `docusaurus-plugin-google-tag-manager`, `docusaurus-plugin-ideal-image`, `docusaurus-plugin-pwa`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-live-codeblock`, `docusaurus-theme-mermaid`, `docusaurus-theme-search-algolia`, `docusaurus-tsconfig`, `docusaurus`
|
||||
- [#9258](https://github.com/facebook/docusaurus/pull/9258) feat: Docusaurus v3 upgrades and require TypeScript 5 ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-plugin-content-blog`
|
||||
- [#9189](https://github.com/facebook/docusaurus/pull/9189) feat(blog-plugin): limit option for blog feedOptions ([@johnnyreilly](https://github.com/johnnyreilly))
|
||||
- `create-docusaurus`, `docusaurus-tsconfig`
|
||||
- [#9050](https://github.com/facebook/docusaurus/pull/9050) feat: create official TypeScript base config @docusaurus/tsconfig ([@slorber](https://github.com/slorber))
|
||||
- `create-docusaurus`, `docusaurus-mdx-loader`, `docusaurus-module-type-aliases`, `docusaurus-plugin-client-redirects`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-plugin-debug`, `docusaurus-plugin-google-analytics`, `docusaurus-plugin-google-gtag`, `docusaurus-plugin-google-tag-manager`, `docusaurus-plugin-ideal-image`, `docusaurus-plugin-pwa`, `docusaurus-plugin-sitemap`, `docusaurus-preset-classic`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-live-codeblock`, `docusaurus-theme-mermaid`, `docusaurus-theme-search-algolia`, `docusaurus-types`, `docusaurus`
|
||||
- [#8961](https://github.com/facebook/docusaurus/pull/8961) feat: React 18 + automatic JSX runtime + build --dev ([@slorber](https://github.com/slorber))
|
||||
- `create-docusaurus`
|
||||
- [#9026](https://github.com/facebook/docusaurus/pull/9026) chore: remove facebook template ([@slorber](https://github.com/slorber))
|
||||
- `create-docusaurus`, `docusaurus-mdx-loader`, `docusaurus-migrate`, `docusaurus-plugin-content-blog`, `docusaurus-remark-plugin-npm2yarn`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-mermaid`, `docusaurus-types`, `docusaurus-utils-validation`, `docusaurus-utils`, `docusaurus`
|
||||
- [#8288](https://github.com/facebook/docusaurus/pull/8288) feat: upgrade to MDX v2 ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-plugin-content-docs`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus`
|
||||
- [#7966](https://github.com/facebook/docusaurus/pull/7966) fix(plugin-docs,theme): refactor docs plugin routes and component tree ([@slorber](https://github.com/slorber))
|
||||
|
||||
#### :rocket: New Feature
|
||||
|
||||
- `create-docusaurus`, `docusaurus-mdx-loader`, `docusaurus-plugin-content-blog`, `docusaurus-remark-plugin-npm2yarn`, `docusaurus-theme-classic`
|
||||
- [#9451](https://github.com/facebook/docusaurus/pull/9451) feat(mdx-loader): upgrade to MDX v3 ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-mdx-loader`, `docusaurus-utils`
|
||||
- [#9394](https://github.com/facebook/docusaurus/pull/9394) feat(mdx-loader): Remark plugin to report unused MDX / Markdown directives ([@OzakIOne](https://github.com/OzakIOne))
|
||||
- `create-docusaurus`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-ideal-image`, `docusaurus-types`, `docusaurus-utils`, `docusaurus`
|
||||
- [#9317](https://github.com/facebook/docusaurus/pull/9317) feat(core): support TypeScript + ESM configuration ([@harryzcy](https://github.com/harryzcy))
|
||||
- `docusaurus-theme-common`, `docusaurus-theme-live-codeblock`, `docusaurus-theme-mermaid`
|
||||
- [#9305](https://github.com/facebook/docusaurus/pull/9305) feat(theme-mermaid): upgrade Mermaid to v10.4 - handle async rendering ([@slorber](https://github.com/slorber))
|
||||
- `create-docusaurus`
|
||||
- [#9241](https://github.com/facebook/docusaurus/pull/9241) feat: support bun package manager in `create-docusaurus` ([@colinhacks](https://github.com/colinhacks))
|
||||
- `docusaurus-plugin-content-blog`
|
||||
- [#9189](https://github.com/facebook/docusaurus/pull/9189) feat(blog-plugin): limit option for blog feedOptions ([@johnnyreilly](https://github.com/johnnyreilly))
|
||||
- `docusaurus-theme-classic`
|
||||
- [#9152](https://github.com/facebook/docusaurus/pull/9152) feat(theme): add support for meta og locale and alternates ([@FlorinaPacurar](https://github.com/FlorinaPacurar))
|
||||
- [#9028](https://github.com/facebook/docusaurus/pull/9028) feat(theme): add ability to inject data attributes from query-string - possibility to create an iframe/embed variant of a page ([@slorber](https://github.com/slorber))
|
||||
- [#8915](https://github.com/facebook/docusaurus/pull/8915) feat(theme): add queryString option to localeDropdown ([@wceolin](https://github.com/wceolin))
|
||||
- `docusaurus-plugin-client-redirects`, `docusaurus-utils-validation`
|
||||
- [#9171](https://github.com/facebook/docusaurus/pull/9171) feat(client-redirects-plugin): support fully qualified urls and querystring/hash in destination/to url ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus`
|
||||
- [#9102](https://github.com/facebook/docusaurus/pull/9102) feat(cli): deploy command should allow customizing git config user.name / user.email in deployment branch (#9101) ([@amdshrif](https://github.com/amdshrif))
|
||||
- `docusaurus-mdx-loader`, `docusaurus-types`, `docusaurus`
|
||||
- [#9097](https://github.com/facebook/docusaurus/pull/9097) feat(mdx): add siteConfig.markdown.format to configure the default content parser (MDX / CommonMark) ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-plugin-content-pages`, `docusaurus-theme-classic`
|
||||
- [#9071](https://github.com/facebook/docusaurus/pull/9071) feat(pages): add support for missing SEO front matter + improve SEO docs ([@slorber](https://github.com/slorber))
|
||||
- `create-docusaurus`, `docusaurus-tsconfig`
|
||||
- [#9050](https://github.com/facebook/docusaurus/pull/9050) feat: create official TypeScript base config @docusaurus/tsconfig ([@slorber](https://github.com/slorber))
|
||||
- `create-docusaurus`, `docusaurus-mdx-loader`, `docusaurus-module-type-aliases`, `docusaurus-plugin-client-redirects`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-plugin-debug`, `docusaurus-plugin-google-analytics`, `docusaurus-plugin-google-gtag`, `docusaurus-plugin-google-tag-manager`, `docusaurus-plugin-ideal-image`, `docusaurus-plugin-pwa`, `docusaurus-plugin-sitemap`, `docusaurus-preset-classic`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-live-codeblock`, `docusaurus-theme-mermaid`, `docusaurus-theme-search-algolia`, `docusaurus-types`, `docusaurus`
|
||||
- [#8961](https://github.com/facebook/docusaurus/pull/8961) feat: React 18 + automatic JSX runtime + build --dev ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-theme-common`
|
||||
- [#8982](https://github.com/facebook/docusaurus/pull/8982) feat(theme-common): code block MagicComments support for TeX/LaTeX/Matlab ([@jj-style](https://github.com/jj-style))
|
||||
- [#8870](https://github.com/facebook/docusaurus/pull/8870) feat(theme-common): code block MagicComments support for Lua/Haskell -- and WebAssembly ;; ([@tarunrajput](https://github.com/tarunrajput))
|
||||
- `create-docusaurus`, `docusaurus-mdx-loader`, `docusaurus-migrate`, `docusaurus-plugin-content-blog`, `docusaurus-remark-plugin-npm2yarn`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-mermaid`, `docusaurus-types`, `docusaurus-utils-validation`, `docusaurus-utils`, `docusaurus`
|
||||
- [#8288](https://github.com/facebook/docusaurus/pull/8288) feat: upgrade to MDX v2 ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-theme-classic`, `docusaurus-theme-common`
|
||||
- [#8890](https://github.com/facebook/docusaurus/pull/8890) feat(theme): create more generic ThemedComponent util from ThemedImage ([@slorber](https://github.com/slorber))
|
||||
- `create-docusaurus`, `docusaurus-theme-classic`, `docusaurus-theme-search-algolia`, `eslint-plugin`
|
||||
- [#8384](https://github.com/facebook/docusaurus/pull/8384) feat(eslint-plugin): new prefer-docusaurus-heading rule ([@Devansu-Yadav](https://github.com/Devansu-Yadav))
|
||||
- `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-search-algolia`, `docusaurus`, `eslint-plugin`
|
||||
- [#8156](https://github.com/facebook/docusaurus/pull/8156) feat: add eslint plugin no-html-links ([@JohnVicke](https://github.com/JohnVicke))
|
||||
- `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-translations`, `docusaurus-utils-validation`, `docusaurus-utils`
|
||||
- [#8004](https://github.com/facebook/docusaurus/pull/8004) feat(docs,blog,pages): add support for "unlisted" front matter - hide md content in production ([@jodyheavener](https://github.com/jodyheavener))
|
||||
|
||||
#### :bug: Bug Fix
|
||||
|
||||
- `docusaurus-theme-common`
|
||||
- [#9446](https://github.com/facebook/docusaurus/pull/9446) fix(theme): fix useWindowSize React hydration issue ([@slorber](https://github.com/slorber))
|
||||
- [#9276](https://github.com/facebook/docusaurus/pull/9276) fix(theme-common): remove useless useSyncExternalStore shim ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-plugin-content-blog`
|
||||
- [#9437](https://github.com/facebook/docusaurus/pull/9437) fix(plugin-blog): blog archive should hide unlisted blog posts ([@slorber](https://github.com/slorber))
|
||||
- [#9151](https://github.com/facebook/docusaurus/pull/9151) fix(content-blog): links in feed should be absolute ([@VinceCYLiao](https://github.com/VinceCYLiao))
|
||||
- `docusaurus`
|
||||
- [#9387](https://github.com/facebook/docusaurus/pull/9387) fix(core): log missing errorInfo in React 18 onRecoverableError callback ([@johnnyreilly](https://github.com/johnnyreilly))
|
||||
- [#9309](https://github.com/facebook/docusaurus/pull/9309) fix(cli): disable vertical borders of the update notification ([@qwerzl](https://github.com/qwerzl))
|
||||
- [#9112](https://github.com/facebook/docusaurus/pull/9112) fix(core): throw error if build folder already exists on initial clean ([@thedevwonder](https://github.com/thedevwonder))
|
||||
- [#9006](https://github.com/facebook/docusaurus/pull/9006) fix(core): docusaurus CLI should detect the correct yarn version when suggesting upgrades ([@0420syj](https://github.com/0420syj))
|
||||
- [#7951](https://github.com/facebook/docusaurus/pull/7951) fix(core): make webpack HMR always listen to current location ([@jeengbe](https://github.com/jeengbe))
|
||||
- `docusaurus-mdx-loader`
|
||||
- [#9386](https://github.com/facebook/docusaurus/pull/9386) fix(mdx-loader): get correct error line numbers, handle front matter + contentTitle with remark ([@slorber](https://github.com/slorber))
|
||||
- [#9262](https://github.com/facebook/docusaurus/pull/9262) fix(mdx-loader): improve mdxJsxTextElementToHtml ([@slorber](https://github.com/slorber))
|
||||
- [#9202](https://github.com/facebook/docusaurus/pull/9202) fix(mdx-loader): ensure heading anchor slugs respect GitHub emoji behavior ([@yosukekato165](https://github.com/yosukekato165))
|
||||
- [#9100](https://github.com/facebook/docusaurus/pull/9100) fix(mdx): fix for html multi-line comments ([@slorber](https://github.com/slorber))
|
||||
- [#9091](https://github.com/facebook/docusaurus/pull/9091) fix(mdx-loader): loader error message should display stacktrace if no extra MDX details ([@slorber](https://github.com/slorber))
|
||||
- [#8960](https://github.com/facebook/docusaurus/pull/8960) fix: allow html syntax in MDX v2 with format md ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-theme-classic`
|
||||
- [#9385](https://github.com/facebook/docusaurus/pull/9385) fix(theme): avoid rendering empty search container if site has no search plugin ([@slorber](https://github.com/slorber))
|
||||
- [#9183](https://github.com/facebook/docusaurus/pull/9183) fix(theme): make Prism code block language / additionalLanguages case insensitive ([@heysujal](https://github.com/heysujal))
|
||||
- [#9216](https://github.com/facebook/docusaurus/pull/9216) fix(theme): fix typo in swizzle component config ([@sixhobbits](https://github.com/sixhobbits))
|
||||
- [#9093](https://github.com/facebook/docusaurus/pull/9093) fix(theme): support details/summary in CommonMark + add md dogfood test cases ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-mdx-loader`, `docusaurus-utils`
|
||||
- [#9369](https://github.com/facebook/docusaurus/pull/9369) fix(mdx-loader): prevent Open Graph images from being inserted as base64 ([@Zwyx](https://github.com/Zwyx))
|
||||
- `docusaurus-theme-translations`
|
||||
- [#9362](https://github.com/facebook/docusaurus/pull/9362) fix(theme-translations): add Japanese translation for "warning" ([@tats-u](https://github.com/tats-u))
|
||||
- [#9321](https://github.com/facebook/docusaurus/pull/9321) fix(theme-translations): add missing zh-Hans messages ([@chudongvip](https://github.com/chudongvip))
|
||||
- [#9338](https://github.com/facebook/docusaurus/pull/9338) fix(theme-translations): complete and fix hungarian translations ([@la55u](https://github.com/la55u))
|
||||
- [#9292](https://github.com/facebook/docusaurus/pull/9292) fix(theme-translations): add missing Spanish theme translations ([@Villanuevand](https://github.com/Villanuevand))
|
||||
- [#9021](https://github.com/facebook/docusaurus/pull/9021) fix(theme-transalations): fix Swedish translation of "last updated" ([@gazab](https://github.com/gazab))
|
||||
- `docusaurus-theme-classic`, `docusaurus-theme-translations`
|
||||
- [#9308](https://github.com/facebook/docusaurus/pull/9308) fix(theme): make warning a first-class admonition, and deprecate caution admonition ([@slorber](https://github.com/slorber))
|
||||
- [#9269](https://github.com/facebook/docusaurus/pull/9269) fix(theme): improve docs sidebar category caret aria-label accessibility ([@pinakipb2](https://github.com/pinakipb2))
|
||||
- Other
|
||||
- [#9260](https://github.com/facebook/docusaurus/pull/9260) fix(website): fix showcase search input ([@biplavmz](https://github.com/biplavmz))
|
||||
- [#8193](https://github.com/facebook/docusaurus/pull/8193) fix(website): mobile scroll on homepage announcement ([@maliMirkec](https://github.com/maliMirkec))
|
||||
- [#8042](https://github.com/facebook/docusaurus/pull/8042) fix(website): fix blog post social card ([@slorber](https://github.com/slorber))
|
||||
- `create-docusaurus`
|
||||
- [#9217](https://github.com/facebook/docusaurus/pull/9217) fix(create-docusaurus): increase Browserslist support query in dev ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-utils`, `docusaurus`
|
||||
- [#9160](https://github.com/facebook/docusaurus/pull/9160) fix(core): handle single quotes inside file paths ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- `docusaurus-plugin-debug`
|
||||
- [#9116](https://github.com/facebook/docusaurus/pull/9116) fix(debug-plugin): upgrade react-json-view to maintained React-18 compatible fork ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-utils`
|
||||
- [#9046](https://github.com/facebook/docusaurus/pull/9046) fix(utils): better handling of code blocks in link replacement ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- [#8927](https://github.com/facebook/docusaurus/pull/8927) fix(utils): make Markdown link replacement much more rigorous ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- [#7864](https://github.com/facebook/docusaurus/pull/7864) fix(utils): always match exclusion root dirs as complete folder paths ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- [#7801](https://github.com/facebook/docusaurus/pull/7801) fix(utils): recognize ~~~ as code fences in link replacement ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- `docusaurus-plugin-pwa`, `docusaurus`
|
||||
- [#8872](https://github.com/facebook/docusaurus/pull/8872) fix(core): better error logging on SSR/dev failures + log stacktraces and error causes ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-utils-validation`, `docusaurus`
|
||||
- [#8258](https://github.com/facebook/docusaurus/pull/8258) fix(docusaurus-utils-validation): baseUrl + routeBasePath: allow empty string, normalized as "/" ([@Djunnni](https://github.com/Djunnni))
|
||||
- `docusaurus-theme-classic`, `docusaurus-theme-common`
|
||||
- [#8319](https://github.com/facebook/docusaurus/pull/8319) fix(docs,theme): auto-generated category index should not display unlisted content ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-live-codeblock`
|
||||
- [#8015](https://github.com/facebook/docusaurus/pull/8015) fix(live-codeblock): add error boundary to live code preview ([@rashidmya](https://github.com/rashidmya))
|
||||
- `docusaurus-mdx-loader`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-utils-validation`, `docusaurus`
|
||||
- [#7945](https://github.com/facebook/docusaurus/pull/7945) refactor(theme): split admonitions, make swizzle easier, better retrocompatibility ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-plugin-content-docs`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus`
|
||||
- [#7966](https://github.com/facebook/docusaurus/pull/7966) fix(plugin-docs,theme): refactor docs plugin routes and component tree ([@slorber](https://github.com/slorber))
|
||||
|
||||
#### :running_woman: Performance
|
||||
|
||||
- `docusaurus`
|
||||
- [#9051](https://github.com/facebook/docusaurus/pull/9051) perf(core): use React 18 startTransition for hydration ([@sanjaiyan-dev](https://github.com/sanjaiyan-dev))
|
||||
- [#8081](https://github.com/facebook/docusaurus/pull/8081) perf(core): move scripts to document head + defer ([@sanjaiyan-dev](https://github.com/sanjaiyan-dev))
|
||||
- `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus`
|
||||
- [#8972](https://github.com/facebook/docusaurus/pull/8972) fix: remove useless js-loader in front of mdx-loader ([@slorber](https://github.com/slorber))
|
||||
|
||||
#### :nail_care: Polish
|
||||
|
||||
- `docusaurus-theme-classic`
|
||||
- [#9438](https://github.com/facebook/docusaurus/pull/9438) refactor(blog-plugin): blog archive reverse ordering of posts ([@slorber](https://github.com/slorber))
|
||||
- [#9184](https://github.com/facebook/docusaurus/pull/9184) fix(theme): change schema.org itemType prop urls from http to https ([@thedevwonder](https://github.com/thedevwonder))
|
||||
- `docusaurus`
|
||||
- [#9381](https://github.com/facebook/docusaurus/pull/9381) feat(core): throw error when official docusaurus dependencies use different versions ([@JorensM](https://github.com/JorensM))
|
||||
- `docusaurus-theme-translations`
|
||||
- [#9302](https://github.com/facebook/docusaurus/pull/9302) chore(theme-translations): complete zh-Hant translations ([@qwerzl](https://github.com/qwerzl))
|
||||
- [#9025](https://github.com/facebook/docusaurus/pull/9025) chore(theme-translations): complete it translations ([@bitpredator](https://github.com/bitpredator))
|
||||
- `create-docusaurus`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus`
|
||||
- [#9133](https://github.com/facebook/docusaurus/pull/9133) fix(init): change initial site URL to one that is safe for the future ([@tats-u](https://github.com/tats-u))
|
||||
- `docusaurus-theme-classic`, `docusaurus-theme-common`
|
||||
- [#8150](https://github.com/facebook/docusaurus/pull/8150) fix(theme-classic): polish admonition details, render title-only admonitions ([@attitude](https://github.com/attitude))
|
||||
- `docusaurus-plugin-google-gtag`
|
||||
- [#8143](https://github.com/facebook/docusaurus/pull/8143) refactor(plugin-gtag): update gtag plugin to modern SPA recommendations ([@lanegoolsby](https://github.com/lanegoolsby))
|
||||
- `docusaurus-mdx-loader`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-utils-validation`, `docusaurus`
|
||||
- [#7945](https://github.com/facebook/docusaurus/pull/7945) refactor(theme): split admonitions, make swizzle easier, better retrocompatibility ([@slorber](https://github.com/slorber))
|
||||
|
||||
#### :memo: Documentation
|
||||
|
||||
- Other
|
||||
- [#9452](https://github.com/facebook/docusaurus/pull/9452) docs: v3 upgrade guide should mention MDX v1 compat options ([@slorber](https://github.com/slorber))
|
||||
- [#9430](https://github.com/facebook/docusaurus/pull/9430) docs: update Kinsta deployment documentation ([@palmiak](https://github.com/palmiak))
|
||||
- [#9417](https://github.com/facebook/docusaurus/pull/9417) docs: add Docusaurus v3.0 upgrade guide ([@slorber](https://github.com/slorber))
|
||||
- [#9396](https://github.com/facebook/docusaurus/pull/9396) docs: fix typos in website/docs/i18n/i18n-git.mdx ([@suravshrestha](https://github.com/suravshrestha))
|
||||
- [#9397](https://github.com/facebook/docusaurus/pull/9397) docs: fix typos in website/docs/migration/migration-manual.mdx ([@suravshrestha](https://github.com/suravshrestha))
|
||||
- [#9388](https://github.com/facebook/docusaurus/pull/9388) docs: fix algolia crowler config template link for v3 ([@slorber](https://github.com/slorber))
|
||||
- [#9377](https://github.com/facebook/docusaurus/pull/9377) docs(deployment): add permissions config to github action file in v2.4.3 ([@chillinPanda](https://github.com/chillinPanda))
|
||||
- [#9333](https://github.com/facebook/docusaurus/pull/9333) docs: "Preparing your site for Docusaurus v3" blog post ([@slorber](https://github.com/slorber))
|
||||
- [#9330](https://github.com/facebook/docusaurus/pull/9330) docs: "Upgrading frontend dependencies with confidence" blog post ([@slorber](https://github.com/slorber))
|
||||
- [#9288](https://github.com/facebook/docusaurus/pull/9288) docs: fix bad link for create doc ([@forresst](https://github.com/forresst))
|
||||
- [#9267](https://github.com/facebook/docusaurus/pull/9267) docs: fix typo in docs-introduction ([@HyeokjinKang](https://github.com/HyeokjinKang))
|
||||
- [#9247](https://github.com/facebook/docusaurus/pull/9247) docs: Reword comparison between React authoring and CSS authoring ([@hidde](https://github.com/hidde))
|
||||
- [#9223](https://github.com/facebook/docusaurus/pull/9223) docs: fix grammatical error, rewrite sentence to make clearer ([@thatrobotdev](https://github.com/thatrobotdev))
|
||||
- [#9233](https://github.com/facebook/docusaurus/pull/9233) docs(website): Add a "clearAll" Feature to site showcase ([@biplavmz](https://github.com/biplavmz))
|
||||
- [#9180](https://github.com/facebook/docusaurus/pull/9180) docs: remove 'import type' declaration in javascript snippet ([@oluwatobiss](https://github.com/oluwatobiss))
|
||||
- [#9177](https://github.com/facebook/docusaurus/pull/9177) docs: improve the opening sentence's clarity ([@oluwatobiss](https://github.com/oluwatobiss))
|
||||
- [#9149](https://github.com/facebook/docusaurus/pull/9149) docs: improve yarn deps upgrade command ([@webbertakken](https://github.com/webbertakken))
|
||||
- [#9139](https://github.com/facebook/docusaurus/pull/9139) docs: add Flightcontrol as a deployment option ([@ModupeD](https://github.com/ModupeD))
|
||||
- [#9082](https://github.com/facebook/docusaurus/pull/9082) docs: fix themeConfig.prism.defaultLanguage table api ref docs ([@razzeee](https://github.com/razzeee))
|
||||
- [#9074](https://github.com/facebook/docusaurus/pull/9074) docs: fix filenames in docs/swizzling.mdx ([@shwaka](https://github.com/shwaka))
|
||||
- [#9065](https://github.com/facebook/docusaurus/pull/9065) docs: update link for commonly used languages ([@heysujal](https://github.com/heysujal))
|
||||
- [#9055](https://github.com/facebook/docusaurus/pull/9055) docs: update outdated links in showcase ([@manuel-rw](https://github.com/manuel-rw))
|
||||
- [#9063](https://github.com/facebook/docusaurus/pull/9063) docs: add @markprompt/docusaurus-theme-search ([@schneegansm](https://github.com/schneegansm))
|
||||
- [#9033](https://github.com/facebook/docusaurus/pull/9033) docs: update info for community plugin docusaurus2-graphql-doc-generator ([@edno](https://github.com/edno))
|
||||
- [#9044](https://github.com/facebook/docusaurus/pull/9044) docs: fix prism theme broken link in code blocks docs ([@adithyaakrishna](https://github.com/adithyaakrishna))
|
||||
- [#9043](https://github.com/facebook/docusaurus/pull/9043) docs: fix grammar typo in swizzling.mdx ([@adampatterson](https://github.com/adampatterson))
|
||||
- [#9018](https://github.com/facebook/docusaurus/pull/9018) docs: fix link to rehype ([@Mogyuchi](https://github.com/Mogyuchi))
|
||||
- [#8993](https://github.com/facebook/docusaurus/pull/8993) docs: fix broken link in code blocks docs ([@NamanGarg2075](https://github.com/NamanGarg2075))
|
||||
- [#8975](https://github.com/facebook/docusaurus/pull/8975) docs: update link in md code blocks section ([@rbarbazz](https://github.com/rbarbazz))
|
||||
- [#8976](https://github.com/facebook/docusaurus/pull/8976) docs: update broken links theme configuration page ([@rbarbazz](https://github.com/rbarbazz))
|
||||
- [#8904](https://github.com/facebook/docusaurus/pull/8904) docs: fix broken link to Prism includeLangs.js default list of languages ([@conlacda](https://github.com/conlacda))
|
||||
- [#8951](https://github.com/facebook/docusaurus/pull/8951) docs: mention equivalent config syntaxes ([@thadguidry](https://github.com/thadguidry))
|
||||
- [#8950](https://github.com/facebook/docusaurus/pull/8950) docs: bidirectional link between api config and guide config ([@thadguidry](https://github.com/thadguidry))
|
||||
- [#8953](https://github.com/facebook/docusaurus/pull/8953) docs: mention blog truncating marker edge case ([@allyw2002](https://github.com/allyw2002))
|
||||
- [#8941](https://github.com/facebook/docusaurus/pull/8941) docs: rewrite some docs for mdx v2 ([@slorber](https://github.com/slorber))
|
||||
- [#8943](https://github.com/facebook/docusaurus/pull/8943) docs: mention docusaurus.community site in resources ([@thadguidry](https://github.com/thadguidry))
|
||||
- [#8920](https://github.com/facebook/docusaurus/pull/8920) docs: mdx-js is using v2 for next edition ([@jhcao23](https://github.com/jhcao23))
|
||||
- [#8888](https://github.com/facebook/docusaurus/pull/8888) docs: improve sidebar items custom props docs ([@slorber](https://github.com/slorber))
|
||||
- [#8877](https://github.com/facebook/docusaurus/pull/8877) docs: add "permissions.content: write" to GH workflow examples ([@e-minguez](https://github.com/e-minguez))
|
||||
- [#8845](https://github.com/facebook/docusaurus/pull/8845) docs: add description on blog post file/folder naming conventions and date extraction patterns ([@rojakcoder](https://github.com/rojakcoder))
|
||||
- [#8865](https://github.com/facebook/docusaurus/pull/8865) docs: correct small grammar error ([@werner33](https://github.com/werner33))
|
||||
- [#8830](https://github.com/facebook/docusaurus/pull/8830) docs: link to mermaid config types ([@PaulRBerg](https://github.com/PaulRBerg))
|
||||
- [#8804](https://github.com/facebook/docusaurus/pull/8804) docs: update suggestion for OSS meta projects ([@antonk52](https://github.com/antonk52))
|
||||
- [#8788](https://github.com/facebook/docusaurus/pull/8788) docs: remove problematic mdx2 anchor id docs for MDX 2 migration ([@slorber](https://github.com/slorber))
|
||||
- [#8780](https://github.com/facebook/docusaurus/pull/8780) docs: fix localhost url without link ([@slorber](https://github.com/slorber))
|
||||
- [#8779](https://github.com/facebook/docusaurus/pull/8779) docs: v2 docs should discourage the usage of a lower-case MDX component (will not work in v3) ([@slorber](https://github.com/slorber))
|
||||
- [#8761](https://github.com/facebook/docusaurus/pull/8761) docs: add mention that themeConfig.footer.copyright supports html strings ([@fxpby](https://github.com/fxpby))
|
||||
- [#8723](https://github.com/facebook/docusaurus/pull/8723) docs: add TypeScript playgrounds to docusaurus.new + Playground page ([@slorber](https://github.com/slorber))
|
||||
- [#8709](https://github.com/facebook/docusaurus/pull/8709) docs: add dark mode version of BrowserStack logo ([@fredrikstave](https://github.com/fredrikstave))
|
||||
- [#8642](https://github.com/facebook/docusaurus/pull/8642) docs: clarify query string behavior ([@homotechsual](https://github.com/homotechsual))
|
||||
- [#8576](https://github.com/facebook/docusaurus/pull/8576) docs(playground): use CodeSandbox cloud sandboxes ([@danilowoz](https://github.com/danilowoz))
|
||||
- [#8543](https://github.com/facebook/docusaurus/pull/8543) docs: add link to pluralization docs ([@homotechsual](https://github.com/homotechsual))
|
||||
- [#8556](https://github.com/facebook/docusaurus/pull/8556) docs: document plugin-content-pages wrapperClassName frontmatter. ([@homotechsual](https://github.com/homotechsual))
|
||||
- [#8548](https://github.com/facebook/docusaurus/pull/8548) docs: fix typo 'validationOptions' ([@gracefullight](https://github.com/gracefullight))
|
||||
- [#8509](https://github.com/facebook/docusaurus/pull/8509) docs(website): fix broken external links wrongly modified to use the .mdx extension (ex: github README.mdx) ([@Kesyau](https://github.com/Kesyau))
|
||||
- [#8507](https://github.com/facebook/docusaurus/pull/8507) docs: blog + community + dogfood docs should use .mdx extension ([@slorber](https://github.com/slorber))
|
||||
- [#8490](https://github.com/facebook/docusaurus/pull/8490) docs(website): use .mdx extension for every docs ([@slorber](https://github.com/slorber))
|
||||
- [#8484](https://github.com/facebook/docusaurus/pull/8484) docs: `plugin-content-sitemap` -> `plugin-sitemap` ([@chubei](https://github.com/chubei))
|
||||
- [#8454](https://github.com/facebook/docusaurus/pull/8454) fix(docs): Update link for tooljet website(broken) ([@shawshankkumar](https://github.com/shawshankkumar))
|
||||
- [#8443](https://github.com/facebook/docusaurus/pull/8443) docs: fix website home testimonials broken image URLs ([@abhinandanwadwa](https://github.com/abhinandanwadwa))
|
||||
- [#8438](https://github.com/facebook/docusaurus/pull/8438) docs: add hyperlink to swizzling in Search page ([@dandv](https://github.com/dandv))
|
||||
- [#8431](https://github.com/facebook/docusaurus/pull/8431) docs: add diagrams page to 2.2.0 sidebar ([@homotechsual](https://github.com/homotechsual))
|
||||
- [#8307](https://github.com/facebook/docusaurus/pull/8307) docs: clarify additionalLanguages with custom language definitions. ([@homotechsual](https://github.com/homotechsual))
|
||||
- [#8390](https://github.com/facebook/docusaurus/pull/8390) docs: changed actions/checkout version from 2 to 3 ([@cm-igarashi-ryosuke](https://github.com/cm-igarashi-ryosuke))
|
||||
- [#8262](https://github.com/facebook/docusaurus/pull/8262) docs: fix links to external plugin description ([@scubamaggo](https://github.com/scubamaggo))
|
||||
- [#8375](https://github.com/facebook/docusaurus/pull/8375) docs: add Kinsta to deployment page ([@palmiak](https://github.com/palmiak))
|
||||
- [#8417](https://github.com/facebook/docusaurus/pull/8417) docs: document theme-mermaid in API sidebar ([@homotechsual](https://github.com/homotechsual))
|
||||
- [#8392](https://github.com/facebook/docusaurus/pull/8392) docs: add i18n guide doc should link to i18n core config doc ([@mcallisto](https://github.com/mcallisto))
|
||||
- [#8388](https://github.com/facebook/docusaurus/pull/8388) docs: point to where commit types are listed ([@dandv](https://github.com/dandv))
|
||||
- [#8352](https://github.com/facebook/docusaurus/pull/8352) docs: actually demo the zero-width space workaround in MDX ([@waldyrious](https://github.com/waldyrious))
|
||||
- [#8363](https://github.com/facebook/docusaurus/pull/8363) docs: fix unclosed admonition code block ([@Zwyx](https://github.com/Zwyx))
|
||||
- [#8364](https://github.com/facebook/docusaurus/pull/8364) docs: autogenerated page comment does not matching dirName in examples ([@HumbleDeer](https://github.com/HumbleDeer))
|
||||
- [#8359](https://github.com/facebook/docusaurus/pull/8359) docs: fix anchor link `#customFields` ([@Zwyx](https://github.com/Zwyx))
|
||||
- [#8320](https://github.com/facebook/docusaurus/pull/8320) docs: remove blog.johnnyreilly.com Google Analytics tag from docs part 2 ([@johnnyreilly](https://github.com/johnnyreilly))
|
||||
- [#8335](https://github.com/facebook/docusaurus/pull/8335) docs: use Mermaid diagram for routing page ([@Mysterious-Dev](https://github.com/Mysterious-Dev))
|
||||
- [#8313](https://github.com/facebook/docusaurus/pull/8313) docs: link to migration guide from Blogger to Docusaurus / remove blog.johnnyreilly.com Google Analytics tag from docs ([@johnnyreilly](https://github.com/johnnyreilly))
|
||||
- [#8292](https://github.com/facebook/docusaurus/pull/8292) docs: document tag types for insertHtmlContent ([@homotechsual](https://github.com/homotechsual))
|
||||
- [#8272](https://github.com/facebook/docusaurus/pull/8272) docs: fix mermaid theme options typo ([@ntucker](https://github.com/ntucker))
|
||||
- [#8209](https://github.com/facebook/docusaurus/pull/8209) docs: removing community resource docusaurus-plugin-relative-paths ([@ShahriarKh](https://github.com/ShahriarKh))
|
||||
- [#8146](https://github.com/facebook/docusaurus/pull/8146) docs(content-docs): add api doc for displayed_sidebar front matter ([@slorber](https://github.com/slorber))
|
||||
- [#8115](https://github.com/facebook/docusaurus/pull/8115) docs: add caveat about using Translate in string contexts ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- [#8053](https://github.com/facebook/docusaurus/pull/8053) docs: document usage of docs `frontMatter.custom_edit_url: null` ([@homotechsual](https://github.com/homotechsual))
|
||||
- [#8010](https://github.com/facebook/docusaurus/pull/8010) docs(showcase): add 74 new showcase sites ([@slorber](https://github.com/slorber))
|
||||
- [#7955](https://github.com/facebook/docusaurus/pull/7955) docs: add docusaurus-post-generator to community resource list ([@moojing](https://github.com/moojing))
|
||||
- [#7906](https://github.com/facebook/docusaurus/pull/7906) docs: add TOC heading level options to guide ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- [#7884](https://github.com/facebook/docusaurus/pull/7884) docs: add baseUrl to example tsconfig ([@Foosballfan](https://github.com/Foosballfan))
|
||||
- [#7835](https://github.com/facebook/docusaurus/pull/7835) docs: update workbox doc link ([@hslee2008](https://github.com/hslee2008))
|
||||
- [#7799](https://github.com/facebook/docusaurus/pull/7799) docs: formally document how admonitions can be customized ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- [#7796](https://github.com/facebook/docusaurus/pull/7796) docs: modify the description of deploying to Netlify ([@Oreoxmt](https://github.com/Oreoxmt))
|
||||
- `docusaurus-logger`
|
||||
- [#9210](https://github.com/facebook/docusaurus/pull/9210) docs: add the missing import logger statement ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- [#8047](https://github.com/facebook/docusaurus/pull/8047) docs: improve alt messages ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- `create-docusaurus`
|
||||
- [#8944](https://github.com/facebook/docusaurus/pull/8944) polish(create-docusaurus): add comment in config to mention different ways to declare config + doc link ([@thadguidry](https://github.com/thadguidry))
|
||||
- [#8323](https://github.com/facebook/docusaurus/pull/8323) docs: fix typo 'internalization' ([@dandv](https://github.com/dandv))
|
||||
- `docusaurus-plugin-ideal-image`
|
||||
- [#8630](https://github.com/facebook/docusaurus/pull/8630) docs: normalize README for ideal-image plugin ([@Mysterious-Dev](https://github.com/Mysterious-Dev))
|
||||
- `docusaurus-mdx-loader`
|
||||
- [#8419](https://github.com/facebook/docusaurus/pull/8419) docs: document siteConfig.markdown + better mdx-loader retrocompat ([@slorber](https://github.com/slorber))
|
||||
|
||||
#### :robot: Dependencies
|
||||
|
||||
- Other
|
||||
- [#9440](https://github.com/facebook/docusaurus/pull/9440) chore(deps): bump actions/setup-node from 3 to 4 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#9441](https://github.com/facebook/docusaurus/pull/9441) chore(deps): bump actions/checkout from 4.1.0 to 4.1.1 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#9367](https://github.com/facebook/docusaurus/pull/9367) chore(deps): bump postcss from 8.4.26 to 8.4.31 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#9344](https://github.com/facebook/docusaurus/pull/9344) chore(deps): bump actions/checkout from 4.0.0 to 4.1.0 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#9298](https://github.com/facebook/docusaurus/pull/9298) chore(deps): bump actions/dependency-review-action from 3.0.8 to 3.1.0 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#9277](https://github.com/facebook/docusaurus/pull/9277) chore(deps): bump actions/checkout from 3 to 4 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#9251](https://github.com/facebook/docusaurus/pull/9251) chore(deps): bump actions/dependency-review-action from 3.0.7 to 3.0.8 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#9250](https://github.com/facebook/docusaurus/pull/9250) chore(deps): bump marocchino/sticky-pull-request-comment from 2.7.0 to 2.8.0 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#9227](https://github.com/facebook/docusaurus/pull/9227) chore(deps): bump actions/dependency-review-action from 3.0.6 to 3.0.7 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#9174](https://github.com/facebook/docusaurus/pull/9174) chore(deps): bump marocchino/sticky-pull-request-comment from 2.6.2 to 2.7.0 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#9096](https://github.com/facebook/docusaurus/pull/9096) chore(deps): bump semver from 7.3.8 to 7.5.2 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#9061](https://github.com/facebook/docusaurus/pull/9061) chore(deps): bump github/codeql-action from 2.3.6 to 2.13.4 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#9038](https://github.com/facebook/docusaurus/pull/9038) chore(deps): bump github/codeql-action from 2.3.5 to 2.3.6 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#9039](https://github.com/facebook/docusaurus/pull/9039) chore(deps): bump actions/dependency-review-action from 3.0.4 to 3.0.6 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#9019](https://github.com/facebook/docusaurus/pull/9019) chore(deps): bump github/codeql-action from 2.3.3 to 2.3.5 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8964](https://github.com/facebook/docusaurus/pull/8964) chore(deps): bump github/codeql-action from 2.3.2 to 2.3.3 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8955](https://github.com/facebook/docusaurus/pull/8955) chore(deps): bump github/codeql-action from 2.3.0 to 2.3.2 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8922](https://github.com/facebook/docusaurus/pull/8922) chore(deps): bump marocchino/sticky-pull-request-comment from 2.5.0 to 2.6.2 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8923](https://github.com/facebook/docusaurus/pull/8923) chore(deps): bump treosh/lighthouse-ci-action from 9.6.8 to 10.1.0 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8924](https://github.com/facebook/docusaurus/pull/8924) chore(deps): bump github/codeql-action from 2.2.12 to 2.3.0 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8899](https://github.com/facebook/docusaurus/pull/8899) chore(deps): bump github/codeql-action from 2.2.11 to 2.2.12 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8900](https://github.com/facebook/docusaurus/pull/8900) chore(deps): bump actions/checkout from 3.5.0 to 3.5.2 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8879](https://github.com/facebook/docusaurus/pull/8879) chore(deps): bump actions/github-script from 6.4.0 to 6.4.1 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8878](https://github.com/facebook/docusaurus/pull/8878) chore(deps): bump github/codeql-action from 2.2.9 to 2.2.11 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8836](https://github.com/facebook/docusaurus/pull/8836) chore(deps): bump github/codeql-action from 2.2.7 to 2.2.9 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8837](https://github.com/facebook/docusaurus/pull/8837) chore(deps): bump actions/checkout from 3.4.0 to 3.5.0 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8797](https://github.com/facebook/docusaurus/pull/8797) chore(deps): bump actions/checkout from 3.3.0 to 3.4.0 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8796](https://github.com/facebook/docusaurus/pull/8796) chore(deps): bump actions/dependency-review-action from 3.0.3 to 3.0.4 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8795](https://github.com/facebook/docusaurus/pull/8795) chore(deps): bump github/codeql-action from 2.2.6 to 2.2.7 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8766](https://github.com/facebook/docusaurus/pull/8766) chore(deps): bump treosh/lighthouse-ci-action from 9.3.1 to 9.6.8 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8767](https://github.com/facebook/docusaurus/pull/8767) chore(deps): bump github/codeql-action from 2.2.5 to 2.2.6 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8739](https://github.com/facebook/docusaurus/pull/8739) chore(deps): bump github/codeql-action from 2.2.4 to 2.2.5 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8663](https://github.com/facebook/docusaurus/pull/8663) chore(deps): bump marocchino/sticky-pull-request-comment from 2.3.1 to 2.5.0 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8662](https://github.com/facebook/docusaurus/pull/8662) chore(deps): bump github/codeql-action from 2.2.2 to 2.2.4 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8638](https://github.com/facebook/docusaurus/pull/8638) chore(deps): bump github/codeql-action from 2.2.1 to 2.2.2 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8624](https://github.com/facebook/docusaurus/pull/8624) chore(deps): bump http-cache-semantics from 4.1.0 to 4.1.1 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8604](https://github.com/facebook/docusaurus/pull/8604) chore(deps): bump actions/github-script from 6.3.3 to 6.4.0 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8605](https://github.com/facebook/docusaurus/pull/8605) chore(deps): bump github/codeql-action from 2.1.39 to 2.2.1 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8572](https://github.com/facebook/docusaurus/pull/8572) chore(deps): bump github/codeql-action from 2.1.38 to 2.1.39 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8553](https://github.com/facebook/docusaurus/pull/8553) chore(deps): bump github/codeql-action from 2.1.37 to 2.1.38 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8531](https://github.com/facebook/docusaurus/pull/8531) chore(deps): bump actions/checkout from 3.2.0 to 3.3.0 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8532](https://github.com/facebook/docusaurus/pull/8532) chore(deps): bump actions/dependency-review-action from 3.0.2 to 3.0.3 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8533](https://github.com/facebook/docusaurus/pull/8533) chore(deps): bump actions/setup-node from 3.5.1 to 3.6.0 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8496](https://github.com/facebook/docusaurus/pull/8496) chore(deps): bump jakepartusch/wait-for-netlify-action from 1.3 to 1.4 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8464](https://github.com/facebook/docusaurus/pull/8464) chore(deps): bump actions/dependency-review-action from 3.0.1 to 3.0.2 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8440](https://github.com/facebook/docusaurus/pull/8440) chore(deps): bump github/codeql-action from 2.1.36 to 2.1.37 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8435](https://github.com/facebook/docusaurus/pull/8435) chore(deps): bump github/codeql-action from 2.1.35 to 2.1.36 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8434](https://github.com/facebook/docusaurus/pull/8434) chore(deps): bump actions/checkout from 3.1.0 to 3.2.0 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8412](https://github.com/facebook/docusaurus/pull/8412) chore(deps): bump github/codeql-action from 2.1.32 to 2.1.35 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8385](https://github.com/facebook/docusaurus/pull/8385) chore(deps): bump marocchino/sticky-pull-request-comment from 2.3.0 to 2.3.1 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8360](https://github.com/facebook/docusaurus/pull/8360) chore(deps): bump actions/dependency-review-action from 3.0.0 to 3.0.1 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8341](https://github.com/facebook/docusaurus/pull/8341) chore(deps): bump github/codeql-action from 2.1.31 to 2.1.32 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8340](https://github.com/facebook/docusaurus/pull/8340) chore(deps): bump actions/dependency-review-action from 2.5.1 to 3.0.0 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8339](https://github.com/facebook/docusaurus/pull/8339) chore(deps): bump treosh/lighthouse-ci-action from 9.3.0 to 9.3.1 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8295](https://github.com/facebook/docusaurus/pull/8295) chore(deps): bump github/codeql-action from 2.1.29 to 2.1.31 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8271](https://github.com/facebook/docusaurus/pull/8271) chore(deps): bump github/codeql-action from 2.1.28 to 2.1.29 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8270](https://github.com/facebook/docusaurus/pull/8270) chore(deps): bump marocchino/sticky-pull-request-comment from 2.2.1 to 2.3.0 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8240](https://github.com/facebook/docusaurus/pull/8240) chore(deps): bump actions/dependency-review-action from 2.5.0 to 2.5.1 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8241](https://github.com/facebook/docusaurus/pull/8241) chore(deps): bump github/codeql-action from 2.1.27 to 2.1.28 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8221](https://github.com/facebook/docusaurus/pull/8221) chore(deps): bump marocchino/sticky-pull-request-comment from 2.2.0 to 2.2.1 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8220](https://github.com/facebook/docusaurus/pull/8220) chore(deps): bump actions/dependency-review-action from 2.4.0 to 2.5.0 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8219](https://github.com/facebook/docusaurus/pull/8219) chore(deps): bump actions/github-script from 6.3.1 to 6.3.3 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8222](https://github.com/facebook/docusaurus/pull/8222) chore(deps): bump actions/setup-node from 3.5.0 to 3.5.1 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8200](https://github.com/facebook/docusaurus/pull/8200) chore(deps): bump github/codeql-action from 2.1.26 to 2.1.27 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8199](https://github.com/facebook/docusaurus/pull/8199) chore(deps): bump actions/checkout from 3.0.2 to 3.1.0 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8169](https://github.com/facebook/docusaurus/pull/8169) chore(deps): bump github/codeql-action from 2.1.22 to 2.1.26 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8170](https://github.com/facebook/docusaurus/pull/8170) chore(deps): bump actions/setup-node from 3.4.1 to 3.5.0 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8167](https://github.com/facebook/docusaurus/pull/8167) chore(deps): bump actions/github-script from 6.2.0 to 6.3.1 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8168](https://github.com/facebook/docusaurus/pull/8168) chore(deps): bump actions/dependency-review-action from 2.1.0 to 2.4.0 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8064](https://github.com/facebook/docusaurus/pull/8064) chore: bump react-medium-image-zoom ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- [#8051](https://github.com/facebook/docusaurus/pull/8051) chore(deps): bump github/codeql-action from 2.1.21 to 2.1.22 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8019](https://github.com/facebook/docusaurus/pull/8019) chore(deps): bump actions/github-script from 6.1.1 to 6.2.0 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#8020](https://github.com/facebook/docusaurus/pull/8020) chore(deps): bump github/codeql-action from 2.1.20 to 2.1.21 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#7988](https://github.com/facebook/docusaurus/pull/7988) chore(deps): bump actions/dependency-review-action from 2.0.4 to 2.1.0 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#7987](https://github.com/facebook/docusaurus/pull/7987) chore(deps): bump github/codeql-action from 2.1.18 to 2.1.20 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#7957](https://github.com/facebook/docusaurus/pull/7957) chore(deps): bump actions/github-script from 6.1.0 to 6.1.1 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#7925](https://github.com/facebook/docusaurus/pull/7925) chore(deps): bump github/codeql-action from 2.1.17 to 2.1.18 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#7879](https://github.com/facebook/docusaurus/pull/7879) chore(deps): bump github/codeql-action from 2.1.16 to 2.1.17 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#7804](https://github.com/facebook/docusaurus/pull/7804) chore(deps): bump github/codeql-action from 2.1.15 to 2.1.16 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#7805](https://github.com/facebook/docusaurus/pull/7805) chore(deps): bump actions/dependency-review-action from 2.0.2 to 2.0.4 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- [#7806](https://github.com/facebook/docusaurus/pull/7806) chore(deps): bump actions/setup-node from 3.4.0 to 3.4.1 ([@dependabot[bot]](https://github.com/apps/dependabot))
|
||||
- `create-docusaurus`, `docusaurus-cssnano-preset`, `docusaurus-logger`, `docusaurus-mdx-loader`, `docusaurus-migrate`, `docusaurus-plugin-client-redirects`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-plugin-debug`, `docusaurus-plugin-google-analytics`, `docusaurus-plugin-google-gtag`, `docusaurus-plugin-google-tag-manager`, `docusaurus-plugin-ideal-image`, `docusaurus-plugin-pwa`, `docusaurus-plugin-sitemap`, `docusaurus-remark-plugin-npm2yarn`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-live-codeblock`, `docusaurus-theme-mermaid`, `docusaurus-theme-search-algolia`, `docusaurus-theme-translations`, `docusaurus-types`, `docusaurus-utils-common`, `docusaurus-utils-validation`, `docusaurus-utils`, `docusaurus`, `eslint-plugin`, `lqip-loader`, `stylelint-copyright`
|
||||
- [#9148](https://github.com/facebook/docusaurus/pull/9148) chore: upgrade dependencies (non-major) ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- [#8749](https://github.com/facebook/docusaurus/pull/8749) chore: upgrade dependencies (non-major) ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- [#8534](https://github.com/facebook/docusaurus/pull/8534) chore: upgrade dependencies ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- `create-docusaurus`
|
||||
- [#8926](https://github.com/facebook/docusaurus/pull/8926) chore: upgrade TypeScript to v5.0 ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- `create-docusaurus`, `docusaurus-mdx-loader`, `docusaurus-migrate`, `docusaurus-plugin-client-redirects`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-plugin-debug`, `docusaurus-plugin-ideal-image`, `docusaurus-plugin-pwa`, `docusaurus-plugin-sitemap`, `docusaurus-theme-classic`, `docusaurus-theme-common`, `docusaurus-theme-live-codeblock`, `docusaurus-theme-search-algolia`, `docusaurus-theme-translations`, `docusaurus-utils`, `docusaurus`
|
||||
- [#8537](https://github.com/facebook/docusaurus/pull/8537) chore: bump dependencies major versions ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- `create-docusaurus`, `docusaurus-cssnano-preset`, `docusaurus-logger`, `docusaurus-mdx-loader`, `docusaurus-migrate`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-ideal-image`, `docusaurus-plugin-pwa`, `docusaurus-theme-classic`, `docusaurus-theme-search-algolia`, `docusaurus-utils-validation`, `docusaurus-utils`, `docusaurus`, `eslint-plugin`, `lqip-loader`, `stylelint-copyright`
|
||||
- [#7993](https://github.com/facebook/docusaurus/pull/7993) chore: upgrade dependencies ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- `create-docusaurus`, `docusaurus-mdx-loader`, `docusaurus-migrate`, `docusaurus-plugin-content-blog`, `docusaurus-plugin-content-docs`, `docusaurus-plugin-content-pages`, `docusaurus-plugin-ideal-image`, `docusaurus-plugin-pwa`, `docusaurus-theme-search-algolia`, `docusaurus-types`, `docusaurus-utils`, `docusaurus`, `eslint-plugin`
|
||||
- [#7883](https://github.com/facebook/docusaurus/pull/7883) chore: upgrade dependencies ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- `create-docusaurus`, `docusaurus-mdx-loader`, `docusaurus-migrate`, `docusaurus-plugin-pwa`, `docusaurus-theme-search-algolia`, `docusaurus-utils`, `docusaurus`, `eslint-plugin`
|
||||
- [#7822](https://github.com/facebook/docusaurus/pull/7822) chore: upgrade dependencies ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- `create-docusaurus`, `docusaurus-mdx-loader`, `docusaurus-plugin-pwa`, `docusaurus`, `eslint-plugin`
|
||||
- [#7794](https://github.com/facebook/docusaurus/pull/7794) chore: upgrade dependencies ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
|
||||
#### :wrench: Maintenance
|
||||
|
||||
- `docusaurus-migrate`
|
||||
- [#9400](https://github.com/facebook/docusaurus/pull/9400) chore: remove docusaurus-migrate ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-theme-search-algolia`
|
||||
- [#9320](https://github.com/facebook/docusaurus/pull/9320) chore(theme-search-algolia): revert docsearch package range downgrade after bugfix release ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-theme-translations`
|
||||
- [#9304](https://github.com/facebook/docusaurus/pull/9304) chore(theme-translations): complete French translations ([@forresst](https://github.com/forresst))
|
||||
- Other
|
||||
- [#9264](https://github.com/facebook/docusaurus/pull/9264) ci: only install Chromium for Playwright Argos tests ([@mxschmitt](https://github.com/mxschmitt))
|
||||
- [#9245](https://github.com/facebook/docusaurus/pull/9245) chore: bump devcontainer to Ubuntu 22.04 to resolve arm64 incompatibility ([@AFRUITPIE](https://github.com/AFRUITPIE))
|
||||
- [#8947](https://github.com/facebook/docusaurus/pull/8947) test: add visual regression tests with Argos CI ([@slorber](https://github.com/slorber))
|
||||
- [#8911](https://github.com/facebook/docusaurus/pull/8911) chore: migrate website config to createConfigAsync ([@slorber](https://github.com/slorber))
|
||||
- [#8578](https://github.com/facebook/docusaurus/pull/8578) docs: fix dead anchor for issue reporting guidelines in template ([@Sainan](https://github.com/Sainan))
|
||||
- [#8447](https://github.com/facebook/docusaurus/pull/8447) chore: update lerna to v6.2.0 ([@AgentEnder](https://github.com/AgentEnder))
|
||||
- [#7967](https://github.com/facebook/docusaurus/pull/7967) test: improve e2e verdaccio configuration ([@juanpicado](https://github.com/juanpicado))
|
||||
- [#7863](https://github.com/facebook/docusaurus/pull/7863) docs: publish 2.0.0 release blog post + adapt website for the launch ([@slorber](https://github.com/slorber))
|
||||
- [#7828](https://github.com/facebook/docusaurus/pull/7828) misc: change showcase submission process, use GitHub discussion ([@slorber](https://github.com/slorber))
|
||||
- `docusaurus-plugin-content-blog`
|
||||
- [#9195](https://github.com/facebook/docusaurus/pull/9195) test(blog-plugin): fix ability to generate proper blog website fixture build snapshot ([@slorber](https://github.com/slorber))
|
||||
- `create-docusaurus`, `docusaurus-theme-classic`
|
||||
- [#9024](https://github.com/facebook/docusaurus/pull/9024) docs: remove Meta Data Policy footer link on website ([@KarthickSakthi](https://github.com/KarthickSakthi))
|
||||
- `docusaurus`
|
||||
- [#8660](https://github.com/facebook/docusaurus/pull/8660) chore: bump update-notifier ([@layershifter](https://github.com/layershifter))
|
||||
|
||||
#### Committers: 132
|
||||
|
||||
- 0x24Karthick ([@KarthickSakthi](https://github.com/KarthickSakthi))
|
||||
- Abhinandan Wadhwa ([@abhinandanwadwa](https://github.com/abhinandanwadwa))
|
||||
- Abinash Satapathy ([@Abinashbunty](https://github.com/Abinashbunty))
|
||||
- Adam Patterson ([@adampatterson](https://github.com/adampatterson))
|
||||
- Adithya Krishna ([@adithyaakrishna](https://github.com/adithyaakrishna))
|
||||
- Ahmad Shrif ([@amdshrif](https://github.com/amdshrif))
|
||||
- Ahmed Mustafa Malik ([@amm98d](https://github.com/amm98d))
|
||||
- Akshay Bhalotia ([@akshaybhalotia](https://github.com/akshaybhalotia))
|
||||
- Alex ([@sashashura](https://github.com/sashashura))
|
||||
- Alexander Nguyen ([@GalexyN](https://github.com/GalexyN))
|
||||
- Alexey Pyltsyn ([@lex111](https://github.com/lex111))
|
||||
- Andrew Lyons ([@andrewnicols](https://github.com/andrewnicols))
|
||||
- Andrés Villanueva ([@Villanuevand](https://github.com/Villanuevand))
|
||||
- Anna ([@HumbleDeer](https://github.com/HumbleDeer))
|
||||
- Anton Kastritskii ([@antonk52](https://github.com/antonk52))
|
||||
- Antony Onipko ([@antonyoni](https://github.com/antonyoni))
|
||||
- Aolin ([@Oreoxmt](https://github.com/Oreoxmt))
|
||||
- Aqueeb ([@aqueeb](https://github.com/aqueeb))
|
||||
- Bei Chu ([@chubei](https://github.com/chubei))
|
||||
- Billy Chan ([@billy1624](https://github.com/billy1624))
|
||||
- Biplav Kumar Mazumdar ([@biplavmz](https://github.com/biplavmz))
|
||||
- Bruce ([@recallwei](https://github.com/recallwei))
|
||||
- Charles Killer ([@Foosballfan](https://github.com/Foosballfan))
|
||||
- Chongyi Zheng ([@harryzcy](https://github.com/harryzcy))
|
||||
- Chua Chee How ([@rojakcoder](https://github.com/rojakcoder))
|
||||
- Clément Vannicatte ([@shortcuts](https://github.com/shortcuts))
|
||||
- Colin McDonnell ([@colinhacks](https://github.com/colinhacks))
|
||||
- Coupy ([@HyeokjinKang](https://github.com/HyeokjinKang))
|
||||
- Craigory Coppola ([@AgentEnder](https://github.com/AgentEnder))
|
||||
- Dan Dascalescu ([@dandv](https://github.com/dandv))
|
||||
- Dan Roscigno ([@DanRoscigno](https://github.com/DanRoscigno))
|
||||
- Danilo Woznica ([@danilowoz](https://github.com/danilowoz))
|
||||
- David J. Felix ([@DavidJFelix](https://github.com/DavidJFelix))
|
||||
- Debbie O'Brien ([@debs-obrien](https://github.com/debs-obrien))
|
||||
- Devansu Yadav ([@Devansu-Yadav](https://github.com/Devansu-Yadav))
|
||||
- Dinh Bao Dang ([@chillinPanda](https://github.com/chillinPanda))
|
||||
- Dongjoon Lee ([@Djunnni](https://github.com/Djunnni))
|
||||
- Eduardo Mínguez ([@e-minguez](https://github.com/e-minguez))
|
||||
- Eunkwang Shin ([@gracefullight](https://github.com/gracefullight))
|
||||
- Forresst ([@forresst](https://github.com/forresst))
|
||||
- Francesco Ciulla ([@FrancescoXX](https://github.com/FrancescoXX))
|
||||
- Fredrik Stave ([@fredrikstave](https://github.com/fredrikstave))
|
||||
- Fxpby ([@fxpby](https://github.com/fxpby))
|
||||
- Gabriel Csapo ([@gabrielcsapo](https://github.com/gabrielcsapo))
|
||||
- Gareth Dwyer ([@sixhobbits](https://github.com/sixhobbits))
|
||||
- Greg Bergé ([@gregberge](https://github.com/gregberge))
|
||||
- Grégory Heitz ([@edno](https://github.com/edno))
|
||||
- Gustav Tonér ([@gazab](https://github.com/gazab))
|
||||
- Hayden Hong ([@AFRUITPIE](https://github.com/AFRUITPIE))
|
||||
- Hidde de Vries ([@hidde](https://github.com/hidde))
|
||||
- Hyunseung ([@hslee2008](https://github.com/hslee2008))
|
||||
- JJ Style ([@jj-style](https://github.com/jj-style))
|
||||
- James Kerrane ([@thatrobotdev](https://github.com/thatrobotdev))
|
||||
- Jean Humann ([@jean-humann](https://github.com/jean-humann))
|
||||
- Jesper Engberg ([@jeengbe](https://github.com/jeengbe))
|
||||
- Jody Heavener ([@jodyheavener](https://github.com/jodyheavener))
|
||||
- Joe Williams ([@BubbaJoe](https://github.com/BubbaJoe))
|
||||
- John Cao ([@jhcao23](https://github.com/jhcao23))
|
||||
- John Reilly ([@johnnyreilly](https://github.com/johnnyreilly))
|
||||
- Jordan Manley ([@werner33](https://github.com/werner33))
|
||||
- Jorens Merenjanu ([@JorensM](https://github.com/JorensM))
|
||||
- Joshua Chen ([@Josh-Cena](https://github.com/Josh-Cena))
|
||||
- Juan Picado ([@juanpicado](https://github.com/juanpicado))
|
||||
- Kolja ([@razzeee](https://github.com/razzeee))
|
||||
- Lane Goolsby ([@lanegoolsby](https://github.com/lanegoolsby))
|
||||
- Lorenzo Lewis ([@lorenzolewis](https://github.com/lorenzolewis))
|
||||
- Maciek Palmowski ([@palmiak](https://github.com/palmiak))
|
||||
- Manuel ([@manuel-rw](https://github.com/manuel-rw))
|
||||
- Marco Kuper ([@scubamaggo](https://github.com/scubamaggo))
|
||||
- Marco Stroppel ([@mstroppel](https://github.com/mstroppel))
|
||||
- Marie ([@schneegansm](https://github.com/schneegansm))
|
||||
- Markshawn ([@MarkShawn2020](https://github.com/MarkShawn2020))
|
||||
- Martin Adamko ([@attitude](https://github.com/attitude))
|
||||
- Max Schmitt ([@mxschmitt](https://github.com/mxschmitt))
|
||||
- Michael Remediakis ([@mickremedi](https://github.com/mickremedi))
|
||||
- Mikey O'Toole ([@homotechsual](https://github.com/homotechsual))
|
||||
- ModupeD ([@ModupeD](https://github.com/ModupeD))
|
||||
- Mu-Jing-Tsai ([@moojing](https://github.com/moojing))
|
||||
- Mysterious_Dev ([@Mysterious-Dev](https://github.com/Mysterious-Dev))
|
||||
- Naffy Dharni ([@knownasnaffy](https://github.com/knownasnaffy))
|
||||
- Naman Garg ([@NamanGarg2075](https://github.com/NamanGarg2075))
|
||||
- Nathaniel Tucker ([@ntucker](https://github.com/ntucker))
|
||||
- Oleksandr Fediashov ([@layershifter](https://github.com/layershifter))
|
||||
- Oluwatobi Sofela ([@oluwatobiss](https://github.com/oluwatobiss))
|
||||
- Paul Razvan Berg ([@PaulRBerg](https://github.com/PaulRBerg))
|
||||
- Pinaki Bhattacharjee ([@pinakipb2](https://github.com/pinakipb2))
|
||||
- Raphaël Barbazza ([@rbarbazz](https://github.com/rbarbazz))
|
||||
- Rashid ([@rashidmya](https://github.com/rashidmya))
|
||||
- Ryosuke Igarashi ([@cm-igarashi-ryosuke](https://github.com/cm-igarashi-ryosuke))
|
||||
- SADIK KUZU ([@sadikkuzu](https://github.com/sadikkuzu))
|
||||
- Sanjaiyan Parthipan ([@sanjaiyan-dev](https://github.com/sanjaiyan-dev))
|
||||
- Serenus ([@Kesyau](https://github.com/Kesyau))
|
||||
- Shahriar ([@ShahriarKh](https://github.com/ShahriarKh))
|
||||
- Shashank Kumar ([@shawshankkumar](https://github.com/shawshankkumar))
|
||||
- Shun Wakatsuki ([@shwaka](https://github.com/shwaka))
|
||||
- Silvestar Bistrović ([@maliMirkec](https://github.com/maliMirkec))
|
||||
- Sujal Gupta ([@heysujal](https://github.com/heysujal))
|
||||
- Sunghyun Cho ([@anaclumos](https://github.com/anaclumos))
|
||||
- Surav Shrestha ([@suravshrestha](https://github.com/suravshrestha))
|
||||
- Sébastien Lorber ([@slorber](https://github.com/slorber))
|
||||
- Tamal Anwar Chowdhury ([@tamalchowdhury](https://github.com/tamalchowdhury))
|
||||
- Tarun Chauhan ([@tarunrajput](https://github.com/tarunrajput))
|
||||
- Tatsunori Uchino ([@tats-u](https://github.com/tats-u))
|
||||
- Thad Guidry ([@thadguidry](https://github.com/thadguidry))
|
||||
- Tom Mrazauskas ([@mrazauskas](https://github.com/mrazauskas))
|
||||
- Viktor Malmedal ([@JohnVicke](https://github.com/JohnVicke))
|
||||
- Waldir Pimenta ([@waldyrious](https://github.com/waldyrious))
|
||||
- Wan Sim ([@0420syj](https://github.com/0420syj))
|
||||
- Webber Takken ([@webbertakken](https://github.com/webbertakken))
|
||||
- Will Ceolin ([@wceolin](https://github.com/wceolin))
|
||||
- Yangshun Tay ([@yangshun](https://github.com/yangshun))
|
||||
- Zwyx ([@Zwyx](https://github.com/Zwyx))
|
||||
- [@Dr-Electron](https://github.com/Dr-Electron)
|
||||
- [@FlorinaPacurar](https://github.com/FlorinaPacurar)
|
||||
- [@Mogyuchi](https://github.com/Mogyuchi)
|
||||
- [@Sainan](https://github.com/Sainan)
|
||||
- [@VinceCYLiao](https://github.com/VinceCYLiao)
|
||||
- [@allyw2002](https://github.com/allyw2002)
|
||||
- [@bitpredator](https://github.com/bitpredator)
|
||||
- [@conlacda](https://github.com/conlacda)
|
||||
- [@dawei-wang](https://github.com/dawei-wang)
|
||||
- [@la55u](https://github.com/la55u)
|
||||
- [@mcallisto](https://github.com/mcallisto)
|
||||
- [@prateekbytes](https://github.com/prateekbytes)
|
||||
- [@qwerzl](https://github.com/qwerzl)
|
||||
- [@rsteele6](https://github.com/rsteele6)
|
||||
- [@samatt14](https://github.com/samatt14)
|
||||
- [@thedevwonder](https://github.com/thedevwonder)
|
||||
- [@yosukekato165](https://github.com/yosukekato165)
|
||||
- ozaki ([@OzakIOne](https://github.com/OzakIOne))
|
||||
- sykp241095 ([@sykp241095](https://github.com/sykp241095))
|
||||
- 初冬 ([@chudongvip](https://github.com/chudongvip))
|
||||
|
||||
## 2.4.3 (2023-09-20)
|
||||
|
||||
#### :bug: Bug Fix
|
||||
|
|
|
|||
20
README.md
20
README.md
|
|
@ -1,7 +1,13 @@
|
|||
<h1 align="center">
|
||||
<p align="center">Docusaurus</p>
|
||||
<a href="https://docusaurus.io"><img src="https://docusaurus.io/img/slash-introducing.svg" alt="Docusaurus"></a>
|
||||
</h1>
|
||||
<div align="center">
|
||||
<h1 align="center">
|
||||
Docusaurus
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://docusaurus.io">
|
||||
<img src="https://docusaurus.io/img/slash-introducing.svg" alt="Docusaurus">
|
||||
</a>
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://twitter.com/docusaurus"><img src="https://img.shields.io/twitter/follow/docusaurus.svg?style=social" align="right" alt="Twitter Follow" /></a>
|
||||
|
|
@ -14,17 +20,13 @@
|
|||
<a href= "https://github.com/prettier/prettier"><img alt="code style: prettier" src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg"></a>
|
||||
<a href="#license"><img src="https://img.shields.io/github/license/sourcerer-io/hall-of-fame.svg?colorB=ff0000"></a>
|
||||
<a href="https://github.com/facebook/jest"><img src="https://img.shields.io/badge/tested_with-jest-99424f.svg" alt="Tested with Jest"></a>
|
||||
<a href="https://argos-ci.com" target="_blank" rel="noreferrer noopener" aria-label="Covered by Argos"><img src="https://argos-ci.com/badge.svg" alt="Covered by Argos" width="133" height="20" /></a>
|
||||
<a href="https://gitpod.io/#https://github.com/facebook/docusaurus"><img src="https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod" alt="Gitpod Ready-to-Code"/></a>
|
||||
<a href="https://app.netlify.com/sites/docusaurus-2/deploys"><img src="https://api.netlify.com/api/v1/badges/9e1ff559-4405-4ebe-8718-5e21c0774bc8/deploy-status" alt="Netlify Status"></a>
|
||||
<a href="https://meercode.io/facebook/docusaurus"><img src="https://meercode.io/badge/facebook/docusaurus?type=ci-score" alt="CI Score"></a>
|
||||
<a href="https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Ffacebook%2Fdocusaurus%2Ftree%2Fmain%2Fexamples%2Fclassic&project-name=my-docusaurus-site&repo-name=my-docusaurus-site"><img src="https://vercel.com/button" alt="Deploy with Vercel"/></a>
|
||||
<a href="https://app.netlify.com/start/deploy?repository=https://github.com/slorber/docusaurus-starter"><img src="https://www.netlify.com/img/deploy/button.svg" alt="Deploy to Netlify"></a>
|
||||
</p>
|
||||
|
||||
> **We are working hard on Docusaurus v2. If you are new to Docusaurus, try using the new version instead of v1. See the [Docusaurus v2 website](https://docusaurus.io/) for more details.**
|
||||
|
||||
> Docusaurus v1 doc is available at [v1.docusaurus.io](https://v1.docusaurus.io) and code is available on branch [docusaurus-v1](https://github.com/facebook/docusaurus/tree/docusaurus-v1)
|
||||
|
||||
## Introduction
|
||||
|
||||
Docusaurus is a project for building, deploying, and maintaining open source project websites easily.
|
||||
|
|
|
|||
|
|
@ -11,9 +11,9 @@ const CookieName = 'DocusaurusPlaygroundName';
|
|||
|
||||
const PlaygroundConfigs = {
|
||||
codesandbox:
|
||||
'https://codesandbox.io/p/sandbox/github/facebook/docusaurus/tree/main/examples/classic?file=%2FREADME.md',
|
||||
'https://codesandbox.io/p/sandbox/github/facebook/docusaurus/tree/main/examples/classic?file=%2FREADME.md&privacy=public',
|
||||
'codesandbox-ts':
|
||||
'https://codesandbox.io/p/sandbox/github/facebook/docusaurus/tree/main/examples/classic-typescript?file=%2FREADME.md',
|
||||
'https://codesandbox.io/p/sandbox/github/facebook/docusaurus/tree/main/examples/classic-typescript?file=%2FREADME.md&privacy=public',
|
||||
|
||||
// Slow to load
|
||||
// stackblitz: 'https://stackblitz.com/github/facebook/docusaurus/tree/main/examples/classic',
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "new.docusaurus.io",
|
||||
"version": "3.0.0-rc.1",
|
||||
"version": "3.2.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"start": "npx --package netlify-cli netlify dev"
|
||||
|
|
|
|||
|
|
@ -25,7 +25,8 @@ async function generateTemplateExample(template) {
|
|||
// Run the docusaurus script to create the template in the examples folder
|
||||
const command = template.endsWith('-typescript')
|
||||
? template.replace('-typescript', ' -- --typescript')
|
||||
: template;
|
||||
: `${template} -- --javascript`;
|
||||
|
||||
shell.exec(
|
||||
// We use the published init script on purpose, because the local init is
|
||||
// too new and could generate upcoming/unavailable config options.
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ git diff --name-only -- '*.json' | sed 's, ,\\&,g' | xargs git checkout --
|
|||
cd ..
|
||||
|
||||
# Build skeleton website with new version
|
||||
npm_config_registry="$CUSTOM_REGISTRY_URL" npx create-docusaurus@"$NEW_VERSION" test-website classic $EXTRA_OPTS
|
||||
npm_config_registry="$CUSTOM_REGISTRY_URL" npx create-docusaurus@"$NEW_VERSION" test-website classic --javascript $EXTRA_OPTS
|
||||
|
||||
# Stop Docker container
|
||||
if [[ -z "${KEEP_CONTAINER:-true}" ]] && ( $(docker container inspect "$CONTAINER_NAME" > /dev/null 2>&1) ); then
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "argos",
|
||||
"version": "3.0.0-rc.1",
|
||||
"version": "3.2.0",
|
||||
"description": "Argos visual diff tests",
|
||||
"license": "MIT",
|
||||
"private": true,
|
||||
|
|
@ -10,8 +10,8 @@
|
|||
"report": "playwright show-report"
|
||||
},
|
||||
"dependencies": {
|
||||
"@argos-ci/playwright": "^1.0.1",
|
||||
"@playwright/test": "^1.36.1",
|
||||
"@argos-ci/playwright": "^1.9.3",
|
||||
"@playwright/test": "^1.41.2",
|
||||
"cheerio": "^1.0.0-rc.12"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Website
|
||||
|
||||
This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.
|
||||
This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator.
|
||||
|
||||
### Installation
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ Or **try Docusaurus immediately** with **[docusaurus.new](https://docusaurus.new
|
|||
|
||||
### What you'll need
|
||||
|
||||
- [Node.js](https://nodejs.org/en/download/) version 16.14 or above:
|
||||
- [Node.js](https://nodejs.org/en/download/) version 18.0 or above:
|
||||
- When installing Node.js, you are recommended to check all checkboxes related to dependencies.
|
||||
|
||||
## Generate a new site
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ tags: [greetings]
|
|||
|
||||
Congratulations, you have made your first post!
|
||||
|
||||
Feel free to play around and edit this post as much you like.
|
||||
Feel free to play around and edit this post as much as you like.
|
||||
```
|
||||
|
||||
A new blog post is now available at [http://localhost:3000/blog/greetings](http://localhost:3000/blog/greetings).
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ This is my **first Docusaurus document**!
|
|||
It is also possible to create your sidebar explicitly in `sidebars.js`:
|
||||
|
||||
```js title="sidebars.js"
|
||||
module.exports = {
|
||||
export default {
|
||||
tutorialSidebar: [
|
||||
'intro',
|
||||
// highlight-next-line
|
||||
|
|
|
|||
|
|
@ -61,13 +61,13 @@ You can reference images relative to the current file as well. This is particula
|
|||
|
||||
Markdown code blocks are supported with Syntax highlighting.
|
||||
|
||||
```jsx title="src/components/HelloDocusaurus.js"
|
||||
function HelloDocusaurus() {
|
||||
return (
|
||||
<h1>Hello, Docusaurus!</h1>
|
||||
)
|
||||
}
|
||||
```
|
||||
````md
|
||||
```jsx title="src/components/HelloDocusaurus.js"
|
||||
function HelloDocusaurus() {
|
||||
return <h1>Hello, Docusaurus!</h1>;
|
||||
}
|
||||
```
|
||||
````
|
||||
|
||||
```jsx title="src/components/HelloDocusaurus.js"
|
||||
function HelloDocusaurus() {
|
||||
|
|
@ -79,17 +79,19 @@ function HelloDocusaurus() {
|
|||
|
||||
Docusaurus has a special syntax to create admonitions and callouts:
|
||||
|
||||
:::tip My tip
|
||||
```md
|
||||
:::tip My tip
|
||||
|
||||
Use this awesome feature option
|
||||
Use this awesome feature option
|
||||
|
||||
:::
|
||||
:::
|
||||
|
||||
:::danger Take care
|
||||
:::danger Take care
|
||||
|
||||
This action is dangerous
|
||||
This action is dangerous
|
||||
|
||||
:::
|
||||
:::
|
||||
```
|
||||
|
||||
:::tip My tip
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ To navigate seamlessly across versions, add a version dropdown.
|
|||
Modify the `docusaurus.config.js` file:
|
||||
|
||||
```js title="docusaurus.config.js"
|
||||
module.exports = {
|
||||
export default {
|
||||
themeConfig: {
|
||||
navbar: {
|
||||
items: [
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ Let's translate `docs/intro.md` to French.
|
|||
Modify `docusaurus.config.js` to add support for the `fr` locale:
|
||||
|
||||
```js title="docusaurus.config.js"
|
||||
module.exports = {
|
||||
export default {
|
||||
i18n: {
|
||||
defaultLocale: 'en',
|
||||
locales: ['en', 'fr'],
|
||||
|
|
@ -43,7 +43,7 @@ Your localized site is accessible at [http://localhost:3000/fr/](http://localhos
|
|||
|
||||
:::caution
|
||||
|
||||
In development, you can only use one locale at a same time.
|
||||
In development, you can only use one locale at a time.
|
||||
|
||||
:::
|
||||
|
||||
|
|
@ -54,7 +54,7 @@ To navigate seamlessly across languages, add a locale dropdown.
|
|||
Modify the `docusaurus.config.js` file:
|
||||
|
||||
```js title="docusaurus.config.js"
|
||||
module.exports = {
|
||||
export default {
|
||||
themeConfig: {
|
||||
navbar: {
|
||||
items: [
|
||||
|
|
|
|||
|
|
@ -1,139 +0,0 @@
|
|||
// @ts-check
|
||||
// Note: type annotations allow type checking and IDEs autocompletion
|
||||
|
||||
const lightCodeTheme = require('prism-react-renderer/themes/github');
|
||||
const darkCodeTheme = require('prism-react-renderer/themes/dracula');
|
||||
|
||||
/** @type {import('@docusaurus/types').Config} */
|
||||
const config = {
|
||||
title: 'My Site',
|
||||
tagline: 'Dinosaurs are cool',
|
||||
favicon: 'img/favicon.ico',
|
||||
|
||||
// Set the production url of your site here
|
||||
url: 'https://your-docusaurus-test-site.com',
|
||||
// Set the /<baseUrl>/ pathname under which your site is served
|
||||
// For GitHub pages deployment, it is often '/<projectName>/'
|
||||
baseUrl: '/',
|
||||
|
||||
// GitHub pages deployment config.
|
||||
// If you aren't using GitHub pages, you don't need these.
|
||||
organizationName: 'facebook', // Usually your GitHub org/user name.
|
||||
projectName: 'docusaurus', // Usually your repo name.
|
||||
|
||||
onBrokenLinks: 'throw',
|
||||
onBrokenMarkdownLinks: 'warn',
|
||||
|
||||
// Even if you don't use internalization, you can use this field to set useful
|
||||
// metadata like html lang. For example, if your site is Chinese, you may want
|
||||
// to replace "en" with "zh-Hans".
|
||||
i18n: {
|
||||
defaultLocale: 'en',
|
||||
locales: ['en'],
|
||||
},
|
||||
|
||||
presets: [
|
||||
[
|
||||
'classic',
|
||||
/** @type {import('@docusaurus/preset-classic').Options} */
|
||||
({
|
||||
docs: {
|
||||
sidebarPath: require.resolve('./sidebars.js'),
|
||||
// Please change this to your repo.
|
||||
// Remove this to remove the "edit this page" links.
|
||||
editUrl:
|
||||
'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/',
|
||||
},
|
||||
blog: {
|
||||
showReadingTime: true,
|
||||
// Please change this to your repo.
|
||||
// Remove this to remove the "edit this page" links.
|
||||
editUrl:
|
||||
'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/',
|
||||
},
|
||||
theme: {
|
||||
customCss: require.resolve('./src/css/custom.css'),
|
||||
},
|
||||
}),
|
||||
],
|
||||
],
|
||||
|
||||
themeConfig:
|
||||
/** @type {import('@docusaurus/preset-classic').ThemeConfig} */
|
||||
({
|
||||
// Replace with your project's social card
|
||||
image: 'img/docusaurus-social-card.jpg',
|
||||
navbar: {
|
||||
title: 'My Site',
|
||||
logo: {
|
||||
alt: 'My Site Logo',
|
||||
src: 'img/logo.svg',
|
||||
},
|
||||
items: [
|
||||
{
|
||||
type: 'docSidebar',
|
||||
sidebarId: 'tutorialSidebar',
|
||||
position: 'left',
|
||||
label: 'Tutorial',
|
||||
},
|
||||
{to: '/blog', label: 'Blog', position: 'left'},
|
||||
{
|
||||
href: 'https://github.com/facebook/docusaurus',
|
||||
label: 'GitHub',
|
||||
position: 'right',
|
||||
},
|
||||
],
|
||||
},
|
||||
footer: {
|
||||
style: 'dark',
|
||||
links: [
|
||||
{
|
||||
title: 'Docs',
|
||||
items: [
|
||||
{
|
||||
label: 'Tutorial',
|
||||
to: '/docs/intro',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Community',
|
||||
items: [
|
||||
{
|
||||
label: 'Stack Overflow',
|
||||
href: 'https://stackoverflow.com/questions/tagged/docusaurus',
|
||||
},
|
||||
{
|
||||
label: 'Discord',
|
||||
href: 'https://discordapp.com/invite/docusaurus',
|
||||
},
|
||||
{
|
||||
label: 'Twitter',
|
||||
href: 'https://twitter.com/docusaurus',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'More',
|
||||
items: [
|
||||
{
|
||||
label: 'Blog',
|
||||
to: '/blog',
|
||||
},
|
||||
{
|
||||
label: 'GitHub',
|
||||
href: 'https://github.com/facebook/docusaurus',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
copyright: `Copyright © ${new Date().getFullYear()} My Project, Inc. Built with Docusaurus.`,
|
||||
},
|
||||
prism: {
|
||||
theme: lightCodeTheme,
|
||||
darkTheme: darkCodeTheme,
|
||||
},
|
||||
}),
|
||||
};
|
||||
|
||||
module.exports = config;
|
||||
|
|
@ -0,0 +1,133 @@
|
|||
import {themes as prismThemes} from 'prism-react-renderer';
|
||||
import type {Config} from '@docusaurus/types';
|
||||
import type * as Preset from '@docusaurus/preset-classic';
|
||||
|
||||
const config: Config = {
|
||||
title: 'My Site',
|
||||
tagline: 'Dinosaurs are cool',
|
||||
favicon: 'img/favicon.ico',
|
||||
|
||||
// Set the production url of your site here
|
||||
url: 'https://your-docusaurus-site.example.com',
|
||||
// Set the /<baseUrl>/ pathname under which your site is served
|
||||
// For GitHub pages deployment, it is often '/<projectName>/'
|
||||
baseUrl: '/',
|
||||
|
||||
// GitHub pages deployment config.
|
||||
// If you aren't using GitHub pages, you don't need these.
|
||||
organizationName: 'facebook', // Usually your GitHub org/user name.
|
||||
projectName: 'docusaurus', // Usually your repo name.
|
||||
|
||||
onBrokenLinks: 'throw',
|
||||
onBrokenMarkdownLinks: 'warn',
|
||||
|
||||
// Even if you don't use internationalization, you can use this field to set
|
||||
// useful metadata like html lang. For example, if your site is Chinese, you
|
||||
// may want to replace "en" with "zh-Hans".
|
||||
i18n: {
|
||||
defaultLocale: 'en',
|
||||
locales: ['en'],
|
||||
},
|
||||
|
||||
presets: [
|
||||
[
|
||||
'classic',
|
||||
{
|
||||
docs: {
|
||||
sidebarPath: './sidebars.ts',
|
||||
// Please change this to your repo.
|
||||
// Remove this to remove the "edit this page" links.
|
||||
editUrl:
|
||||
'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/',
|
||||
},
|
||||
blog: {
|
||||
showReadingTime: true,
|
||||
// Please change this to your repo.
|
||||
// Remove this to remove the "edit this page" links.
|
||||
editUrl:
|
||||
'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/',
|
||||
},
|
||||
theme: {
|
||||
customCss: './src/css/custom.css',
|
||||
},
|
||||
} satisfies Preset.Options,
|
||||
],
|
||||
],
|
||||
|
||||
themeConfig: {
|
||||
// Replace with your project's social card
|
||||
image: 'img/docusaurus-social-card.jpg',
|
||||
navbar: {
|
||||
title: 'My Site',
|
||||
logo: {
|
||||
alt: 'My Site Logo',
|
||||
src: 'img/logo.svg',
|
||||
},
|
||||
items: [
|
||||
{
|
||||
type: 'docSidebar',
|
||||
sidebarId: 'tutorialSidebar',
|
||||
position: 'left',
|
||||
label: 'Tutorial',
|
||||
},
|
||||
{to: '/blog', label: 'Blog', position: 'left'},
|
||||
{
|
||||
href: 'https://github.com/facebook/docusaurus',
|
||||
label: 'GitHub',
|
||||
position: 'right',
|
||||
},
|
||||
],
|
||||
},
|
||||
footer: {
|
||||
style: 'dark',
|
||||
links: [
|
||||
{
|
||||
title: 'Docs',
|
||||
items: [
|
||||
{
|
||||
label: 'Tutorial',
|
||||
to: '/docs/intro',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Community',
|
||||
items: [
|
||||
{
|
||||
label: 'Stack Overflow',
|
||||
href: 'https://stackoverflow.com/questions/tagged/docusaurus',
|
||||
},
|
||||
{
|
||||
label: 'Discord',
|
||||
href: 'https://discordapp.com/invite/docusaurus',
|
||||
},
|
||||
{
|
||||
label: 'Twitter',
|
||||
href: 'https://twitter.com/docusaurus',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'More',
|
||||
items: [
|
||||
{
|
||||
label: 'Blog',
|
||||
to: '/blog',
|
||||
},
|
||||
{
|
||||
label: 'GitHub',
|
||||
href: 'https://github.com/facebook/docusaurus',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
copyright: `Copyright © ${new Date().getFullYear()} My Project, Inc. Built with Docusaurus.`,
|
||||
},
|
||||
prism: {
|
||||
theme: prismThemes.github,
|
||||
darkTheme: prismThemes.dracula,
|
||||
},
|
||||
} satisfies Preset.ThemeConfig,
|
||||
};
|
||||
|
||||
export default config;
|
||||
|
|
@ -16,18 +16,19 @@
|
|||
"dev": "docusaurus start"
|
||||
},
|
||||
"dependencies": {
|
||||
"@docusaurus/core": "2.4.3",
|
||||
"@docusaurus/preset-classic": "2.4.3",
|
||||
"@mdx-js/react": "^1.6.22",
|
||||
"clsx": "^1.2.1",
|
||||
"prism-react-renderer": "^1.3.5",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2"
|
||||
"@docusaurus/core": "3.2.0",
|
||||
"@docusaurus/preset-classic": "3.2.0",
|
||||
"@mdx-js/react": "^3.0.0",
|
||||
"clsx": "^2.0.0",
|
||||
"prism-react-renderer": "^2.3.0",
|
||||
"react": "^18.0.0",
|
||||
"react-dom": "^18.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@docusaurus/module-type-aliases": "2.4.3",
|
||||
"@tsconfig/docusaurus": "^1.0.5",
|
||||
"typescript": "^4.7.4"
|
||||
"@docusaurus/module-type-aliases": "3.2.0",
|
||||
"@docusaurus/tsconfig": "3.2.0",
|
||||
"@docusaurus/types": "3.2.0",
|
||||
"typescript": "~5.2.2"
|
||||
},
|
||||
"browserslist": {
|
||||
"production": [
|
||||
|
|
@ -36,13 +37,13 @@
|
|||
"not op_mini all"
|
||||
],
|
||||
"development": [
|
||||
"last 1 chrome version",
|
||||
"last 1 firefox version",
|
||||
"last 1 safari version"
|
||||
"last 3 chrome version",
|
||||
"last 3 firefox version",
|
||||
"last 5 safari version"
|
||||
]
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.14"
|
||||
"node": ">=18.0"
|
||||
},
|
||||
"description": "Docusaurus example project (classic-typescript template)"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
"hardReloadOnChange": true,
|
||||
"view": "browser",
|
||||
"template": "docusaurus",
|
||||
"node": "16",
|
||||
"node": "18",
|
||||
"container": {
|
||||
"node": "16"
|
||||
"node": "18"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,33 +0,0 @@
|
|||
/**
|
||||
* Creating a sidebar enables you to:
|
||||
- create an ordered group of docs
|
||||
- render a sidebar for each doc of that group
|
||||
- provide next/previous navigation
|
||||
|
||||
The sidebars can be generated from the filesystem, or explicitly defined here.
|
||||
|
||||
Create as many sidebars as you want.
|
||||
*/
|
||||
|
||||
// @ts-check
|
||||
|
||||
/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
|
||||
const sidebars = {
|
||||
// By default, Docusaurus generates a sidebar from the docs folder structure
|
||||
tutorialSidebar: [{type: 'autogenerated', dirName: '.'}],
|
||||
|
||||
// But you can create a sidebar manually
|
||||
/*
|
||||
tutorialSidebar: [
|
||||
'intro',
|
||||
'hello',
|
||||
{
|
||||
type: 'category',
|
||||
label: 'Tutorial',
|
||||
items: ['tutorial-basics/create-a-document'],
|
||||
},
|
||||
],
|
||||
*/
|
||||
};
|
||||
|
||||
module.exports = sidebars;
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
import type {SidebarsConfig} from '@docusaurus/plugin-content-docs';
|
||||
|
||||
/**
|
||||
* Creating a sidebar enables you to:
|
||||
- create an ordered group of docs
|
||||
- render a sidebar for each doc of that group
|
||||
- provide next/previous navigation
|
||||
|
||||
The sidebars can be generated from the filesystem, or explicitly defined here.
|
||||
|
||||
Create as many sidebars as you want.
|
||||
*/
|
||||
const sidebars: SidebarsConfig = {
|
||||
// By default, Docusaurus generates a sidebar from the docs folder structure
|
||||
tutorialSidebar: [{type: 'autogenerated', dirName: '.'}],
|
||||
|
||||
// But you can create a sidebar manually
|
||||
/*
|
||||
tutorialSidebar: [
|
||||
'intro',
|
||||
'hello',
|
||||
{
|
||||
type: 'category',
|
||||
label: 'Tutorial',
|
||||
items: ['tutorial-basics/create-a-document'],
|
||||
},
|
||||
],
|
||||
*/
|
||||
};
|
||||
|
||||
export default sidebars;
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
import React from 'react';
|
||||
import clsx from 'clsx';
|
||||
import Heading from '@theme/Heading';
|
||||
import styles from './styles.module.css';
|
||||
|
||||
type FeatureItem = {
|
||||
|
|
@ -48,7 +48,7 @@ function Feature({title, Svg, description}: FeatureItem) {
|
|||
<Svg className={styles.featureSvg} role="img" />
|
||||
</div>
|
||||
<div className="text--center padding-horiz--md">
|
||||
<h3>{title}</h3>
|
||||
<Heading as="h3">{title}</Heading>
|
||||
<p>{description}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
import React from 'react';
|
||||
import clsx from 'clsx';
|
||||
import Link from '@docusaurus/Link';
|
||||
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
||||
import Layout from '@theme/Layout';
|
||||
import HomepageFeatures from '@site/src/components/HomepageFeatures';
|
||||
import Heading from '@theme/Heading';
|
||||
|
||||
import styles from './index.module.css';
|
||||
|
||||
|
|
@ -12,7 +12,9 @@ function HomepageHeader() {
|
|||
return (
|
||||
<header className={clsx('hero hero--primary', styles.heroBanner)}>
|
||||
<div className="container">
|
||||
<h1 className="hero__title">{siteConfig.title}</h1>
|
||||
<Heading as="h1" className="hero__title">
|
||||
{siteConfig.title}
|
||||
</Heading>
|
||||
<p className="hero__subtitle">{siteConfig.tagline}</p>
|
||||
<div className={styles.buttons}>
|
||||
<Link
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
// This file is not used in compilation. It is here just for a nice editor experience.
|
||||
"extends": "@tsconfig/docusaurus/tsconfig.json",
|
||||
"extends": "@docusaurus/tsconfig",
|
||||
"compilerOptions": {
|
||||
"baseUrl": "."
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,6 +1,6 @@
|
|||
# Website
|
||||
|
||||
This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.
|
||||
This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator.
|
||||
|
||||
### Installation
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ Or **try Docusaurus immediately** with **[docusaurus.new](https://docusaurus.new
|
|||
|
||||
### What you'll need
|
||||
|
||||
- [Node.js](https://nodejs.org/en/download/) version 16.14 or above:
|
||||
- [Node.js](https://nodejs.org/en/download/) version 18.0 or above:
|
||||
- When installing Node.js, you are recommended to check all checkboxes related to dependencies.
|
||||
|
||||
## Generate a new site
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ tags: [greetings]
|
|||
|
||||
Congratulations, you have made your first post!
|
||||
|
||||
Feel free to play around and edit this post as much you like.
|
||||
Feel free to play around and edit this post as much as you like.
|
||||
```
|
||||
|
||||
A new blog post is now available at [http://localhost:3000/blog/greetings](http://localhost:3000/blog/greetings).
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ This is my **first Docusaurus document**!
|
|||
It is also possible to create your sidebar explicitly in `sidebars.js`:
|
||||
|
||||
```js title="sidebars.js"
|
||||
module.exports = {
|
||||
export default {
|
||||
tutorialSidebar: [
|
||||
'intro',
|
||||
// highlight-next-line
|
||||
|
|
|
|||
|
|
@ -61,13 +61,13 @@ You can reference images relative to the current file as well. This is particula
|
|||
|
||||
Markdown code blocks are supported with Syntax highlighting.
|
||||
|
||||
```jsx title="src/components/HelloDocusaurus.js"
|
||||
function HelloDocusaurus() {
|
||||
return (
|
||||
<h1>Hello, Docusaurus!</h1>
|
||||
)
|
||||
}
|
||||
```
|
||||
````md
|
||||
```jsx title="src/components/HelloDocusaurus.js"
|
||||
function HelloDocusaurus() {
|
||||
return <h1>Hello, Docusaurus!</h1>;
|
||||
}
|
||||
```
|
||||
````
|
||||
|
||||
```jsx title="src/components/HelloDocusaurus.js"
|
||||
function HelloDocusaurus() {
|
||||
|
|
@ -79,17 +79,19 @@ function HelloDocusaurus() {
|
|||
|
||||
Docusaurus has a special syntax to create admonitions and callouts:
|
||||
|
||||
:::tip My tip
|
||||
```md
|
||||
:::tip My tip
|
||||
|
||||
Use this awesome feature option
|
||||
Use this awesome feature option
|
||||
|
||||
:::
|
||||
:::
|
||||
|
||||
:::danger Take care
|
||||
:::danger Take care
|
||||
|
||||
This action is dangerous
|
||||
This action is dangerous
|
||||
|
||||
:::
|
||||
:::
|
||||
```
|
||||
|
||||
:::tip My tip
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ To navigate seamlessly across versions, add a version dropdown.
|
|||
Modify the `docusaurus.config.js` file:
|
||||
|
||||
```js title="docusaurus.config.js"
|
||||
module.exports = {
|
||||
export default {
|
||||
themeConfig: {
|
||||
navbar: {
|
||||
items: [
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ Let's translate `docs/intro.md` to French.
|
|||
Modify `docusaurus.config.js` to add support for the `fr` locale:
|
||||
|
||||
```js title="docusaurus.config.js"
|
||||
module.exports = {
|
||||
export default {
|
||||
i18n: {
|
||||
defaultLocale: 'en',
|
||||
locales: ['en', 'fr'],
|
||||
|
|
@ -43,7 +43,7 @@ Your localized site is accessible at [http://localhost:3000/fr/](http://localhos
|
|||
|
||||
:::caution
|
||||
|
||||
In development, you can only use one locale at a same time.
|
||||
In development, you can only use one locale at a time.
|
||||
|
||||
:::
|
||||
|
||||
|
|
@ -54,7 +54,7 @@ To navigate seamlessly across languages, add a locale dropdown.
|
|||
Modify the `docusaurus.config.js` file:
|
||||
|
||||
```js title="docusaurus.config.js"
|
||||
module.exports = {
|
||||
export default {
|
||||
themeConfig: {
|
||||
navbar: {
|
||||
items: [
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
// @ts-check
|
||||
// Note: type annotations allow type checking and IDEs autocompletion
|
||||
// `@type` JSDoc annotations allow editor autocompletion and type checking
|
||||
// (when paired with `@ts-check`).
|
||||
// There are various equivalent ways to declare your Docusaurus config.
|
||||
// See: https://docusaurus.io/docs/api/docusaurus-config
|
||||
|
||||
const lightCodeTheme = require('prism-react-renderer/themes/github');
|
||||
const darkCodeTheme = require('prism-react-renderer/themes/dracula');
|
||||
import {themes as prismThemes} from 'prism-react-renderer';
|
||||
|
||||
/** @type {import('@docusaurus/types').Config} */
|
||||
const config = {
|
||||
|
|
@ -11,7 +13,7 @@ const config = {
|
|||
favicon: 'img/favicon.ico',
|
||||
|
||||
// Set the production url of your site here
|
||||
url: 'https://your-docusaurus-test-site.com',
|
||||
url: 'https://your-docusaurus-site.example.com',
|
||||
// Set the /<baseUrl>/ pathname under which your site is served
|
||||
// For GitHub pages deployment, it is often '/<projectName>/'
|
||||
baseUrl: '/',
|
||||
|
|
@ -24,9 +26,9 @@ const config = {
|
|||
onBrokenLinks: 'throw',
|
||||
onBrokenMarkdownLinks: 'warn',
|
||||
|
||||
// Even if you don't use internalization, you can use this field to set useful
|
||||
// metadata like html lang. For example, if your site is Chinese, you may want
|
||||
// to replace "en" with "zh-Hans".
|
||||
// Even if you don't use internationalization, you can use this field to set
|
||||
// useful metadata like html lang. For example, if your site is Chinese, you
|
||||
// may want to replace "en" with "zh-Hans".
|
||||
i18n: {
|
||||
defaultLocale: 'en',
|
||||
locales: ['en'],
|
||||
|
|
@ -38,7 +40,7 @@ const config = {
|
|||
/** @type {import('@docusaurus/preset-classic').Options} */
|
||||
({
|
||||
docs: {
|
||||
sidebarPath: require.resolve('./sidebars.js'),
|
||||
sidebarPath: './sidebars.js',
|
||||
// Please change this to your repo.
|
||||
// Remove this to remove the "edit this page" links.
|
||||
editUrl:
|
||||
|
|
@ -52,7 +54,7 @@ const config = {
|
|||
'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/',
|
||||
},
|
||||
theme: {
|
||||
customCss: require.resolve('./src/css/custom.css'),
|
||||
customCss: './src/css/custom.css',
|
||||
},
|
||||
}),
|
||||
],
|
||||
|
|
@ -130,10 +132,10 @@ const config = {
|
|||
copyright: `Copyright © ${new Date().getFullYear()} My Project, Inc. Built with Docusaurus.`,
|
||||
},
|
||||
prism: {
|
||||
theme: lightCodeTheme,
|
||||
darkTheme: darkCodeTheme,
|
||||
theme: prismThemes.github,
|
||||
darkTheme: prismThemes.dracula,
|
||||
},
|
||||
}),
|
||||
};
|
||||
|
||||
module.exports = config;
|
||||
export default config;
|
||||
|
|
|
|||
|
|
@ -15,16 +15,17 @@
|
|||
"dev": "docusaurus start"
|
||||
},
|
||||
"dependencies": {
|
||||
"@docusaurus/core": "2.4.3",
|
||||
"@docusaurus/preset-classic": "2.4.3",
|
||||
"@mdx-js/react": "^1.6.22",
|
||||
"clsx": "^1.2.1",
|
||||
"prism-react-renderer": "^1.3.5",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2"
|
||||
"@docusaurus/core": "3.2.0",
|
||||
"@docusaurus/preset-classic": "3.2.0",
|
||||
"@mdx-js/react": "^3.0.0",
|
||||
"clsx": "^2.0.0",
|
||||
"prism-react-renderer": "^2.3.0",
|
||||
"react": "^18.0.0",
|
||||
"react-dom": "^18.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@docusaurus/module-type-aliases": "2.4.3"
|
||||
"@docusaurus/module-type-aliases": "3.2.0",
|
||||
"@docusaurus/types": "3.2.0"
|
||||
},
|
||||
"browserslist": {
|
||||
"production": [
|
||||
|
|
@ -33,13 +34,13 @@
|
|||
"not op_mini all"
|
||||
],
|
||||
"development": [
|
||||
"last 1 chrome version",
|
||||
"last 1 firefox version",
|
||||
"last 1 safari version"
|
||||
"last 3 chrome version",
|
||||
"last 3 firefox version",
|
||||
"last 5 safari version"
|
||||
]
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.14"
|
||||
"node": ">=18.0"
|
||||
},
|
||||
"description": "Docusaurus example project"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
"hardReloadOnChange": true,
|
||||
"view": "browser",
|
||||
"template": "docusaurus",
|
||||
"node": "16",
|
||||
"node": "18",
|
||||
"container": {
|
||||
"node": "16"
|
||||
"node": "18"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,4 +30,4 @@ const sidebars = {
|
|||
*/
|
||||
};
|
||||
|
||||
module.exports = sidebars;
|
||||
export default sidebars;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import React from 'react';
|
||||
import clsx from 'clsx';
|
||||
import Heading from '@theme/Heading';
|
||||
import styles from './styles.module.css';
|
||||
|
||||
const FeatureList = [
|
||||
|
|
@ -42,7 +42,7 @@ function Feature({Svg, title, description}) {
|
|||
<Svg className={styles.featureSvg} role="img" />
|
||||
</div>
|
||||
<div className="text--center padding-horiz--md">
|
||||
<h3>{title}</h3>
|
||||
<Heading as="h3">{title}</Heading>
|
||||
<p>{description}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
import React from 'react';
|
||||
import clsx from 'clsx';
|
||||
import Link from '@docusaurus/Link';
|
||||
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
||||
import Layout from '@theme/Layout';
|
||||
import HomepageFeatures from '@site/src/components/HomepageFeatures';
|
||||
|
||||
import Heading from '@theme/Heading';
|
||||
import styles from './index.module.css';
|
||||
|
||||
function HomepageHeader() {
|
||||
|
|
@ -12,7 +12,9 @@ function HomepageHeader() {
|
|||
return (
|
||||
<header className={clsx('hero hero--primary', styles.heroBanner)}>
|
||||
<div className="container">
|
||||
<h1 className="hero__title">{siteConfig.title}</h1>
|
||||
<Heading as="h1" className="hero__title">
|
||||
{siteConfig.title}
|
||||
</Heading>
|
||||
<p className="hero__subtitle">{siteConfig.tagline}</p>
|
||||
<div className={styles.buttons}>
|
||||
<Link
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"version": "3.0.0-rc.1",
|
||||
"version": "3.2.0",
|
||||
"npmClient": "yarn",
|
||||
"useWorkspaces": true,
|
||||
"useNx": false,
|
||||
|
|
|
|||
|
|
@ -51,8 +51,11 @@
|
|||
"lint": "yarn lint:js && yarn lint:style && yarn lint:spelling",
|
||||
"lint:ci": "yarn lint:js --quiet && yarn lint:style && yarn lint:spelling",
|
||||
"lint:js": "eslint --cache --report-unused-disable-directives \"**/*.{js,jsx,ts,tsx,mjs}\"",
|
||||
"lint:spelling": "cspell \"**\" --no-progress",
|
||||
"lint:js:fix": "yarn lint:js --fix",
|
||||
"lint:spelling": "cspell \"**\" --no-progress --show-context --show-suggestions",
|
||||
"lint:spelling:fix": "yarn rimraf project-words.txt && echo \"# Project Words - DO NOT TOUCH - This is updated through CI\" >> project-words.txt && yarn -s lint:spelling --words-only --unique --no-exit-code --no-summary \"**\" | sort --ignore-case >> project-words.txt",
|
||||
"lint:style": "stylelint \"**/*.css\"",
|
||||
"lint:style:fix": "yarn lint:style --fix",
|
||||
"lerna": "lerna",
|
||||
"test": "jest",
|
||||
"test:build:website": "./admin/scripts/test-release.sh",
|
||||
|
|
@ -80,7 +83,7 @@
|
|||
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
||||
"@typescript-eslint/parser": "^5.62.0",
|
||||
"cross-env": "^7.0.3",
|
||||
"cspell": "^6.31.2",
|
||||
"cspell": "^8.1.0",
|
||||
"eslint": "^8.45.0",
|
||||
"eslint-config-airbnb": "^19.0.4",
|
||||
"eslint-config-prettier": "^8.8.0",
|
||||
|
|
|
|||
|
|
@ -10,6 +10,10 @@ npm init docusaurus
|
|||
yarn create docusaurus
|
||||
```
|
||||
|
||||
```bash
|
||||
npx create-docusaurus@latest
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
Please see the [installation documentation](https://docusaurus.io/docs/installation).
|
||||
|
|
@ -21,7 +25,7 @@ For Docusaurus maintainers, templates can be tested with:
|
|||
```bash
|
||||
cd `git rev-parse --show-toplevel` # Back to repo root
|
||||
rm -rf test-website
|
||||
yarn create-docusaurus test-website classic
|
||||
yarn create-docusaurus test-website classic --javascript
|
||||
cd test-website
|
||||
yarn start
|
||||
```
|
||||
|
|
@ -33,7 +37,7 @@ Use the following to test the templates against local packages:
|
|||
```bash
|
||||
cd `git rev-parse --show-toplevel` # Back to repo root
|
||||
rm -rf test-website-in-workspace
|
||||
yarn create-docusaurus test-website-in-workspace classic
|
||||
yarn create-docusaurus test-website-in-workspace classic --javascript
|
||||
cd test-website-in-workspace
|
||||
yarn build
|
||||
yarn start
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ program
|
|||
'Do not run package manager immediately after scaffolding',
|
||||
)
|
||||
.option('-t, --typescript', 'Use the TypeScript template variant')
|
||||
.option('-j, --javascript', 'Use the JavaScript template variant')
|
||||
.option(
|
||||
'-g, --git-strategy <strategy>',
|
||||
`Only used if the template is a git repository.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "create-docusaurus",
|
||||
"version": "3.0.0-rc.1",
|
||||
"version": "3.2.0",
|
||||
"description": "Create Docusaurus apps easily.",
|
||||
"type": "module",
|
||||
"repository": {
|
||||
|
|
@ -22,8 +22,8 @@
|
|||
},
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@docusaurus/logger": "3.0.0-rc.1",
|
||||
"@docusaurus/utils": "3.0.0-rc.1",
|
||||
"@docusaurus/logger": "3.2.0",
|
||||
"@docusaurus/utils": "3.2.0",
|
||||
"commander": "^5.1.0",
|
||||
"fs-extra": "^11.1.1",
|
||||
"lodash": "^4.17.21",
|
||||
|
|
|
|||
|
|
@ -13,15 +13,29 @@ import logger from '@docusaurus/logger';
|
|||
import shell from 'shelljs';
|
||||
import prompts, {type Choice} from 'prompts';
|
||||
import supportsColor from 'supports-color';
|
||||
import {escapeShellArg} from '@docusaurus/utils';
|
||||
import {escapeShellArg, askPreferredLanguage} from '@docusaurus/utils';
|
||||
|
||||
type CLIOptions = {
|
||||
type LanguagesOptions = {
|
||||
javascript?: boolean;
|
||||
typescript?: boolean;
|
||||
};
|
||||
|
||||
type CLIOptions = LanguagesOptions & {
|
||||
packageManager?: PackageManager;
|
||||
skipInstall?: boolean;
|
||||
typescript?: boolean;
|
||||
gitStrategy?: GitStrategy;
|
||||
};
|
||||
|
||||
async function getLanguage(options: LanguagesOptions) {
|
||||
if (options.typescript) {
|
||||
return 'typescript';
|
||||
}
|
||||
if (options.javascript) {
|
||||
return 'javascript';
|
||||
}
|
||||
return askPreferredLanguage();
|
||||
}
|
||||
|
||||
// Only used in the rare, rare case of running globally installed create +
|
||||
// using --skip-install. We need a default name to show the tip text
|
||||
const defaultPackageManager = 'npm';
|
||||
|
|
@ -153,11 +167,14 @@ async function readTemplates(): Promise<Template[]> {
|
|||
async function copyTemplate(
|
||||
template: Template,
|
||||
dest: string,
|
||||
typescript: boolean,
|
||||
language: 'javascript' | 'typescript',
|
||||
): Promise<void> {
|
||||
await fs.copy(path.join(templatesDir, 'shared'), dest);
|
||||
|
||||
await fs.copy(typescript ? template.tsVariantPath! : template.path, dest, {
|
||||
const sourcePath =
|
||||
language === 'typescript' ? template.tsVariantPath! : template.path;
|
||||
|
||||
await fs.copy(sourcePath, dest, {
|
||||
// Symlinks don't exist in published npm packages anymore, so this is only
|
||||
// to prevent errors during local testing
|
||||
filter: async (filePath) => !(await fs.lstat(filePath)).isSymbolicLink(),
|
||||
|
|
@ -183,6 +200,33 @@ function createTemplateChoices(templates: Template[]): Choice[] {
|
|||
];
|
||||
}
|
||||
|
||||
async function askTemplateChoice({
|
||||
templates,
|
||||
cliOptions,
|
||||
}: {
|
||||
templates: Template[];
|
||||
cliOptions: CLIOptions;
|
||||
}) {
|
||||
return cliOptions.gitStrategy
|
||||
? 'Git repository'
|
||||
: (
|
||||
(await prompts(
|
||||
{
|
||||
type: 'select',
|
||||
name: 'template',
|
||||
message: 'Select a template below...',
|
||||
choices: createTemplateChoices(templates),
|
||||
},
|
||||
{
|
||||
onCancel() {
|
||||
logger.error('A choice is required.');
|
||||
process.exit(1);
|
||||
},
|
||||
},
|
||||
)) as {template: Template | 'Git repository' | 'Local template'}
|
||||
).template;
|
||||
}
|
||||
|
||||
function isValidGitRepoUrl(gitRepoUrl: string): boolean {
|
||||
return ['https://', 'git@'].some((item) => gitRepoUrl.startsWith(item));
|
||||
}
|
||||
|
|
@ -260,7 +304,7 @@ type Source =
|
|||
| {
|
||||
type: 'template';
|
||||
template: Template;
|
||||
typescript: boolean;
|
||||
language: 'javascript' | 'typescript';
|
||||
}
|
||||
| {
|
||||
type: 'git';
|
||||
|
|
@ -272,166 +316,193 @@ type Source =
|
|||
path: string;
|
||||
};
|
||||
|
||||
async function createTemplateSource({
|
||||
template,
|
||||
cliOptions,
|
||||
}: {
|
||||
template: Template;
|
||||
cliOptions: CLIOptions;
|
||||
}): Promise<Source> {
|
||||
const language = await getLanguage(cliOptions);
|
||||
if (language === 'typescript' && !template.tsVariantPath) {
|
||||
logger.error`Template name=${template.name} doesn't provide a TypeScript variant.`;
|
||||
process.exit(1);
|
||||
}
|
||||
return {
|
||||
type: 'template',
|
||||
template,
|
||||
language,
|
||||
};
|
||||
}
|
||||
|
||||
async function getTemplateSource({
|
||||
templateName,
|
||||
templates,
|
||||
cliOptions,
|
||||
}: {
|
||||
templateName: string;
|
||||
templates: Template[];
|
||||
cliOptions: CLIOptions;
|
||||
}): Promise<Source> {
|
||||
const template = templates.find((t) => t.name === templateName);
|
||||
if (!template) {
|
||||
logger.error('Invalid template.');
|
||||
process.exit(1);
|
||||
}
|
||||
return createTemplateSource({template, cliOptions});
|
||||
}
|
||||
|
||||
// Get the template source explicitly requested by the user provided cli option
|
||||
async function getUserProvidedSource({
|
||||
reqTemplate,
|
||||
templates,
|
||||
cliOptions,
|
||||
}: {
|
||||
reqTemplate: string;
|
||||
templates: Template[];
|
||||
cliOptions: CLIOptions;
|
||||
}): Promise<Source> {
|
||||
if (isValidGitRepoUrl(reqTemplate)) {
|
||||
if (
|
||||
cliOptions.gitStrategy &&
|
||||
!gitStrategies.includes(cliOptions.gitStrategy)
|
||||
) {
|
||||
logger.error`Invalid git strategy: name=${
|
||||
cliOptions.gitStrategy
|
||||
}. Value must be one of ${gitStrategies.join(', ')}.`;
|
||||
process.exit(1);
|
||||
}
|
||||
return {
|
||||
type: 'git',
|
||||
url: reqTemplate,
|
||||
strategy: cliOptions.gitStrategy ?? 'deep',
|
||||
};
|
||||
}
|
||||
if (await fs.pathExists(path.resolve(reqTemplate))) {
|
||||
return {
|
||||
type: 'local',
|
||||
path: path.resolve(reqTemplate),
|
||||
};
|
||||
}
|
||||
return getTemplateSource({
|
||||
templateName: reqTemplate,
|
||||
templates,
|
||||
cliOptions,
|
||||
});
|
||||
}
|
||||
|
||||
async function askGitRepositorySource({
|
||||
cliOptions,
|
||||
}: {
|
||||
cliOptions: CLIOptions;
|
||||
}): Promise<Source> {
|
||||
const {gitRepoUrl} = (await prompts(
|
||||
{
|
||||
type: 'text',
|
||||
name: 'gitRepoUrl',
|
||||
validate: (url?: string) => {
|
||||
if (url && isValidGitRepoUrl(url)) {
|
||||
return true;
|
||||
}
|
||||
return logger.red('Invalid repository URL');
|
||||
},
|
||||
message: logger.interpolate`Enter a repository URL from GitHub, Bitbucket, GitLab, or any other public repo.
|
||||
(e.g: url=${'https://github.com/ownerName/repoName.git'})`,
|
||||
},
|
||||
{
|
||||
onCancel() {
|
||||
logger.error('A git repo URL is required.');
|
||||
process.exit(1);
|
||||
},
|
||||
},
|
||||
)) as {gitRepoUrl: string};
|
||||
let strategy = cliOptions.gitStrategy;
|
||||
if (!strategy) {
|
||||
({strategy} = (await prompts(
|
||||
{
|
||||
type: 'select',
|
||||
name: 'strategy',
|
||||
message: 'How should we clone this repo?',
|
||||
choices: [
|
||||
{title: 'Deep clone: preserve full history', value: 'deep'},
|
||||
{title: 'Shallow clone: clone with --depth=1', value: 'shallow'},
|
||||
{
|
||||
title: 'Copy: do a shallow clone, but do not create a git repo',
|
||||
value: 'copy',
|
||||
},
|
||||
{
|
||||
title: 'Custom: enter your custom git clone command',
|
||||
value: 'custom',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
onCancel() {
|
||||
logger.info`Falling back to name=${'deep'}`;
|
||||
},
|
||||
},
|
||||
)) as {strategy?: GitStrategy});
|
||||
}
|
||||
return {
|
||||
type: 'git',
|
||||
url: gitRepoUrl,
|
||||
strategy: strategy ?? 'deep',
|
||||
};
|
||||
}
|
||||
|
||||
async function askLocalSource(): Promise<Source> {
|
||||
const {templateDir} = (await prompts(
|
||||
{
|
||||
type: 'text',
|
||||
name: 'templateDir',
|
||||
validate: async (dir?: string) => {
|
||||
if (dir) {
|
||||
const fullDir = path.resolve(dir);
|
||||
if (await fs.pathExists(fullDir)) {
|
||||
return true;
|
||||
}
|
||||
return logger.red(
|
||||
logger.interpolate`path=${fullDir} does not exist.`,
|
||||
);
|
||||
}
|
||||
return logger.red('Please enter a valid path.');
|
||||
},
|
||||
message:
|
||||
'Enter a local folder path, relative to the current working directory.',
|
||||
},
|
||||
{
|
||||
onCancel() {
|
||||
logger.error('A file path is required.');
|
||||
process.exit(1);
|
||||
},
|
||||
},
|
||||
)) as {templateDir: string};
|
||||
return {
|
||||
type: 'local',
|
||||
path: templateDir,
|
||||
};
|
||||
}
|
||||
|
||||
async function getSource(
|
||||
reqTemplate: string | undefined,
|
||||
templates: Template[],
|
||||
cliOptions: CLIOptions,
|
||||
): Promise<Source> {
|
||||
if (reqTemplate) {
|
||||
if (isValidGitRepoUrl(reqTemplate)) {
|
||||
if (
|
||||
cliOptions.gitStrategy &&
|
||||
!gitStrategies.includes(cliOptions.gitStrategy)
|
||||
) {
|
||||
logger.error`Invalid git strategy: name=${
|
||||
cliOptions.gitStrategy
|
||||
}. Value must be one of ${gitStrategies.join(', ')}.`;
|
||||
process.exit(1);
|
||||
}
|
||||
return {
|
||||
type: 'git',
|
||||
url: reqTemplate,
|
||||
strategy: cliOptions.gitStrategy ?? 'deep',
|
||||
};
|
||||
} else if (await fs.pathExists(path.resolve(reqTemplate))) {
|
||||
return {
|
||||
type: 'local',
|
||||
path: path.resolve(reqTemplate),
|
||||
};
|
||||
}
|
||||
const template = templates.find((t) => t.name === reqTemplate);
|
||||
if (!template) {
|
||||
logger.error('Invalid template.');
|
||||
process.exit(1);
|
||||
}
|
||||
if (cliOptions.typescript && !template.tsVariantPath) {
|
||||
logger.error`Template name=${reqTemplate} doesn't provide the TypeScript variant.`;
|
||||
process.exit(1);
|
||||
}
|
||||
return {
|
||||
type: 'template',
|
||||
template,
|
||||
typescript: cliOptions.typescript ?? false,
|
||||
};
|
||||
return getUserProvidedSource({reqTemplate, templates, cliOptions});
|
||||
}
|
||||
const template = cliOptions.gitStrategy
|
||||
? 'Git repository'
|
||||
: (
|
||||
(await prompts(
|
||||
{
|
||||
type: 'select',
|
||||
name: 'template',
|
||||
message: 'Select a template below...',
|
||||
choices: createTemplateChoices(templates),
|
||||
},
|
||||
{
|
||||
onCancel() {
|
||||
logger.error('A choice is required.');
|
||||
process.exit(1);
|
||||
},
|
||||
},
|
||||
)) as {template: Template | 'Git repository' | 'Local template'}
|
||||
).template;
|
||||
|
||||
const template = await askTemplateChoice({templates, cliOptions});
|
||||
if (template === 'Git repository') {
|
||||
const {gitRepoUrl} = (await prompts(
|
||||
{
|
||||
type: 'text',
|
||||
name: 'gitRepoUrl',
|
||||
validate: (url?: string) => {
|
||||
if (url && isValidGitRepoUrl(url)) {
|
||||
return true;
|
||||
}
|
||||
return logger.red('Invalid repository URL');
|
||||
},
|
||||
message: logger.interpolate`Enter a repository URL from GitHub, Bitbucket, GitLab, or any other public repo.
|
||||
(e.g: url=${'https://github.com/ownerName/repoName.git'})`,
|
||||
},
|
||||
{
|
||||
onCancel() {
|
||||
logger.error('A git repo URL is required.');
|
||||
process.exit(1);
|
||||
},
|
||||
},
|
||||
)) as {gitRepoUrl: string};
|
||||
let strategy = cliOptions.gitStrategy;
|
||||
if (!strategy) {
|
||||
({strategy} = (await prompts(
|
||||
{
|
||||
type: 'select',
|
||||
name: 'strategy',
|
||||
message: 'How should we clone this repo?',
|
||||
choices: [
|
||||
{title: 'Deep clone: preserve full history', value: 'deep'},
|
||||
{title: 'Shallow clone: clone with --depth=1', value: 'shallow'},
|
||||
{
|
||||
title: 'Copy: do a shallow clone, but do not create a git repo',
|
||||
value: 'copy',
|
||||
},
|
||||
{
|
||||
title: 'Custom: enter your custom git clone command',
|
||||
value: 'custom',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
onCancel() {
|
||||
logger.info`Falling back to name=${'deep'}`;
|
||||
},
|
||||
},
|
||||
)) as {strategy?: GitStrategy});
|
||||
}
|
||||
return {
|
||||
type: 'git',
|
||||
url: gitRepoUrl,
|
||||
strategy: strategy ?? 'deep',
|
||||
};
|
||||
} else if (template === 'Local template') {
|
||||
const {templateDir} = (await prompts(
|
||||
{
|
||||
type: 'text',
|
||||
name: 'templateDir',
|
||||
validate: async (dir?: string) => {
|
||||
if (dir) {
|
||||
const fullDir = path.resolve(dir);
|
||||
if (await fs.pathExists(fullDir)) {
|
||||
return true;
|
||||
}
|
||||
return logger.red(
|
||||
logger.interpolate`path=${fullDir} does not exist.`,
|
||||
);
|
||||
}
|
||||
return logger.red('Please enter a valid path.');
|
||||
},
|
||||
message:
|
||||
'Enter a local folder path, relative to the current working directory.',
|
||||
},
|
||||
{
|
||||
onCancel() {
|
||||
logger.error('A file path is required.');
|
||||
process.exit(1);
|
||||
},
|
||||
},
|
||||
)) as {templateDir: string};
|
||||
return {
|
||||
type: 'local',
|
||||
path: templateDir,
|
||||
};
|
||||
return askGitRepositorySource({cliOptions});
|
||||
}
|
||||
let useTS = cliOptions.typescript;
|
||||
if (!useTS && template.tsVariantPath) {
|
||||
({useTS} = (await prompts({
|
||||
type: 'confirm',
|
||||
name: 'useTS',
|
||||
message:
|
||||
'This template is available in TypeScript. Do you want to use the TS variant?',
|
||||
initial: false,
|
||||
})) as {useTS?: boolean});
|
||||
if (template === 'Local template') {
|
||||
return askLocalSource();
|
||||
}
|
||||
return {
|
||||
type: 'template',
|
||||
return createTemplateSource({
|
||||
template,
|
||||
typescript: useTS ?? false,
|
||||
};
|
||||
cliOptions,
|
||||
});
|
||||
}
|
||||
|
||||
async function updatePkg(pkgPath: string, obj: {[key: string]: unknown}) {
|
||||
|
|
@ -452,6 +523,7 @@ export default async function init(
|
|||
getSiteName(reqName, rootDir),
|
||||
]);
|
||||
const dest = path.resolve(rootDir, siteName);
|
||||
|
||||
const source = await getSource(reqTemplate, templates, cliOptions);
|
||||
|
||||
logger.info('Creating new Docusaurus project...');
|
||||
|
|
@ -470,7 +542,7 @@ export default async function init(
|
|||
}
|
||||
} else if (source.type === 'template') {
|
||||
try {
|
||||
await copyTemplate(source.template, dest, source.typescript);
|
||||
await copyTemplate(source.template, dest, source.language);
|
||||
} catch (err) {
|
||||
logger.error`Copying Docusaurus template name=${source.template.name} failed!`;
|
||||
throw err;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "docusaurus-2-classic-typescript-template",
|
||||
"version": "3.0.0-rc.1",
|
||||
"version": "3.2.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"docusaurus": "docusaurus",
|
||||
|
|
@ -15,18 +15,18 @@
|
|||
"typecheck": "tsc"
|
||||
},
|
||||
"dependencies": {
|
||||
"@docusaurus/core": "3.0.0-rc.1",
|
||||
"@docusaurus/preset-classic": "3.0.0-rc.1",
|
||||
"@docusaurus/core": "3.2.0",
|
||||
"@docusaurus/preset-classic": "3.2.0",
|
||||
"@mdx-js/react": "^3.0.0",
|
||||
"clsx": "^1.2.1",
|
||||
"prism-react-renderer": "^2.1.0",
|
||||
"clsx": "^2.0.0",
|
||||
"prism-react-renderer": "^2.3.0",
|
||||
"react": "^18.0.0",
|
||||
"react-dom": "^18.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@docusaurus/module-type-aliases": "3.0.0-rc.1",
|
||||
"@docusaurus/tsconfig": "3.0.0-rc.1",
|
||||
"@docusaurus/types": "3.0.0-rc.1",
|
||||
"@docusaurus/module-type-aliases": "3.2.0",
|
||||
"@docusaurus/tsconfig": "3.2.0",
|
||||
"@docusaurus/types": "3.2.0",
|
||||
"typescript": "~5.2.2"
|
||||
},
|
||||
"browserslist": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "docusaurus-2-classic-template",
|
||||
"version": "3.0.0-rc.1",
|
||||
"version": "3.2.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"docusaurus": "docusaurus",
|
||||
|
|
@ -14,17 +14,17 @@
|
|||
"write-heading-ids": "docusaurus write-heading-ids"
|
||||
},
|
||||
"dependencies": {
|
||||
"@docusaurus/core": "3.0.0-rc.1",
|
||||
"@docusaurus/preset-classic": "3.0.0-rc.1",
|
||||
"@docusaurus/core": "3.2.0",
|
||||
"@docusaurus/preset-classic": "3.2.0",
|
||||
"@mdx-js/react": "^3.0.0",
|
||||
"clsx": "^1.2.1",
|
||||
"prism-react-renderer": "^2.1.0",
|
||||
"clsx": "^2.0.0",
|
||||
"prism-react-renderer": "^2.3.0",
|
||||
"react": "^18.0.0",
|
||||
"react-dom": "^18.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@docusaurus/module-type-aliases": "3.0.0-rc.1",
|
||||
"@docusaurus/types": "3.0.0-rc.1"
|
||||
"@docusaurus/module-type-aliases": "3.2.0",
|
||||
"@docusaurus/types": "3.2.0"
|
||||
},
|
||||
"browserslist": {
|
||||
"production": [
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Website
|
||||
|
||||
This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.
|
||||
This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator.
|
||||
|
||||
### Installation
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ tags: [greetings]
|
|||
|
||||
Congratulations, you have made your first post!
|
||||
|
||||
Feel free to play around and edit this post as much you like.
|
||||
Feel free to play around and edit this post as much as you like.
|
||||
```
|
||||
|
||||
A new blog post is now available at [http://localhost:3000/blog/greetings](http://localhost:3000/blog/greetings).
|
||||
|
|
|
|||
|
|
@ -61,13 +61,13 @@ You can reference images relative to the current file as well. This is particula
|
|||
|
||||
Markdown code blocks are supported with Syntax highlighting.
|
||||
|
||||
```jsx title="src/components/HelloDocusaurus.js"
|
||||
function HelloDocusaurus() {
|
||||
return (
|
||||
<h1>Hello, Docusaurus!</h1>
|
||||
)
|
||||
}
|
||||
```
|
||||
````md
|
||||
```jsx title="src/components/HelloDocusaurus.js"
|
||||
function HelloDocusaurus() {
|
||||
return <h1>Hello, Docusaurus!</h1>;
|
||||
}
|
||||
```
|
||||
````
|
||||
|
||||
```jsx title="src/components/HelloDocusaurus.js"
|
||||
function HelloDocusaurus() {
|
||||
|
|
@ -79,17 +79,19 @@ function HelloDocusaurus() {
|
|||
|
||||
Docusaurus has a special syntax to create admonitions and callouts:
|
||||
|
||||
:::tip My tip
|
||||
```md
|
||||
:::tip My tip
|
||||
|
||||
Use this awesome feature option
|
||||
Use this awesome feature option
|
||||
|
||||
:::
|
||||
:::
|
||||
|
||||
:::danger Take care
|
||||
:::danger Take care
|
||||
|
||||
This action is dangerous
|
||||
This action is dangerous
|
||||
|
||||
:::
|
||||
:::
|
||||
```
|
||||
|
||||
:::tip My tip
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@docusaurus/cssnano-preset",
|
||||
"version": "3.0.0-rc.1",
|
||||
"version": "3.2.0",
|
||||
"description": "Advanced cssnano preset for maximum optimization.",
|
||||
"main": "lib/index.js",
|
||||
"license": "MIT",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@docusaurus/logger",
|
||||
"version": "3.0.0-rc.1",
|
||||
"version": "3.2.0",
|
||||
"description": "An encapsulated logger for semantically formatting console messages.",
|
||||
"main": "./lib/index.js",
|
||||
"repository": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@docusaurus/mdx-loader",
|
||||
"version": "3.0.0-rc.1",
|
||||
"version": "3.2.0",
|
||||
"description": "Docusaurus Loader for MDX",
|
||||
"main": "lib/index.js",
|
||||
"types": "lib/index.d.ts",
|
||||
|
|
@ -18,11 +18,9 @@
|
|||
},
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.22.7",
|
||||
"@babel/traverse": "^7.22.8",
|
||||
"@docusaurus/logger": "3.0.0-rc.1",
|
||||
"@docusaurus/utils": "3.0.0-rc.1",
|
||||
"@docusaurus/utils-validation": "3.0.0-rc.1",
|
||||
"@docusaurus/logger": "3.2.0",
|
||||
"@docusaurus/utils": "3.2.0",
|
||||
"@docusaurus/utils-validation": "3.2.0",
|
||||
"@mdx-js/mdx": "^3.0.0",
|
||||
"@slorber/remark-comment": "^1.0.0",
|
||||
"escape-html": "^1.0.3",
|
||||
|
|
@ -46,7 +44,7 @@
|
|||
"webpack": "^5.88.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@docusaurus/types": "3.0.0-rc.1",
|
||||
"@docusaurus/types": "3.2.0",
|
||||
"@types/escape-html": "^1.0.2",
|
||||
"@types/mdast": "^4.0.2",
|
||||
"@types/stringify-object": "^3.3.1",
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
import {mdxLoader} from './loader';
|
||||
|
||||
import type {TOCItem as TOCItemImported} from './remark/toc';
|
||||
import type {TOCItem as TOCItemImported} from './remark/toc/types';
|
||||
|
||||
export default mdxLoader;
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
import fs from 'fs-extra';
|
||||
import logger from '@docusaurus/logger';
|
||||
import {
|
||||
parseFrontMatter,
|
||||
DEFAULT_PARSE_FRONT_MATTER,
|
||||
escapePath,
|
||||
getFileLoaderUtils,
|
||||
getWebpackLoaderCompilerName,
|
||||
|
|
@ -133,7 +133,7 @@ function extractContentTitleData(data: {
|
|||
|
||||
export async function mdxLoader(
|
||||
this: LoaderContext<Options>,
|
||||
fileString: string,
|
||||
fileContent: string,
|
||||
): Promise<void> {
|
||||
const compilerName = getWebpackLoaderCompilerName(this);
|
||||
const callback = this.async();
|
||||
|
|
@ -143,11 +143,15 @@ export async function mdxLoader(
|
|||
|
||||
ensureMarkdownConfig(reqOptions);
|
||||
|
||||
const {frontMatter} = parseFrontMatter(fileString);
|
||||
const {frontMatter} = await reqOptions.markdownConfig.parseFrontMatter({
|
||||
filePath,
|
||||
fileContent,
|
||||
defaultParseFrontMatter: DEFAULT_PARSE_FRONT_MATTER,
|
||||
});
|
||||
const mdxFrontMatter = validateMDXFrontMatter(frontMatter.mdx);
|
||||
|
||||
const preprocessedContent = preprocessor({
|
||||
fileContent: fileString,
|
||||
fileContent,
|
||||
filePath,
|
||||
admonitions: reqOptions.admonitions,
|
||||
markdownConfig: reqOptions.markdownConfig,
|
||||
|
|
|
|||
|
|
@ -165,6 +165,7 @@ async function createProcessorFactory() {
|
|||
|
||||
const mdxProcessor = createMdxProcessor({
|
||||
...processorOptions,
|
||||
remarkRehypeOptions: options.markdownConfig.remarkRehypeOptions,
|
||||
format,
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -71,6 +71,21 @@ some **markdown** *content*
|
|||
expect(result.data.contentTitle).toBeUndefined();
|
||||
});
|
||||
|
||||
it('ignore contentTitle if after thematic break', async () => {
|
||||
const result = await process(`
|
||||
|
||||
Hey
|
||||
|
||||
---
|
||||
|
||||
# contentTitle 1
|
||||
|
||||
some **markdown** *content*
|
||||
`);
|
||||
|
||||
expect(result.data.contentTitle).toBeUndefined();
|
||||
});
|
||||
|
||||
it('is able to decently serialize Markdown syntax', async () => {
|
||||
const result = await process(`
|
||||
# some **markdown** \`content\` _italic_
|
||||
|
|
|
|||
|
|
@ -34,17 +34,24 @@ const plugin: Plugin = function plugin(
|
|||
const {toString} = await import('mdast-util-to-string');
|
||||
const {visit, EXIT} = await import('unist-util-visit');
|
||||
|
||||
visit(root, 'heading', (headingNode: Heading, index, parent) => {
|
||||
if (headingNode.depth === 1) {
|
||||
vfile.data.contentTitle = toString(headingNode);
|
||||
if (removeContentTitle) {
|
||||
// @ts-expect-error: TODO how to fix?
|
||||
parent!.children.splice(index, 1);
|
||||
visit(root, ['heading', 'thematicBreak'], (node, index, parent) => {
|
||||
if (node.type === 'heading') {
|
||||
const headingNode = node as Heading;
|
||||
if (headingNode.depth === 1) {
|
||||
vfile.data.contentTitle = toString(headingNode);
|
||||
if (removeContentTitle) {
|
||||
// @ts-expect-error: TODO how to fix?
|
||||
parent!.children.splice(index, 1);
|
||||
}
|
||||
return EXIT; // We only handle the very first heading
|
||||
}
|
||||
// We only handle contentTitle if it's the very first heading found
|
||||
if (headingNode.depth >= 1) {
|
||||
return EXIT;
|
||||
}
|
||||
return EXIT; // We only handle the very first heading
|
||||
}
|
||||
// We only handle contentTitle if it's the very first heading found
|
||||
if (headingNode.depth >= 1) {
|
||||
// We only handle contentTitle when it's above the first thematic break
|
||||
if (node.type === 'thematicBreak') {
|
||||
return EXIT;
|
||||
}
|
||||
return undefined;
|
||||
|
|
|
|||
5
packages/docusaurus-mdx-loader/src/remark/toc/__tests__/__fixtures__/partials/SomeComponent.js
generated
Normal file
5
packages/docusaurus-mdx-loader/src/remark/toc/__tests__/__fixtures__/partials/SomeComponent.js
generated
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
import React from 'react';
|
||||
|
||||
export default function SomeComponent() {
|
||||
return <div>Some component</div>;
|
||||
}
|
||||
7
packages/docusaurus-mdx-loader/src/remark/toc/__tests__/__fixtures__/partials/_partial1.md
generated
Normal file
7
packages/docusaurus-mdx-loader/src/remark/toc/__tests__/__fixtures__/partials/_partial1.md
generated
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
## Partial 1
|
||||
|
||||
Partial 1
|
||||
|
||||
### Partial 1 Sub Heading
|
||||
|
||||
Content
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
## Partial 2 Nested
|
||||
|
||||
Partial 2 Nested
|
||||
11
packages/docusaurus-mdx-loader/src/remark/toc/__tests__/__fixtures__/partials/_partial2.mdx
generated
Normal file
11
packages/docusaurus-mdx-loader/src/remark/toc/__tests__/__fixtures__/partials/_partial2.mdx
generated
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
## Partial 2
|
||||
|
||||
Partial 2
|
||||
|
||||
### Partial 2 Sub Heading
|
||||
|
||||
Content
|
||||
|
||||
import Partial2Nested from './partial2-nested.md';
|
||||
|
||||
<Partial2Nested />
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
## Partial 3
|
||||
|
||||
Partial 3
|
||||
|
||||
### Partial 3 Sub Heading
|
||||
|
||||
Content
|
||||
49
packages/docusaurus-mdx-loader/src/remark/toc/__tests__/__fixtures__/partials/index.mdx
generated
Normal file
49
packages/docusaurus-mdx-loader/src/remark/toc/__tests__/__fixtures__/partials/index.mdx
generated
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
import Partial1 from './_partial1.md';
|
||||
|
||||
import SomeComponent from './SomeComponent';
|
||||
|
||||
# Index
|
||||
|
||||
Some text
|
||||
|
||||
import Partial2 from './_partial2.md';
|
||||
|
||||
## Index section 1
|
||||
|
||||
Foo
|
||||
|
||||
<Partial1 />
|
||||
|
||||
Some text
|
||||
|
||||
<SomeComponent />
|
||||
|
||||
## Index section 2
|
||||
|
||||
<Partial2 />
|
||||
|
||||
## Unused partials
|
||||
|
||||
Unused partials (that are only imported but not rendered) shouldn't alter the TOC
|
||||
|
||||
import UnusedPartialImport from './_partial3.md';
|
||||
|
||||
## NonExisting Partials
|
||||
|
||||
Partials that do not exist should alter the TOC
|
||||
|
||||
It's not the responsibility of the Remark plugin to check for their existence
|
||||
|
||||
import DoesNotExist from './_doesNotExist.md';
|
||||
|
||||
<DoesNotExist />
|
||||
|
||||
## Duplicate partials
|
||||
|
||||
It's fine if we use partials at the end
|
||||
|
||||
<Partial1 />
|
||||
|
||||
And we can use the partial multiple times!
|
||||
|
||||
<Partial1 />
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
# Partial used before import
|
||||
|
||||
While it looks weird to import after usage, this remains valid MDX usage.
|
||||
|
||||
<Partial />
|
||||
|
||||
import Partial from './_partial.md';
|
||||
|
|
@ -1,238 +1,601 @@
|
|||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`toc remark plugin does not overwrite TOC var if no TOC 1`] = `
|
||||
"foo
|
||||
|
||||
\`bar\`
|
||||
|
||||
\`\`\`js
|
||||
baz
|
||||
\`\`\`
|
||||
|
||||
"import {Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs} from "react/jsx-runtime";
|
||||
export const toc = 1;
|
||||
function _createMdxContent(props) {
|
||||
const _components = {
|
||||
code: "code",
|
||||
p: "p",
|
||||
pre: "pre",
|
||||
...props.components
|
||||
};
|
||||
return _jsxs(_Fragment, {
|
||||
children: [_jsx(_components.p, {
|
||||
children: "foo"
|
||||
}), "/n", _jsx(_components.p, {
|
||||
children: _jsx(_components.code, {
|
||||
children: "bar"
|
||||
})
|
||||
}), "/n", _jsx(_components.pre, {
|
||||
children: _jsx(_components.code, {
|
||||
className: "language-js",
|
||||
children: "baz/n"
|
||||
})
|
||||
})]
|
||||
});
|
||||
}
|
||||
export default function MDXContent(props = {}) {
|
||||
const {wrapper: MDXLayout} = props.components || ({});
|
||||
return MDXLayout ? _jsx(MDXLayout, {
|
||||
...props,
|
||||
children: _jsx(_createMdxContent, {
|
||||
...props
|
||||
})
|
||||
}) : _createMdxContent(props);
|
||||
}
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`toc remark plugin escapes inline code 1`] = `
|
||||
"export const toc = [
|
||||
{
|
||||
value: '<code><Head /></code>',
|
||||
id: 'head-',
|
||||
level: 2
|
||||
},
|
||||
{
|
||||
value: '<code><Head>Test</Head></code>',
|
||||
id: 'headtesthead',
|
||||
level: 3
|
||||
},
|
||||
{
|
||||
value: '<code><div /></code>',
|
||||
id: 'div-',
|
||||
level: 2
|
||||
},
|
||||
{
|
||||
value: '<code><div> Test </div></code>',
|
||||
id: 'div-test-div',
|
||||
level: 2
|
||||
},
|
||||
{
|
||||
value: '<code><div><i>Test</i></div></code>',
|
||||
id: 'divitestidiv',
|
||||
level: 2
|
||||
},
|
||||
{
|
||||
value: '<code><div><i>Test</i></div></code>',
|
||||
id: 'divitestidiv-1',
|
||||
level: 2
|
||||
}
|
||||
]
|
||||
|
||||
## \`<Head />\`
|
||||
|
||||
### \`<Head>Test</Head>\`
|
||||
|
||||
## \`<div />\`
|
||||
|
||||
## \`<div> Test </div>\`
|
||||
|
||||
## \`<div><i>Test</i></div>\`
|
||||
|
||||
## [\`<div><i>Test</i></div>\`](/some/link)
|
||||
"import {Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs} from "react/jsx-runtime";
|
||||
export const toc = [{
|
||||
"value": "<code><Head /></code>",
|
||||
"id": "head-",
|
||||
"level": 2
|
||||
}, {
|
||||
"value": "<code><Head>Test</Head></code>",
|
||||
"id": "headtesthead",
|
||||
"level": 3
|
||||
}, {
|
||||
"value": "<code><div /></code>",
|
||||
"id": "div-",
|
||||
"level": 2
|
||||
}, {
|
||||
"value": "<code><div> Test </div></code>",
|
||||
"id": "div-test-div",
|
||||
"level": 2
|
||||
}, {
|
||||
"value": "<code><div><i>Test</i></div></code>",
|
||||
"id": "divitestidiv",
|
||||
"level": 2
|
||||
}, {
|
||||
"value": "<code><div><i>Test</i></div></code>",
|
||||
"id": "divitestidiv-1",
|
||||
"level": 2
|
||||
}];
|
||||
function _createMdxContent(props) {
|
||||
const _components = {
|
||||
a: "a",
|
||||
code: "code",
|
||||
h2: "h2",
|
||||
h3: "h3",
|
||||
...props.components
|
||||
};
|
||||
return _jsxs(_Fragment, {
|
||||
children: [_jsx(_components.h2, {
|
||||
id: "head-",
|
||||
children: _jsx(_components.code, {
|
||||
children: "<Head />"
|
||||
})
|
||||
}), "/n", _jsx(_components.h3, {
|
||||
id: "headtesthead",
|
||||
children: _jsx(_components.code, {
|
||||
children: "<Head>Test</Head>"
|
||||
})
|
||||
}), "/n", _jsx(_components.h2, {
|
||||
id: "div-",
|
||||
children: _jsx(_components.code, {
|
||||
children: "<div />"
|
||||
})
|
||||
}), "/n", _jsx(_components.h2, {
|
||||
id: "div-test-div",
|
||||
children: _jsx(_components.code, {
|
||||
children: "<div> Test </div>"
|
||||
})
|
||||
}), "/n", _jsx(_components.h2, {
|
||||
id: "divitestidiv",
|
||||
children: _jsx(_components.code, {
|
||||
children: "<div><i>Test</i></div>"
|
||||
})
|
||||
}), "/n", _jsx(_components.h2, {
|
||||
id: "divitestidiv-1",
|
||||
children: _jsx(_components.a, {
|
||||
href: "/some/link",
|
||||
children: _jsx(_components.code, {
|
||||
children: "<div><i>Test</i></div>"
|
||||
})
|
||||
})
|
||||
})]
|
||||
});
|
||||
}
|
||||
export default function MDXContent(props = {}) {
|
||||
const {wrapper: MDXLayout} = props.components || ({});
|
||||
return MDXLayout ? _jsx(MDXLayout, {
|
||||
...props,
|
||||
children: _jsx(_createMdxContent, {
|
||||
...props
|
||||
})
|
||||
}) : _createMdxContent(props);
|
||||
}
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`toc remark plugin exports even with existing name 1`] = `
|
||||
"export const toc = [
|
||||
{
|
||||
value: 'Thanos',
|
||||
id: 'thanos',
|
||||
level: 2
|
||||
},
|
||||
{
|
||||
value: 'Tony Stark',
|
||||
id: 'tony-stark',
|
||||
level: 2
|
||||
},
|
||||
{
|
||||
value: 'Avengers',
|
||||
id: 'avengers',
|
||||
level: 3
|
||||
}
|
||||
]
|
||||
|
||||
## Thanos
|
||||
|
||||
## Tony Stark
|
||||
|
||||
### Avengers
|
||||
"import {Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs} from "react/jsx-runtime";
|
||||
export const toc = ['replaceMe'];
|
||||
function _createMdxContent(props) {
|
||||
const _components = {
|
||||
h2: "h2",
|
||||
h3: "h3",
|
||||
...props.components
|
||||
};
|
||||
return _jsxs(_Fragment, {
|
||||
children: [_jsx(_components.h2, {
|
||||
id: "thanos",
|
||||
children: "Thanos"
|
||||
}), "/n", _jsx(_components.h2, {
|
||||
id: "tony-stark",
|
||||
children: "Tony Stark"
|
||||
}), "/n", _jsx(_components.h3, {
|
||||
id: "avengers",
|
||||
children: "Avengers"
|
||||
})]
|
||||
});
|
||||
}
|
||||
export default function MDXContent(props = {}) {
|
||||
const {wrapper: MDXLayout} = props.components || ({});
|
||||
return MDXLayout ? _jsx(MDXLayout, {
|
||||
...props,
|
||||
children: _jsx(_createMdxContent, {
|
||||
...props
|
||||
})
|
||||
}) : _createMdxContent(props);
|
||||
}
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`toc remark plugin handles empty headings 1`] = `
|
||||
"export const toc = []
|
||||
|
||||
# Ignore this
|
||||
|
||||
##
|
||||
|
||||
## 
|
||||
"import {Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs} from "react/jsx-runtime";
|
||||
export const toc = [];
|
||||
function _createMdxContent(props) {
|
||||
const _components = {
|
||||
h1: "h1",
|
||||
h2: "h2",
|
||||
img: "img",
|
||||
...props.components
|
||||
};
|
||||
return _jsxs(_Fragment, {
|
||||
children: [_jsx(_components.h1, {
|
||||
id: "ignore-this",
|
||||
children: "Ignore this"
|
||||
}), "/n", _jsx(_components.h2, {
|
||||
id: ""
|
||||
}), "/n", _jsx(_components.h2, {
|
||||
id: "-1",
|
||||
children: _jsx(_components.img, {
|
||||
src: "an-image.svg",
|
||||
alt: ""
|
||||
})
|
||||
})]
|
||||
});
|
||||
}
|
||||
export default function MDXContent(props = {}) {
|
||||
const {wrapper: MDXLayout} = props.components || ({});
|
||||
return MDXLayout ? _jsx(MDXLayout, {
|
||||
...props,
|
||||
children: _jsx(_createMdxContent, {
|
||||
...props
|
||||
})
|
||||
}) : _createMdxContent(props);
|
||||
}
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`toc remark plugin inserts below imports 1`] = `
|
||||
"import something from 'something';
|
||||
|
||||
"import {Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs} from "react/jsx-runtime";
|
||||
import something from 'something';
|
||||
import somethingElse from 'something-else';
|
||||
|
||||
export const toc = [
|
||||
{
|
||||
value: 'Title',
|
||||
id: 'title',
|
||||
level: 2
|
||||
},
|
||||
{
|
||||
value: 'Test',
|
||||
id: 'test',
|
||||
level: 2
|
||||
},
|
||||
{
|
||||
value: 'Again',
|
||||
id: 'again',
|
||||
level: 3
|
||||
}
|
||||
]
|
||||
|
||||
## Title
|
||||
|
||||
## Test
|
||||
|
||||
### Again
|
||||
|
||||
Content.
|
||||
export const toc = [{
|
||||
"value": "Title",
|
||||
"id": "title",
|
||||
"level": 2
|
||||
}, {
|
||||
"value": "Test",
|
||||
"id": "test",
|
||||
"level": 2
|
||||
}, {
|
||||
"value": "Again",
|
||||
"id": "again",
|
||||
"level": 3
|
||||
}];
|
||||
function _createMdxContent(props) {
|
||||
const _components = {
|
||||
h2: "h2",
|
||||
h3: "h3",
|
||||
p: "p",
|
||||
...props.components
|
||||
};
|
||||
return _jsxs(_Fragment, {
|
||||
children: [_jsx(_components.h2, {
|
||||
id: "title",
|
||||
children: "Title"
|
||||
}), "/n", _jsx(_components.h2, {
|
||||
id: "test",
|
||||
children: "Test"
|
||||
}), "/n", _jsx(_components.h3, {
|
||||
id: "again",
|
||||
children: "Again"
|
||||
}), "/n", _jsx(_components.p, {
|
||||
children: "Content."
|
||||
})]
|
||||
});
|
||||
}
|
||||
export default function MDXContent(props = {}) {
|
||||
const {wrapper: MDXLayout} = props.components || ({});
|
||||
return MDXLayout ? _jsx(MDXLayout, {
|
||||
...props,
|
||||
children: _jsx(_createMdxContent, {
|
||||
...props
|
||||
})
|
||||
}) : _createMdxContent(props);
|
||||
}
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`toc remark plugin outputs empty array for no TOC 1`] = `
|
||||
"export const toc = []
|
||||
|
||||
foo
|
||||
|
||||
\`bar\`
|
||||
|
||||
\`\`\`js
|
||||
baz
|
||||
\`\`\`
|
||||
"import {Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs} from "react/jsx-runtime";
|
||||
export const toc = [];
|
||||
function _createMdxContent(props) {
|
||||
const _components = {
|
||||
code: "code",
|
||||
p: "p",
|
||||
pre: "pre",
|
||||
...props.components
|
||||
};
|
||||
return _jsxs(_Fragment, {
|
||||
children: [_jsx(_components.p, {
|
||||
children: "foo"
|
||||
}), "/n", _jsx(_components.p, {
|
||||
children: _jsx(_components.code, {
|
||||
children: "bar"
|
||||
})
|
||||
}), "/n", _jsx(_components.pre, {
|
||||
children: _jsx(_components.code, {
|
||||
className: "language-js",
|
||||
children: "baz/n"
|
||||
})
|
||||
})]
|
||||
});
|
||||
}
|
||||
export default function MDXContent(props = {}) {
|
||||
const {wrapper: MDXLayout} = props.components || ({});
|
||||
return MDXLayout ? _jsx(MDXLayout, {
|
||||
...props,
|
||||
children: _jsx(_createMdxContent, {
|
||||
...props
|
||||
})
|
||||
}) : _createMdxContent(props);
|
||||
}
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`toc remark plugin works on non text phrasing content 1`] = `
|
||||
"export const toc = [
|
||||
{
|
||||
value: '<em>Emphasis</em>',
|
||||
id: 'emphasis',
|
||||
level: 2
|
||||
},
|
||||
{
|
||||
value: '<strong>Importance</strong>',
|
||||
id: 'importance',
|
||||
level: 3
|
||||
},
|
||||
{
|
||||
value: '<del>Strikethrough</del>',
|
||||
id: 'strikethrough',
|
||||
level: 2
|
||||
},
|
||||
{
|
||||
value: '<i>HTML</i>',
|
||||
id: 'html',
|
||||
level: 2
|
||||
},
|
||||
{
|
||||
value: '<code>inline.code()</code>',
|
||||
id: 'inlinecode',
|
||||
level: 2
|
||||
},
|
||||
{
|
||||
value: 'some <span class="some-class">styled</span> <strong>heading</strong> <span class="myClassName <> weird char"></span> test',
|
||||
id: 'some-styled-heading--test',
|
||||
level: 2
|
||||
}
|
||||
]
|
||||
|
||||
## *Emphasis*
|
||||
|
||||
### **Importance**
|
||||
|
||||
## ~~Strikethrough~~
|
||||
|
||||
## <i>HTML</i>
|
||||
|
||||
## \`inline.code()\`
|
||||
|
||||
## some <span className="some-class" style={{border: "solid"}}>styled</span> <strong>heading</strong> <span class="myClass" className="myClassName <> weird char" data-random-attr="456" /> test
|
||||
"import {Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs} from "react/jsx-runtime";
|
||||
export const toc = [{
|
||||
"value": "<em>Emphasis</em>",
|
||||
"id": "emphasis",
|
||||
"level": 2
|
||||
}, {
|
||||
"value": "<strong>Importance</strong>",
|
||||
"id": "importance",
|
||||
"level": 3
|
||||
}, {
|
||||
"value": "<del>Strikethrough</del>",
|
||||
"id": "strikethrough",
|
||||
"level": 2
|
||||
}, {
|
||||
"value": "<i>HTML</i>",
|
||||
"id": "html",
|
||||
"level": 2
|
||||
}, {
|
||||
"value": "<code>inline.code()</code>",
|
||||
"id": "inlinecode",
|
||||
"level": 2
|
||||
}, {
|
||||
"value": "some <span class=\\"some-class\\">styled</span> <strong>heading</strong> <span class=\\"myClassName <> weird char\\"></span> test",
|
||||
"id": "some-styled-heading--test",
|
||||
"level": 2
|
||||
}];
|
||||
function _createMdxContent(props) {
|
||||
const _components = {
|
||||
code: "code",
|
||||
del: "del",
|
||||
em: "em",
|
||||
h2: "h2",
|
||||
h3: "h3",
|
||||
strong: "strong",
|
||||
...props.components
|
||||
};
|
||||
return _jsxs(_Fragment, {
|
||||
children: [_jsx(_components.h2, {
|
||||
id: "emphasis",
|
||||
children: _jsx(_components.em, {
|
||||
children: "Emphasis"
|
||||
})
|
||||
}), "/n", _jsx(_components.h3, {
|
||||
id: "importance",
|
||||
children: _jsx(_components.strong, {
|
||||
children: "Importance"
|
||||
})
|
||||
}), "/n", _jsx(_components.h2, {
|
||||
id: "strikethrough",
|
||||
children: _jsx(_components.del, {
|
||||
children: "Strikethrough"
|
||||
})
|
||||
}), "/n", _jsx(_components.h2, {
|
||||
id: "html",
|
||||
children: _jsx("i", {
|
||||
children: "HTML"
|
||||
})
|
||||
}), "/n", _jsx(_components.h2, {
|
||||
id: "inlinecode",
|
||||
children: _jsx(_components.code, {
|
||||
children: "inline.code()"
|
||||
})
|
||||
}), "/n", _jsxs(_components.h2, {
|
||||
id: "some-styled-heading--test",
|
||||
children: ["some ", _jsx("span", {
|
||||
className: "some-class",
|
||||
style: {
|
||||
border: "solid"
|
||||
},
|
||||
children: "styled"
|
||||
}), " ", _jsx("strong", {
|
||||
children: "heading"
|
||||
}), " ", _jsx("span", {
|
||||
class: "myClass",
|
||||
className: "myClassName <> weird char",
|
||||
"data-random-attr": "456"
|
||||
}), " test"]
|
||||
})]
|
||||
});
|
||||
}
|
||||
export default function MDXContent(props = {}) {
|
||||
const {wrapper: MDXLayout} = props.components || ({});
|
||||
return MDXLayout ? _jsx(MDXLayout, {
|
||||
...props,
|
||||
children: _jsx(_createMdxContent, {
|
||||
...props
|
||||
})
|
||||
}) : _createMdxContent(props);
|
||||
}
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`toc remark plugin works on text content 1`] = `
|
||||
"export const toc = [
|
||||
{
|
||||
value: 'Endi',
|
||||
id: 'endi',
|
||||
level: 3
|
||||
},
|
||||
{
|
||||
value: 'Endi',
|
||||
id: 'endi-1',
|
||||
level: 2
|
||||
},
|
||||
{
|
||||
value: 'Yangshun',
|
||||
id: 'yangshun',
|
||||
level: 3
|
||||
},
|
||||
{
|
||||
value: 'I ♥ unicode.',
|
||||
id: 'i--unicode',
|
||||
level: 2
|
||||
}
|
||||
]
|
||||
|
||||
### Endi
|
||||
|
||||
\`\`\`md
|
||||
## This is ignored
|
||||
\`\`\`
|
||||
|
||||
## Endi
|
||||
|
||||
Lorem ipsum
|
||||
|
||||
### Yangshun
|
||||
|
||||
Some content here
|
||||
|
||||
## I ♥ unicode.
|
||||
|
||||
"import {Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs} from "react/jsx-runtime";
|
||||
export const c = 1;
|
||||
export const toc = [{
|
||||
"value": "Endi",
|
||||
"id": "endi",
|
||||
"level": 3
|
||||
}, {
|
||||
"value": "Endi",
|
||||
"id": "endi-1",
|
||||
"level": 2
|
||||
}, {
|
||||
"value": "Yangshun",
|
||||
"id": "yangshun",
|
||||
"level": 3
|
||||
}, {
|
||||
"value": "I ♥ unicode.",
|
||||
"id": "i--unicode",
|
||||
"level": 2
|
||||
}];
|
||||
function _createMdxContent(props) {
|
||||
const _components = {
|
||||
code: "code",
|
||||
h2: "h2",
|
||||
h3: "h3",
|
||||
p: "p",
|
||||
pre: "pre",
|
||||
...props.components
|
||||
};
|
||||
return _jsxs(_Fragment, {
|
||||
children: [_jsx(_components.h3, {
|
||||
id: "endi",
|
||||
children: "Endi"
|
||||
}), "/n", _jsx(_components.pre, {
|
||||
children: _jsx(_components.code, {
|
||||
className: "language-md",
|
||||
children: "## This is ignored/n"
|
||||
})
|
||||
}), "/n", _jsx(_components.h2, {
|
||||
id: "endi-1",
|
||||
children: "Endi"
|
||||
}), "/n", _jsx(_components.p, {
|
||||
children: "Lorem ipsum"
|
||||
}), "/n", _jsx(_components.h3, {
|
||||
id: "yangshun",
|
||||
children: "Yangshun"
|
||||
}), "/n", _jsx(_components.p, {
|
||||
children: "Some content here"
|
||||
}), "/n", _jsx(_components.h2, {
|
||||
id: "i--unicode",
|
||||
children: "I ♥ unicode."
|
||||
})]
|
||||
});
|
||||
}
|
||||
export default function MDXContent(props = {}) {
|
||||
const {wrapper: MDXLayout} = props.components || ({});
|
||||
return MDXLayout ? _jsx(MDXLayout, {
|
||||
...props,
|
||||
children: _jsx(_createMdxContent, {
|
||||
...props
|
||||
})
|
||||
}) : _createMdxContent(props);
|
||||
}
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`toc remark plugin works with imported markdown 1`] = `
|
||||
"import {Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs} from "react/jsx-runtime";
|
||||
import Partial1, {toc as __tocPartial1} from './_partial1.md';
|
||||
import SomeComponent from './SomeComponent';
|
||||
import Partial2, {toc as __tocPartial2} from './_partial2.md';
|
||||
import UnusedPartialImport from './_partial3.md';
|
||||
import DoesNotExist, {toc as __tocDoesNotExist} from './_doesNotExist.md';
|
||||
export const toc = [{
|
||||
"value": "Index section 1",
|
||||
"id": "index-section-1",
|
||||
"level": 2
|
||||
}, ...__tocPartial1, {
|
||||
"value": "Index section 2",
|
||||
"id": "index-section-2",
|
||||
"level": 2
|
||||
}, ...__tocPartial2, {
|
||||
"value": "Unused partials",
|
||||
"id": "unused-partials",
|
||||
"level": 2
|
||||
}, {
|
||||
"value": "NonExisting Partials",
|
||||
"id": "nonexisting-partials",
|
||||
"level": 2
|
||||
}, ...__tocDoesNotExist, {
|
||||
"value": "Duplicate partials",
|
||||
"id": "duplicate-partials",
|
||||
"level": 2
|
||||
}, ...__tocPartial1, ...__tocPartial1];
|
||||
function _createMdxContent(props) {
|
||||
const _components = {
|
||||
h1: "h1",
|
||||
h2: "h2",
|
||||
p: "p",
|
||||
...props.components
|
||||
};
|
||||
return _jsxs(_Fragment, {
|
||||
children: [_jsx(_components.h1, {
|
||||
id: "index",
|
||||
children: "Index"
|
||||
}), "/n", _jsx(_components.p, {
|
||||
children: "Some text"
|
||||
}), "/n", "/n", _jsx(_components.h2, {
|
||||
id: "index-section-1",
|
||||
children: "Index section 1"
|
||||
}), "/n", _jsx(_components.p, {
|
||||
children: "Foo"
|
||||
}), "/n", _jsx(Partial1, {}), "/n", _jsx(_components.p, {
|
||||
children: "Some text"
|
||||
}), "/n", _jsx(SomeComponent, {}), "/n", _jsx(_components.h2, {
|
||||
id: "index-section-2",
|
||||
children: "Index section 2"
|
||||
}), "/n", _jsx(Partial2, {}), "/n", _jsx(_components.h2, {
|
||||
id: "unused-partials",
|
||||
children: "Unused partials"
|
||||
}), "/n", _jsx(_components.p, {
|
||||
children: "Unused partials (that are only imported but not rendered) shouldn't alter the TOC"
|
||||
}), "/n", "/n", _jsx(_components.h2, {
|
||||
id: "nonexisting-partials",
|
||||
children: "NonExisting Partials"
|
||||
}), "/n", _jsx(_components.p, {
|
||||
children: "Partials that do not exist should alter the TOC"
|
||||
}), "/n", _jsx(_components.p, {
|
||||
children: "It's not the responsibility of the Remark plugin to check for their existence"
|
||||
}), "/n", "/n", _jsx(DoesNotExist, {}), "/n", _jsx(_components.h2, {
|
||||
id: "duplicate-partials",
|
||||
children: "Duplicate partials"
|
||||
}), "/n", _jsx(_components.p, {
|
||||
children: "It's fine if we use partials at the end"
|
||||
}), "/n", _jsx(Partial1, {}), "/n", _jsx(_components.p, {
|
||||
children: "And we can use the partial multiple times!"
|
||||
}), "/n", _jsx(Partial1, {})]
|
||||
});
|
||||
}
|
||||
export default function MDXContent(props = {}) {
|
||||
const {wrapper: MDXLayout} = props.components || ({});
|
||||
return MDXLayout ? _jsx(MDXLayout, {
|
||||
...props,
|
||||
children: _jsx(_createMdxContent, {
|
||||
...props
|
||||
})
|
||||
}) : _createMdxContent(props);
|
||||
}
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`toc remark plugin works with partial imported after its usage 1`] = `
|
||||
"import {Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs} from "react/jsx-runtime";
|
||||
import Partial, {toc as __tocPartial} from './_partial.md';
|
||||
export const toc = [...__tocPartial];
|
||||
function _createMdxContent(props) {
|
||||
const _components = {
|
||||
h1: "h1",
|
||||
p: "p",
|
||||
...props.components
|
||||
};
|
||||
return _jsxs(_Fragment, {
|
||||
children: [_jsx(_components.h1, {
|
||||
id: "partial-used-before-import",
|
||||
children: "Partial used before import"
|
||||
}), "/n", _jsx(_components.p, {
|
||||
children: "While it looks weird to import after usage, this remains valid MDX usage."
|
||||
}), "/n", _jsx(Partial, {})]
|
||||
});
|
||||
}
|
||||
export default function MDXContent(props = {}) {
|
||||
const {wrapper: MDXLayout} = props.components || ({});
|
||||
return MDXLayout ? _jsx(MDXLayout, {
|
||||
...props,
|
||||
children: _jsx(_createMdxContent, {
|
||||
...props
|
||||
})
|
||||
}) : _createMdxContent(props);
|
||||
}
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`toc remark plugin works with partials importing other partials 1`] = `
|
||||
"import {Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs} from "react/jsx-runtime";
|
||||
import Partial2Nested, {toc as __tocPartial2Nested} from './partial2-nested.md';
|
||||
export const toc = [{
|
||||
"value": "Partial 2",
|
||||
"id": "partial-2",
|
||||
"level": 2
|
||||
}, {
|
||||
"value": "Partial 2 Sub Heading",
|
||||
"id": "partial-2-sub-heading",
|
||||
"level": 3
|
||||
}, ...__tocPartial2Nested];
|
||||
function _createMdxContent(props) {
|
||||
const _components = {
|
||||
h2: "h2",
|
||||
h3: "h3",
|
||||
p: "p",
|
||||
...props.components
|
||||
};
|
||||
return _jsxs(_Fragment, {
|
||||
children: [_jsx(_components.h2, {
|
||||
id: "partial-2",
|
||||
children: "Partial 2"
|
||||
}), "/n", _jsx(_components.p, {
|
||||
children: "Partial 2"
|
||||
}), "/n", _jsx(_components.h3, {
|
||||
id: "partial-2-sub-heading",
|
||||
children: "Partial 2 Sub Heading"
|
||||
}), "/n", _jsx(_components.p, {
|
||||
children: "Content"
|
||||
}), "/n", "/n", _jsx(Partial2Nested, {})]
|
||||
});
|
||||
}
|
||||
export default function MDXContent(props = {}) {
|
||||
const {wrapper: MDXLayout} = props.components || ({});
|
||||
return MDXLayout ? _jsx(MDXLayout, {
|
||||
...props,
|
||||
children: _jsx(_createMdxContent, {
|
||||
...props
|
||||
})
|
||||
}) : _createMdxContent(props);
|
||||
}
|
||||
"
|
||||
`;
|
||||
|
|
|
|||
|
|
@ -11,18 +11,23 @@ import plugin from '../index';
|
|||
import headings from '../../headings/index';
|
||||
|
||||
const processFixture = async (name: string) => {
|
||||
const {remark} = await import('remark');
|
||||
const {default: gfm} = await import('remark-gfm');
|
||||
const {default: mdx} = await import('remark-mdx');
|
||||
|
||||
const filePath = path.join(__dirname, '__fixtures__', `${name}.md`);
|
||||
const {compile} = await import('@mdx-js/mdx');
|
||||
|
||||
const filePath = path.join(
|
||||
__dirname,
|
||||
'__fixtures__',
|
||||
name.endsWith('.mdx') ? name : `${name}.md`,
|
||||
);
|
||||
|
||||
const file = await vfile.read(filePath);
|
||||
const result = await remark()
|
||||
.use(headings)
|
||||
.use(gfm)
|
||||
.use(mdx)
|
||||
.use(plugin)
|
||||
.process(file);
|
||||
|
||||
const result = await compile(file, {
|
||||
format: 'mdx',
|
||||
remarkPlugins: [headings, gfm, plugin],
|
||||
rehypePlugins: [],
|
||||
});
|
||||
|
||||
return result.value;
|
||||
};
|
||||
|
|
@ -70,4 +75,21 @@ describe('toc remark plugin', () => {
|
|||
const result = await processFixture('empty-headings');
|
||||
expect(result).toMatchSnapshot();
|
||||
});
|
||||
|
||||
it('works with imported markdown', async () => {
|
||||
const result = await processFixture('partials/index.mdx');
|
||||
expect(result).toMatchSnapshot();
|
||||
});
|
||||
|
||||
it('works with partials importing other partials', async () => {
|
||||
const result = await processFixture('partials/_partial2.mdx');
|
||||
expect(result).toMatchSnapshot();
|
||||
});
|
||||
|
||||
it('works with partial imported after its usage', async () => {
|
||||
const result = await processFixture(
|
||||
'partials/partial-used-before-import.mdx',
|
||||
);
|
||||
expect(result).toMatchSnapshot();
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -5,154 +5,183 @@
|
|||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
import {parse, type ParserOptions} from '@babel/parser';
|
||||
import traverse from '@babel/traverse';
|
||||
import stringifyObject from 'stringify-object';
|
||||
import {toValue} from '../utils';
|
||||
import type {Identifier} from '@babel/types';
|
||||
import type {Node, Parent} from 'unist';
|
||||
import type {Heading, Literal} from 'mdast';
|
||||
import {
|
||||
addTocSliceImportIfNeeded,
|
||||
createTOCExportNodeAST,
|
||||
findDefaultImportName,
|
||||
getImportDeclarations,
|
||||
isMarkdownImport,
|
||||
isNamedExport,
|
||||
} from './utils';
|
||||
import type {Heading, Root} from 'mdast';
|
||||
// @ts-expect-error: TODO see https://github.com/microsoft/TypeScript/issues/49721
|
||||
import type {Transformer} from 'unified';
|
||||
import type {
|
||||
MdxjsEsm,
|
||||
MdxJsxFlowElement,
|
||||
// @ts-expect-error: TODO see https://github.com/microsoft/TypeScript/issues/49721
|
||||
} from 'mdast-util-mdx';
|
||||
|
||||
// TODO as of April 2023, no way to import/re-export this ESM type easily :/
|
||||
// TODO upgrade to TS 5.3
|
||||
// See https://github.com/microsoft/TypeScript/issues/49721#issuecomment-1517839391
|
||||
// import type {Plugin} from 'unified';
|
||||
type Plugin = any; // TODO fix this asap
|
||||
|
||||
export type TOCItem = {
|
||||
readonly value: string;
|
||||
readonly id: string;
|
||||
readonly level: number;
|
||||
};
|
||||
|
||||
const parseOptions: ParserOptions = {
|
||||
plugins: ['jsx'],
|
||||
sourceType: 'module',
|
||||
};
|
||||
|
||||
const isImport = (child: any): child is Literal =>
|
||||
child.type === 'mdxjsEsm' && child.value.startsWith('import');
|
||||
const hasImports = (index: number) => index > -1;
|
||||
const isExport = (child: any): child is Literal =>
|
||||
child.type === 'mdxjsEsm' && child.value.startsWith('export');
|
||||
import type {TOCItems} from './types';
|
||||
import type {ImportDeclaration} from 'estree';
|
||||
|
||||
interface PluginOptions {
|
||||
name?: string;
|
||||
}
|
||||
|
||||
const isTarget = (child: Literal, name: string) => {
|
||||
let found = false;
|
||||
const ast = parse(child.value, parseOptions);
|
||||
traverse(ast, {
|
||||
VariableDeclarator: (path) => {
|
||||
if ((path.node.id as Identifier).name === name) {
|
||||
found = true;
|
||||
}
|
||||
},
|
||||
});
|
||||
return found;
|
||||
};
|
||||
// ComponentName (default export) => ImportDeclaration mapping
|
||||
type MarkdownImports = Map<string, {declaration: ImportDeclaration}>;
|
||||
|
||||
const getOrCreateExistingTargetIndex = async (
|
||||
children: Node[],
|
||||
name: string,
|
||||
) => {
|
||||
let importsIndex = -1;
|
||||
let targetIndex = -1;
|
||||
// MdxjsEsm node representing an already existing "export const toc" declaration
|
||||
type ExistingTOCExport = MdxjsEsm | null;
|
||||
|
||||
children.forEach((child, index) => {
|
||||
if (isImport(child)) {
|
||||
importsIndex = index;
|
||||
} else if (isExport(child) && isTarget(child, name)) {
|
||||
targetIndex = index;
|
||||
function createTocSliceImportName({
|
||||
tocExportName,
|
||||
componentName,
|
||||
}: {
|
||||
tocExportName: string;
|
||||
componentName: string;
|
||||
}) {
|
||||
// The name of the toc slice import alias doesn't matter much
|
||||
// We just need to ensure it's valid and won't conflict with other names
|
||||
return `__${tocExportName}${componentName}`;
|
||||
}
|
||||
|
||||
async function collectImportsExports({
|
||||
root,
|
||||
tocExportName,
|
||||
}: {
|
||||
root: Root;
|
||||
tocExportName: string;
|
||||
}): Promise<{
|
||||
markdownImports: MarkdownImports;
|
||||
existingTocExport: ExistingTOCExport;
|
||||
}> {
|
||||
const {visit} = await import('unist-util-visit');
|
||||
|
||||
const markdownImports = new Map<string, {declaration: ImportDeclaration}>();
|
||||
let existingTocExport: MdxjsEsm | null = null;
|
||||
|
||||
visit(root, 'mdxjsEsm', (node) => {
|
||||
if (!node.data?.estree) {
|
||||
return;
|
||||
}
|
||||
if (isNamedExport(node, tocExportName)) {
|
||||
existingTocExport = node;
|
||||
}
|
||||
});
|
||||
|
||||
if (targetIndex === -1) {
|
||||
const target = await createExportNode(name, []);
|
||||
|
||||
targetIndex = hasImports(importsIndex) ? importsIndex + 1 : 0;
|
||||
children.splice(targetIndex, 0, target);
|
||||
}
|
||||
|
||||
return targetIndex;
|
||||
};
|
||||
|
||||
const plugin: Plugin = function plugin(
|
||||
options: PluginOptions = {},
|
||||
): Transformer {
|
||||
const name = options.name || 'toc';
|
||||
|
||||
return async (root) => {
|
||||
const {toString} = await import('mdast-util-to-string');
|
||||
const {visit} = await import('unist-util-visit');
|
||||
|
||||
const headings: TOCItem[] = [];
|
||||
|
||||
visit(root, 'heading', (child: Heading) => {
|
||||
const value = toString(child);
|
||||
|
||||
// depth:1 headings are titles and not included in the TOC
|
||||
if (!value || child.depth < 2) {
|
||||
getImportDeclarations(node.data.estree).forEach((declaration) => {
|
||||
if (!isMarkdownImport(declaration)) {
|
||||
return;
|
||||
}
|
||||
|
||||
headings.push({
|
||||
value: toValue(child, toString),
|
||||
id: child.data!.id!,
|
||||
level: child.depth,
|
||||
const componentName = findDefaultImportName(declaration);
|
||||
if (!componentName) {
|
||||
return;
|
||||
}
|
||||
markdownImports.set(componentName, {
|
||||
declaration,
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
const {children} = root as Parent;
|
||||
const targetIndex = await getOrCreateExistingTargetIndex(children, name);
|
||||
return {markdownImports, existingTocExport};
|
||||
}
|
||||
|
||||
if (headings?.length) {
|
||||
children[targetIndex] = await createExportNode(name, headings);
|
||||
async function collectTOCItems({
|
||||
root,
|
||||
tocExportName,
|
||||
markdownImports,
|
||||
}: {
|
||||
root: Root;
|
||||
tocExportName: string;
|
||||
markdownImports: MarkdownImports;
|
||||
}): Promise<{
|
||||
// The toc items we collected in the tree
|
||||
tocItems: TOCItems;
|
||||
}> {
|
||||
const {toString} = await import('mdast-util-to-string');
|
||||
const {visit} = await import('unist-util-visit');
|
||||
|
||||
const tocItems: TOCItems = [];
|
||||
|
||||
visit(root, (child) => {
|
||||
if (child.type === 'heading') {
|
||||
visitHeading(child);
|
||||
} else if (child.type === 'mdxJsxFlowElement') {
|
||||
visitJSXElement(child);
|
||||
}
|
||||
};
|
||||
};
|
||||
});
|
||||
|
||||
export default plugin;
|
||||
return {tocItems};
|
||||
|
||||
async function createExportNode(name: string, object: any): Promise<MdxjsEsm> {
|
||||
const {valueToEstree} = await import('estree-util-value-to-estree');
|
||||
// Visit Markdown headings
|
||||
function visitHeading(node: Heading) {
|
||||
const value = toString(node);
|
||||
// depth:1 headings are titles and not included in the TOC
|
||||
if (!value || node.depth < 2) {
|
||||
return;
|
||||
}
|
||||
tocItems.push({
|
||||
type: 'heading',
|
||||
heading: node,
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
type: 'mdxjsEsm',
|
||||
value: `export const ${name} = ${stringifyObject(object)}`,
|
||||
data: {
|
||||
estree: {
|
||||
type: 'Program',
|
||||
body: [
|
||||
{
|
||||
type: 'ExportNamedDeclaration',
|
||||
declaration: {
|
||||
type: 'VariableDeclaration',
|
||||
declarations: [
|
||||
{
|
||||
type: 'VariableDeclarator',
|
||||
id: {
|
||||
type: 'Identifier',
|
||||
name,
|
||||
},
|
||||
init: valueToEstree(object),
|
||||
},
|
||||
],
|
||||
kind: 'const',
|
||||
},
|
||||
specifiers: [],
|
||||
source: null,
|
||||
},
|
||||
],
|
||||
sourceType: 'module',
|
||||
},
|
||||
},
|
||||
// Visit JSX elements, such as <Partial/>
|
||||
function visitJSXElement(node: MdxJsxFlowElement) {
|
||||
const componentName = node.name;
|
||||
if (!componentName) {
|
||||
return;
|
||||
}
|
||||
const importDeclaration = markdownImports.get(componentName)?.declaration;
|
||||
if (!importDeclaration) {
|
||||
return;
|
||||
}
|
||||
|
||||
const tocSliceImportName = createTocSliceImportName({
|
||||
tocExportName,
|
||||
componentName,
|
||||
});
|
||||
|
||||
tocItems.push({
|
||||
type: 'slice',
|
||||
importName: tocSliceImportName,
|
||||
});
|
||||
|
||||
addTocSliceImportIfNeeded({
|
||||
importDeclaration,
|
||||
tocExportName,
|
||||
tocSliceImportName,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export default function plugin(options: PluginOptions = {}): Transformer<Root> {
|
||||
const tocExportName = options.name || 'toc';
|
||||
|
||||
return async (root) => {
|
||||
const {markdownImports, existingTocExport} = await collectImportsExports({
|
||||
root,
|
||||
tocExportName,
|
||||
});
|
||||
|
||||
// If user explicitly writes "export const toc" in his mdx file
|
||||
// We keep it as is do not override their explicit toc structure
|
||||
// See https://github.com/facebook/docusaurus/pull/7530#discussion_r1458087876
|
||||
if (existingTocExport) {
|
||||
return;
|
||||
}
|
||||
|
||||
const {tocItems} = await collectTOCItems({
|
||||
root,
|
||||
tocExportName,
|
||||
markdownImports,
|
||||
});
|
||||
|
||||
root.children.push(
|
||||
await createTOCExportNodeAST({
|
||||
tocExportName,
|
||||
tocItems,
|
||||
}),
|
||||
);
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
import type {Heading} from 'mdast';
|
||||
|
||||
// Note: this type is exported from mdx-loader and used in theme
|
||||
// Need to keep it retro compatible
|
||||
export type TOCItem = {
|
||||
readonly value: string;
|
||||
readonly id: string;
|
||||
readonly level: number;
|
||||
};
|
||||
|
||||
export type TOCHeading = {
|
||||
readonly type: 'heading';
|
||||
readonly heading: Heading;
|
||||
};
|
||||
|
||||
// A TOC slice represents a TOCItem[] imported from a partial
|
||||
export type TOCSlice = {
|
||||
readonly type: 'slice';
|
||||
readonly importName: string;
|
||||
};
|
||||
|
||||
export type TOCItems = (TOCHeading | TOCSlice)[];
|
||||
|
|
@ -0,0 +1,177 @@
|
|||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
import {toValue} from '../utils';
|
||||
import type {Node} from 'unist';
|
||||
import type {
|
||||
MdxjsEsm,
|
||||
// @ts-expect-error: TODO see https://github.com/microsoft/TypeScript/issues/49721
|
||||
} from 'mdast-util-mdx';
|
||||
import type {TOCHeading, TOCItem, TOCItems, TOCSlice} from './types';
|
||||
import type {
|
||||
Program,
|
||||
SpreadElement,
|
||||
ImportDeclaration,
|
||||
ImportSpecifier,
|
||||
} from 'estree';
|
||||
|
||||
export function getImportDeclarations(program: Program): ImportDeclaration[] {
|
||||
return program.body.filter(
|
||||
(item): item is ImportDeclaration => item.type === 'ImportDeclaration',
|
||||
);
|
||||
}
|
||||
|
||||
export function isMarkdownImport(node: Node): node is ImportDeclaration {
|
||||
if (node.type !== 'ImportDeclaration') {
|
||||
return false;
|
||||
}
|
||||
const importPath = (node as ImportDeclaration).source.value;
|
||||
return typeof importPath === 'string' && /\.mdx?$/.test(importPath);
|
||||
}
|
||||
|
||||
export function findDefaultImportName(
|
||||
importDeclaration: ImportDeclaration,
|
||||
): string | undefined {
|
||||
return importDeclaration.specifiers.find(
|
||||
(o: Node) => o.type === 'ImportDefaultSpecifier',
|
||||
)?.local.name;
|
||||
}
|
||||
|
||||
export function findNamedImportSpecifier(
|
||||
importDeclaration: ImportDeclaration,
|
||||
localName: string,
|
||||
): ImportSpecifier | undefined {
|
||||
return importDeclaration?.specifiers.find(
|
||||
(specifier): specifier is ImportSpecifier =>
|
||||
specifier.type === 'ImportSpecifier' &&
|
||||
specifier.local.name === localName,
|
||||
);
|
||||
}
|
||||
|
||||
// Before: import Partial from "partial"
|
||||
// After: import Partial, {toc as __tocPartial} from "partial"
|
||||
export function addTocSliceImportIfNeeded({
|
||||
importDeclaration,
|
||||
tocExportName,
|
||||
tocSliceImportName,
|
||||
}: {
|
||||
importDeclaration: ImportDeclaration;
|
||||
tocExportName: string;
|
||||
tocSliceImportName: string;
|
||||
}): void {
|
||||
// We only add the toc slice named import if it doesn't exist already
|
||||
if (!findNamedImportSpecifier(importDeclaration, tocSliceImportName)) {
|
||||
importDeclaration.specifiers.push({
|
||||
type: 'ImportSpecifier',
|
||||
imported: {type: 'Identifier', name: tocExportName},
|
||||
local: {type: 'Identifier', name: tocSliceImportName},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export function isNamedExport(
|
||||
node: Node,
|
||||
exportName: string,
|
||||
): node is MdxjsEsm {
|
||||
if (node.type !== 'mdxjsEsm') {
|
||||
return false;
|
||||
}
|
||||
const program = (node as MdxjsEsm).data?.estree;
|
||||
if (!program) {
|
||||
return false;
|
||||
}
|
||||
if (program.body.length !== 1) {
|
||||
return false;
|
||||
}
|
||||
const exportDeclaration = program.body[0]!;
|
||||
if (exportDeclaration.type !== 'ExportNamedDeclaration') {
|
||||
return false;
|
||||
}
|
||||
const variableDeclaration = exportDeclaration.declaration;
|
||||
if (variableDeclaration?.type !== 'VariableDeclaration') {
|
||||
return false;
|
||||
}
|
||||
const {id} = variableDeclaration.declarations[0]!;
|
||||
if (id.type !== 'Identifier') {
|
||||
return false;
|
||||
}
|
||||
|
||||
return id.name === exportName;
|
||||
}
|
||||
|
||||
export async function createTOCExportNodeAST({
|
||||
tocExportName,
|
||||
tocItems,
|
||||
}: {
|
||||
tocExportName: string;
|
||||
tocItems: TOCItems;
|
||||
}): Promise<MdxjsEsm> {
|
||||
function createTOCSliceAST(tocSlice: TOCSlice): SpreadElement {
|
||||
return {
|
||||
type: 'SpreadElement',
|
||||
argument: {type: 'Identifier', name: tocSlice.importName},
|
||||
};
|
||||
}
|
||||
|
||||
async function createTOCHeadingAST({heading}: TOCHeading) {
|
||||
const {toString} = await import('mdast-util-to-string');
|
||||
const {valueToEstree} = await import('estree-util-value-to-estree');
|
||||
const value: TOCItem = {
|
||||
value: toValue(heading, toString),
|
||||
id: heading.data!.id!,
|
||||
level: heading.depth,
|
||||
};
|
||||
return valueToEstree(value);
|
||||
}
|
||||
|
||||
async function createTOCItemAST(tocItem: TOCItems[number]) {
|
||||
switch (tocItem.type) {
|
||||
case 'slice':
|
||||
return createTOCSliceAST(tocItem);
|
||||
case 'heading':
|
||||
return createTOCHeadingAST(tocItem);
|
||||
default: {
|
||||
throw new Error(`unexpected toc item type`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
type: 'mdxjsEsm',
|
||||
value: '', // See https://github.com/facebook/docusaurus/pull/9684#discussion_r1457595181
|
||||
data: {
|
||||
estree: {
|
||||
type: 'Program',
|
||||
body: [
|
||||
{
|
||||
type: 'ExportNamedDeclaration',
|
||||
declaration: {
|
||||
type: 'VariableDeclaration',
|
||||
declarations: [
|
||||
{
|
||||
type: 'VariableDeclarator',
|
||||
id: {
|
||||
type: 'Identifier',
|
||||
name: tocExportName,
|
||||
},
|
||||
init: {
|
||||
type: 'ArrayExpression',
|
||||
elements: await Promise.all(tocItems.map(createTOCItemAST)),
|
||||
},
|
||||
},
|
||||
],
|
||||
kind: 'const',
|
||||
},
|
||||
specifiers: [],
|
||||
source: null,
|
||||
},
|
||||
],
|
||||
sourceType: 'module',
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
|
|
@ -12,17 +12,17 @@ exports[`transformAsset plugin pathname protocol 1`] = `
|
|||
exports[`transformAsset plugin transform md links to <a /> 1`] = `
|
||||
"[asset](https://example.com/asset.pdf)
|
||||
|
||||
<a target="_blank" href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf").default} />
|
||||
<a target="_blank" data-noBrokenLinkCheck={true} href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf").default} />
|
||||
|
||||
<a target="_blank" href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf").default}>asset</a>
|
||||
<a target="_blank" data-noBrokenLinkCheck={true} href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf").default}>asset</a>
|
||||
|
||||
in paragraph <a target="_blank" href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf").default}>asset</a>
|
||||
in paragraph <a target="_blank" data-noBrokenLinkCheck={true} href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf").default}>asset</a>
|
||||
|
||||
<a target="_blank" href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset (2).pdf").default}>asset with URL encoded chars</a>
|
||||
<a target="_blank" data-noBrokenLinkCheck={true} href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset (2).pdf").default}>asset with URL encoded chars</a>
|
||||
|
||||
<a target="_blank" href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf").default + '#page=2'}>asset with hash</a>
|
||||
<a target="_blank" data-noBrokenLinkCheck={true} href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf").default + '#page=2'}>asset with hash</a>
|
||||
|
||||
<a target="_blank" href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf").default} title="Title">asset</a>
|
||||
<a target="_blank" data-noBrokenLinkCheck={true} href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf").default} title="Title">asset</a>
|
||||
|
||||
[page](noUrl.md)
|
||||
|
||||
|
|
@ -36,24 +36,24 @@ in paragraph <a target="_blank" href={require("!<PROJECT_ROOT>/node_modules/file
|
|||
|
||||
[assets](/github/!file-loader!/assets.pdf)
|
||||
|
||||
<a target="_blank" href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf").default}>asset</a>
|
||||
<a target="_blank" data-noBrokenLinkCheck={true} href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf").default}>asset</a>
|
||||
|
||||
<a target="_blank" href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static2/asset2.pdf").default}>asset2</a>
|
||||
<a target="_blank" data-noBrokenLinkCheck={true} href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static2/asset2.pdf").default}>asset2</a>
|
||||
|
||||
<a target="_blank" href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAsset.pdf").default}>staticAsset.pdf</a>
|
||||
<a target="_blank" data-noBrokenLinkCheck={true} href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAsset.pdf").default}>staticAsset.pdf</a>
|
||||
|
||||
<a target="_blank" href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAsset.pdf").default}>@site/static/staticAsset.pdf</a>
|
||||
<a target="_blank" data-noBrokenLinkCheck={true} href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAsset.pdf").default}>@site/static/staticAsset.pdf</a>
|
||||
|
||||
<a target="_blank" href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAsset.pdf").default + '#page=2'} title="Title">@site/static/staticAsset.pdf</a>
|
||||
<a target="_blank" data-noBrokenLinkCheck={true} href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAsset.pdf").default + '#page=2'} title="Title">@site/static/staticAsset.pdf</a>
|
||||
|
||||
<a target="_blank" href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAsset.pdf").default}>Just staticAsset.pdf</a>, and <a target="_blank" href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAsset.pdf").default}>**awesome** staticAsset 2.pdf 'It is really "AWESOME"'</a>, but also <a target="_blank" href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAsset.pdf").default}>coded \`staticAsset 3.pdf\`</a>
|
||||
<a target="_blank" data-noBrokenLinkCheck={true} href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAsset.pdf").default}>Just staticAsset.pdf</a>, and <a target="_blank" data-noBrokenLinkCheck={true} href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAsset.pdf").default}>**awesome** staticAsset 2.pdf 'It is really "AWESOME"'</a>, but also <a target="_blank" data-noBrokenLinkCheck={true} href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAsset.pdf").default}>coded \`staticAsset 3.pdf\`</a>
|
||||
|
||||
<a target="_blank" href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAssetImage.png").default}><img alt="Clickable Docusaurus logo" src={require("!<PROJECT_ROOT>/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js!./static/staticAssetImage.png").default} width="200" height="200" /></a>
|
||||
<a target="_blank" data-noBrokenLinkCheck={true} href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/staticAssetImage.png").default}><img alt="Clickable Docusaurus logo" src={require("!<PROJECT_ROOT>/node_modules/url-loader/dist/cjs.js?limit=10000&name=assets/images/[name]-[contenthash].[ext]&fallback=<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js!./static/staticAssetImage.png").default} width="200" height="200" /></a>
|
||||
|
||||
<a target="_blank" href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf").default}><span style={{color: "red"}}>Stylized link to asset file</span></a>
|
||||
<a target="_blank" data-noBrokenLinkCheck={true} href={require("!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./asset.pdf").default}><span style={{color: "red"}}>Stylized link to asset file</span></a>
|
||||
|
||||
<a target="_blank" href={require("./data.raw!=!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./data.json").default}>JSON</a>
|
||||
<a target="_blank" data-noBrokenLinkCheck={true} href={require("./data.raw!=!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./data.json").default}>JSON</a>
|
||||
|
||||
<a target="_blank" href={require("./static/static-json.raw!=!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/static-json.json").default}>static JSON</a>
|
||||
<a target="_blank" data-noBrokenLinkCheck={true} href={require("./static/static-json.raw!=!<PROJECT_ROOT>/node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[contenthash].[ext]!./static/static-json.json").default}>static JSON</a>
|
||||
"
|
||||
`;
|
||||
|
|
|
|||
|
|
@ -73,6 +73,34 @@ async function toAssetRequireNode(
|
|||
value: '_blank',
|
||||
});
|
||||
|
||||
// Assets are not routes, and are required by Webpack already
|
||||
// They should not trigger the broken link checker
|
||||
attributes.push({
|
||||
type: 'mdxJsxAttribute',
|
||||
name: 'data-noBrokenLinkCheck',
|
||||
value: {
|
||||
type: 'mdxJsxAttributeValueExpression',
|
||||
value: 'true',
|
||||
data: {
|
||||
estree: {
|
||||
type: 'Program',
|
||||
body: [
|
||||
{
|
||||
type: 'ExpressionStatement',
|
||||
expression: {
|
||||
type: 'Literal',
|
||||
value: true,
|
||||
raw: 'true',
|
||||
},
|
||||
},
|
||||
],
|
||||
sourceType: 'module',
|
||||
comments: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
attributes.push({
|
||||
type: 'mdxJsxAttribute',
|
||||
name: 'href',
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@docusaurus/module-type-aliases",
|
||||
"version": "3.0.0-rc.1",
|
||||
"version": "3.2.0",
|
||||
"description": "Docusaurus module type aliases.",
|
||||
"types": "./src/index.d.ts",
|
||||
"publishConfig": {
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@docusaurus/react-loadable": "5.5.2",
|
||||
"@docusaurus/types": "3.0.0-rc.1",
|
||||
"@docusaurus/types": "3.2.0",
|
||||
"@types/history": "^4.7.11",
|
||||
"@types/react": "*",
|
||||
"@types/react-router-config": "*",
|
||||
|
|
|
|||
|
|
@ -260,6 +260,15 @@ declare module '@docusaurus/useRouteContext' {
|
|||
export default function useRouteContext(): PluginRouteContext;
|
||||
}
|
||||
|
||||
declare module '@docusaurus/useBrokenLinks' {
|
||||
export type BrokenLinks = {
|
||||
collectLink: (link: string | undefined) => void;
|
||||
collectAnchor: (anchor: string | undefined) => void;
|
||||
};
|
||||
|
||||
export default function useBrokenLinks(): BrokenLinks;
|
||||
}
|
||||
|
||||
declare module '@docusaurus/useIsBrowser' {
|
||||
export default function useIsBrowser(): boolean;
|
||||
}
|
||||
|
|
@ -356,7 +365,9 @@ declare module '@docusaurus/useGlobalData' {
|
|||
declare module '*.svg' {
|
||||
import type {ComponentType, SVGProps} from 'react';
|
||||
|
||||
const ReactComponent: ComponentType<SVGProps<SVGSVGElement>>;
|
||||
const ReactComponent: ComponentType<
|
||||
SVGProps<SVGSVGElement> & {title?: string}
|
||||
>;
|
||||
|
||||
export default ReactComponent;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@docusaurus/plugin-client-redirects",
|
||||
"version": "3.0.0-rc.1",
|
||||
"version": "3.2.0",
|
||||
"description": "Client redirects plugin for Docusaurus.",
|
||||
"main": "lib/index.js",
|
||||
"types": "lib/index.d.ts",
|
||||
|
|
@ -18,18 +18,18 @@
|
|||
},
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@docusaurus/core": "3.0.0-rc.1",
|
||||
"@docusaurus/logger": "3.0.0-rc.1",
|
||||
"@docusaurus/utils": "3.0.0-rc.1",
|
||||
"@docusaurus/utils-common": "3.0.0-rc.1",
|
||||
"@docusaurus/utils-validation": "3.0.0-rc.1",
|
||||
"@docusaurus/core": "3.2.0",
|
||||
"@docusaurus/logger": "3.2.0",
|
||||
"@docusaurus/utils": "3.2.0",
|
||||
"@docusaurus/utils-common": "3.2.0",
|
||||
"@docusaurus/utils-validation": "3.2.0",
|
||||
"eta": "^2.2.0",
|
||||
"fs-extra": "^11.1.1",
|
||||
"lodash": "^4.17.21",
|
||||
"tslib": "^2.6.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@docusaurus/types": "3.0.0-rc.1"
|
||||
"@docusaurus/types": "3.2.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^18.0.0",
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
import {removeTrailingSlash} from '@docusaurus/utils';
|
||||
import {removeTrailingSlash} from '@docusaurus/utils-common';
|
||||
import {normalizePluginOptions} from '@docusaurus/utils-validation';
|
||||
import collectRedirects from '../collectRedirects';
|
||||
import {validateOptions} from '../options';
|
||||
|
|
|
|||
|
|
@ -7,8 +7,11 @@
|
|||
|
||||
import _ from 'lodash';
|
||||
import logger from '@docusaurus/logger';
|
||||
import {addTrailingSlash, removeTrailingSlash} from '@docusaurus/utils';
|
||||
import {applyTrailingSlash} from '@docusaurus/utils-common';
|
||||
import {
|
||||
applyTrailingSlash,
|
||||
addTrailingSlash,
|
||||
removeTrailingSlash,
|
||||
} from '@docusaurus/utils-common';
|
||||
import {
|
||||
createFromExtensionsRedirects,
|
||||
createToExtensionsRedirects,
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import {
|
|||
addTrailingSlash,
|
||||
removeSuffix,
|
||||
removeTrailingSlash,
|
||||
} from '@docusaurus/utils';
|
||||
} from '@docusaurus/utils-common';
|
||||
import type {RedirectItem} from './types';
|
||||
|
||||
const ExtensionAdditionalMessage =
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
import {removePrefix, addLeadingSlash} from '@docusaurus/utils';
|
||||
import {addLeadingSlash, removePrefix} from '@docusaurus/utils-common';
|
||||
import collectRedirects from './collectRedirects';
|
||||
import writeRedirectFiles, {
|
||||
toRedirectFiles,
|
||||
|
|
|
|||
|
|
@ -1,12 +1,24 @@
|
|||
{
|
||||
"name": "@docusaurus/plugin-content-blog",
|
||||
"version": "3.0.0-rc.1",
|
||||
"version": "3.2.0",
|
||||
"description": "Blog plugin for Docusaurus.",
|
||||
"main": "lib/index.js",
|
||||
"types": "src/plugin-content-blog.d.ts",
|
||||
"exports": {
|
||||
"./lib/*": "./lib/*",
|
||||
"./src/*": "./src/*",
|
||||
"./client": {
|
||||
"type": "./lib/client/index.d.ts",
|
||||
"default": "./lib/client/index.js"
|
||||
},
|
||||
".": {
|
||||
"types": "./src/plugin-content-blog.d.ts",
|
||||
"default": "./lib/index.js"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"build": "tsc",
|
||||
"watch": "tsc --watch",
|
||||
"build": "tsc --build",
|
||||
"watch": "tsc --build --watch",
|
||||
"test:generate-build-snap": "yarn docusaurus build src/__tests__/__fixtures__/website --out-dir build-snap && yarn rimraf src/__tests__/__fixtures__/website/.docusaurus && yarn rimraf src/__tests__/__fixtures__/website/build-snap/assets && git add src/__tests__/__fixtures__/website/build-snap"
|
||||
},
|
||||
"repository": {
|
||||
|
|
@ -19,13 +31,13 @@
|
|||
},
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@docusaurus/core": "3.0.0-rc.1",
|
||||
"@docusaurus/logger": "3.0.0-rc.1",
|
||||
"@docusaurus/mdx-loader": "3.0.0-rc.1",
|
||||
"@docusaurus/types": "3.0.0-rc.1",
|
||||
"@docusaurus/utils": "3.0.0-rc.1",
|
||||
"@docusaurus/utils-common": "3.0.0-rc.1",
|
||||
"@docusaurus/utils-validation": "3.0.0-rc.1",
|
||||
"@docusaurus/core": "3.2.0",
|
||||
"@docusaurus/logger": "3.2.0",
|
||||
"@docusaurus/mdx-loader": "3.2.0",
|
||||
"@docusaurus/types": "3.2.0",
|
||||
"@docusaurus/utils": "3.2.0",
|
||||
"@docusaurus/utils-common": "3.2.0",
|
||||
"@docusaurus/utils-validation": "3.2.0",
|
||||
"cheerio": "^1.0.0-rc.12",
|
||||
"feed": "^4.2.2",
|
||||
"fs-extra": "^11.1.1",
|
||||
|
|
@ -43,5 +55,8 @@
|
|||
},
|
||||
"engines": {
|
||||
"node": ">=18.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@total-typescript/shoehorn": "^0.1.2"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
title: Author
|
||||
slug: author
|
||||
author: ozaki
|
||||
last_update:
|
||||
author: seb
|
||||
---
|
||||
|
||||
author
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
---
|
||||
title: Both
|
||||
slug: both
|
||||
date: 2020-01-01
|
||||
last_update:
|
||||
date: 2021-01-01
|
||||
author: seb
|
||||
author: ozaki
|
||||
---
|
||||
|
||||
last update date
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
title: Last update date
|
||||
slug: lastUpdateDate
|
||||
date: 2020-01-01
|
||||
last_update:
|
||||
date: 2021-01-01
|
||||
---
|
||||
|
||||
last update date
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
title: Nothing
|
||||
slug: nothing
|
||||
---
|
||||
|
||||
nothing
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue