Suporte a TypeScript
Docusaurus is written in TypeScript, and provide first-class TypeScript support.
#
InicializaçãoO Docusaurus suporta escrever e usar componentes de temas TypeScript. If the init template provides a Typescript variant, you can directly initialize a site with full TypeScript support by using the --typescript
flag.
npx @docusaurus/init@latest init my-website classic --typescript
Below are some guides on how to migrate an existing project to TypeScript.
#
ConfiguraçãoPara começar a usar TypeScript, adicione @docusaurus/module-type-aliases
e algumas dependências @types
ao seu projeto:
- npm
- Yarn
npm install --save-dev typescript @docusaurus/module-type-aliases @types/react @types/react-router-dom @types/react-helmet @tsconfig/docusaurus
yarn add --dev typescript @docusaurus/module-type-aliases @types/react @types/react-router-dom @types/react-helmet @tsconfig/docusaurus
Em seguida, adicione o tsconfig.json
à raiz do seu projeto com o seguinte conteúdo:
{ "extends": "@tsconfig/docusaurus/tsconfig.json", "include": ["src/"]}
O Docusaurus não usa este tsconfig.json
para compilar seu projeto. É adicionado apenas para uma experiência do Editor mais agradável, embora você possa optar por executar tsc
para digitar seu código para si mesmo ou no CI.
Agora você pode começar a escrever componentes de tema TypeScript.
#
Typing the config fileIt is not possible to use a TypeScript config file in Docusaurus, unless you compile it yourself to JavaScript.
We recommend using JSDoc type annotations:
/** @type {import('@docusaurus/types').Plugin} */function MyPlugin(context, options) { return { name: 'my-plugin', };}
/** @type {import('@docusaurus/types').DocusaurusConfig} */(module.exports = { title: 'Docusaurus', tagline: 'Build optimized websites quickly, focus on your content', organizationName: 'facebook', projectName: 'docusaurus', plugins: [MyPlugin], presets: [ [ '@docusaurus/preset-classic', /** @type {import('@docusaurus/preset-classic').Options} */ ({ docs: { path: 'docs', sidebarPath: 'sidebars.js', }, blog: { path: 'blog', postsPerPage: 5, }, }), ], ], themeConfig: /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ ({ colorMode: { defaultMode: 'dark', }, navbar: { hideOnScroll: true, title: 'Docusaurus', logo: { alt: 'Docusaurus Logo', src: 'img/docusaurus.svg', srcDark: 'img/docusaurus_keytar.svg', }, }, }),});
tip
Type annotations are very useful and help your IDE understand the type of config objects!
The best IDEs (VSCode, WebStorm, Intellij...) will provide a nice auto-completion experience.
#
Componentes de tema TypeScript SwizzlingPara temas que suportam componentes de tema TypeScript, você pode adicionar a flag --typescript
no final do comando swizzling para obter o código fonte TypeScript. Por exemplo, o seguinte comando irá gerar index.tsx
e styles.module.css
em src/theme/Footer
.
- npm
- Yarn
npm run swizzle @docusaurus/theme-classic Footer -- --typescript
yarn run swizzle @docusaurus/theme-classic Footer -- --typescript
Até agora, o único tema oficial do Docusaurus que suporta componentes do tema TypeScript é @docusaurus/theme-classic
. Se você é um autor de um tema do Docusaurus que quer adicionar suporte ao TypeScript, consulte Documentos de APIs de ciclo de vida.