Gatsby: [Umbrella] Migration de TypeScript (aide requise!)

Créé le 5 mars 2020  ·  130Commentaires  ·  Source: gatsbyjs/gatsby

Bonjour la communauté!

Gatsby réécrit notre base de code principale en TypeScript! Consultez la RFC: # 21798

Nous aimerions adorer aimer votre aide! Ce travail est extrêmement important pour Gatsby étant un produit stable et vous pourriez en faire partie! Nous recherchons des membres de la communauté qui seraient prêts à sauter dans la base de code des fichiers de transition de .js à .ts et à ajouter les typages appropriés. Nous avons quelques lignes directrices auxquelles nous voulons nous tenir en faisant cela:

Directives Gatsby TS

  • N'utilisez que des exportations nommées, aucune valeur par défaut d'exportation.
  • Lors de l'importation d'un package, essayez toujours de trouver des types gérés par la communauté au lieu de vous saisir nous-mêmes. Regardez le référentiel github DefinitelyTyped.
  • Optez pour l'utilisation d'interfaces pour les objets et les fonctions.
  • Les alias de type doivent être utilisés pour les primitives, les unions et les tuples
  • La fusion des déclarations d'interface est un anti-pattern et ne doit pas être utilisée en interne.
  • Utilisez la syntaxe Array<type> plutôt que type[] , car elle est plus claire et correspond aux types intégrés tels que Map .
  • Utilisez les types d'assistance de TypeScript, tels que Record , plutôt que de définir les vôtres.
  • Chaque fonction doit taper son entrée et sa sortie (même si elle est inférable)
  • Les énumérations sont excellentes, mais attention, elles correspondent aux numéros d'index si elles ne sont pas redéfinies. Cela peut entraîner des problèmes étranges pour les API publiques qui interopèrent avec le JS normal.
  • Le type any peut être utilisé pour les types de modules de remplacement qui seraient hors de portée pour la migration. Mais il ne doit pas être utilisé pour des entrées / sorties fonctionnelles. L'objectif final de cette migration est d'avoir ZERO any types dans la base de code. Voyez si unknown plus de sens dans ce contexte. N'utilisez pas @ts-ignore commentaires
  • Enfin et surtout , nous voulons avoir des types simples chaque fois que possible. Essentiellement, nous devrions essayer d'éviter les génériques. Le code générique peut être hautement réutilisable, mais cela peut aussi avoir de plus grandes chances de casser des choses. Si vous avez besoin d'utiliser des génériques, veuillez leur donner des valeurs par défaut ou vous assurer que la valeur générique peut être déduite. Le code doit être simple lorsque cela est possible. DRY n'est pas toujours le meilleur.

Si vous souhaitez vous impliquer, consultez la liste ci-dessous. Si vous êtes intéressé à faire quelque chose, veuillez répondre en tant que commentaire, je mettrai votre nom dans un fichier pour que les autres sachent qu'il est "revendiqué", lorsque le PR est fusionné, je vais cocher la case.

Conseils pour vous impliquer: lisez d'abord les documents de contribution et découvrez comment configurer votre environnement local . Une fois que vous avez réclamé le fichier sur lequel travailler, convertissez-le localement et assurez-vous qu'aucune erreur de frappe ou de charpie ne s'affiche dans votre IDE. Exécutez yarn typecheck et yarn lint:code dans la racine avant d'ouvrir le PR, qui affichera toutes les erreurs. Une fois que vous êtes prêt, ouvrez le PR et l'un de nous l'examinera. Merci et bonne chance!

### Liste des fichiers

  • [x] packages / babel-plugin-remove-graphql-queries

    • [x] src
    • [x] /index.js ( @ zachtylr21 dans # 23954)

      - [x] /murmur.js ( @ zachtylr21 dans # 22458)

  • [] packages / babel-preset-gatsby

    • [] src
    • [x] /utils/path-serializer.js ( @MichaelDeBoey dans # 22035)
    • [x] /dependencies.js + test ( @MichaelDeBoey dans # 22038)

      - [] /index.js + test

  • [] packages / gatsby

    • [x] / cache-dir NE FAITES PAS
    • [] src / bootstrap
    • [x] load-plugins ( @Eyas dans # 22504)

      • [x] /index.js

      • [x] /load.js

      • [x] /validate.js

    • [] load-themes / index.js
    • [x] get-config-file.js ( @ mottox2 dans # 22472)
    • [x] graphql-runner.js ( @rayriffy dans # 22860)
    • [x] index.js ( @ascorbic dans # 24816)
    • [x] log-line-function.js ( @gabrieluizramos dans # 23677)
    • [x] page-hot-reloader.js ( @jeffreymeng dans # 27330)
    • [x] prefer-default.js ( @gabrieluizramos dans # 23677)
    • [x] redirects-writer.js ( @ mottox2 dans # 22530)
    • [x] remove-stale-jobs.js ( @gabrieluizramos dans # 23538)
    • [x] requiert-writer.js ( @alexpyzhianov dans # 24289)
    • [x] resolution-module-exports.js ( @Eyas dans # 24519)
    • [x] schema-hot-reloader.js ( @ mottox2 dans # 22497)
    • [x] src / commandes
    • [x] /build.js ( @devrchancay dans # 23695)
    • [x] /build-html.js ( @blainekasten dans # 20535)
    • [x] /build-javascript.js ( @ mottox2 dans # 22028)
    • [x] /build-utils.js ( @ mottox2 dans # 22262)
    • [x] /clean.js ( @ mottox2 dans # 22036)
    • [x] / develop ( @blainekasten dans # 19923)
    • [x] /develop-static.js ( @blainekasten dans # 22106)
    • [x] /repl.js ( @ mottox2 dans # 22037)
    • [x] /serve.js ( @ mottox2 dans # 22209)
    • [] src / db
    • [x] common / query.js
    • [x] loki / * NE FAITES PAS
    • [] index.js ( @arthurjdam dans # 22725)
    • [x] nodes.js ( @pvdz dans # 25199)
    • [] sanitize -node.js (
    • [x] src / plugins internes NE FAITES PAS
    • [x] src / joi-schemas / joi.js ( @arthurjdam dans # 22738)
    • [] src / requête
    • [x] /better-queue-custom-store.js + test ( @chooban dans # 25389)
    • [x] /error-parser.js + test ( @LekoArts dans # 20597)
    • [] /file-parser.js + test ( @martingreilinger )
    • [] /graphql-errors.js (@jeffreymeng)
    • [x] /graphql-runner.js ( @ascorbic dans # 21956)
    • [] /index.js + test - data-tracking.js
    • [] /query-compiler.js + test (@mohinderps)
    • [x] /query-runner.js ( @ mottox2 dans # 22427)
    • [] /query-watcher.js ( @ArcaneDiver dans # 27324)
    • [x] /queue.js ( @chooban dans # 25389)
    • [x] /redirects-writer.js ( @PerfectPan dans # 23332), ( @taejs dans # 23785 - il a été fermé comme doublon)
    • [x] /utils.js + test ( @kawamataryo # 22171
    • [] src / redux
    • [ ] /Actions

      • [x] add-page-dependency.js ( @MichaelDeBoey dans # 22062)

      • [x] index.js ( @MichaelDeBoey dans # 22063)

      • [x] internal.js ( @blainekasten dans # 20457)

      • [] public.js ( @jlkiri dans # 22274)

      • [x] restricted.js ( @ 1natsu172 dans # 22297)

      • [x] types.js ( @ 1natsu172 dans # 22297)

    • [x] machines / page-component.js ( @kornil dans # 23277)
    • [x] / réducteurs

      • [x] babelrc.js ( @kornil dans # 24115)

      • [x] component-data-dependencies.js ( @kornil dans # 24028)

      • [x] components.js ( @Kornil dans # 24045)

      • [x] config.js ( @pieh dans # 23620)

      • [x] flattened-plugins.js (@ alisson-suzigan # 24062)

      • [x] index.js (@ alisson-suzigan dans # 23877)

      • [x] inference-metadata.js ( @kornil dans # 24381)

      • [x] jobs.js ( @kornil dans # 24209)

      • [x] jobsv2.js ( @gabrieluizramos dans # 23708)

      • [x] last-actions.js (@ alisson-suzigan dans # 23771)

      • [x] nœuds par type.js (@ alisson-suzigan # 24419)

      • [x] nodes-touched.js ( @carrotderek dans # 24247)

      • [x] nodes.js (@ alisson-suzigan dans # 23771)

      • [x] page-data-stats.js ( @carrotderek dans # 24082)

      • [x] page-data.js ( @taejs dans # 23738)

      • [x] pages.js ( @hiwelo dans # 23701)

      • [x] program.js ( @tgallacher dans # 24941)

      • [x] redirects.js ( @akshitkrnagpal dans # 22810)

      • [x ]olved-nodes.js (@ alisson-suzigan dans # 24062)

      • [x] schema-customization.js ( @kornil dans # 24259)

      • [x] schema.js ( @hiwelo dans # 23591)

      • [x] static-query-components.js ( @hiwelo dans # 23475)

      • [x] status.js ( @hiwelo dans # 23474)

      • [x] themes.js ( @taejs dans # 23716)

      • [x] webpack-compilation-hash.js ( @ chrisq21 dans # 23439)

      • [x] webpack.js ( @hiwelo dans # 23566)

    • [x] index.js ( @blainekasten dans # 20457)
    • [x] nodes.js ( @blainekasten dans # 21010)
    • [x] persist.js ( @blainekasten dans # 20457)
    • [x] plugin-runner.js ( @kawamataryo dans # 22476)
    • [x] run-fast- filters.js (
    • [] src / schema
    • [] extensions / index.js
    • [] déduire /

      • [] add-inferred-fields.js

      • [x] build-example-data.js ( @chooban dans # 23389)

      • [] index.js

      • [x] inference-metadata.js ( @chooban dans # 23264)

      • [x] est un entier de 32 bits.js (

      • [x] is-file.js ( @chooban dans # 23093)

      • [x] type-conflict-reporter.js ( @chooban dans # 23264)

    • [ ] les types/

      • [x] built-in-types.js ( @ mottox2 dans # 22391)

      • [x] date.js ( @ sasurau4 dans # 22430)

      • [x] dérivés-types.js ( @ sasurau4 dans # 22442)

      • [x] filter.js ( @ sasurau4 dans # 22493)

      • [x] node-interface.js (@ alisson-suzigan dans # 26733)

      • [x] pagination.js (@ alisson-suzigan dans # 23717)

      • [] sort.js

      • [x] type-builders.js ( @PerfectPan dans # 23892)

      • [] type-defs.js

    • [x] context.js
    • [] index.js
    • [] node-model.js
    • [] print.js (@LinnJS)
    • [x] resolvers.js
    • [] schema-composer.js
    • [x] schema.js (@ alisson-suzigan dans # 23717)
    • [] src / utils
    • [x] traceur /

      • [x] index.js ( @kawamataryo # 22296)

      • [x] jaeger-local.js ( @chooban dans # 23656)

      • [x] zipkin-local.js (@kawamataryo)

    • [x] travailleur /

      • [x] enfant.js ( @kawamataryo # 22583)

      • [x] page-data.js ( @kawamataryo # 22155)

      • [x] pool.js ( @kawamataryo # 22150)

      • [x] render-html.js ( @kawamataryo # 22263)

    • [x] /api-browser-docs.js ( @gabrieluizramos dans # 23688)
    • [x] /api-node-docs.js ( @gabrieluizramos dans # 23688)
    • [] /api-node-helpers-docs.js
    • [x] /api-runner-error-parser.js ( @LekoArts dans # 20597)
    • [] /api-runner-node.js
    • [x] /app-data.js ( @kawamataryo dans # 22076)
    • [] /babel-loader-helpers.js (#kornil dans # 25100)
    • [] /babel-loader.js
    • [x] /babel-parse-to-ast.js ( @ john015 dans # 22480)
    • [x] /browserlist.js ( @kawamataryo dans #
    • [x] /cache.ts ( @mattkane dans # 20626)
    • [x] /create-node-id.js ( @Pittan dans # 22096)
    • [x] /create-schema-customization.js ( @ mottox2 dans # 22392)
    • [x] /detect-port-in-use-and-prompt.js ( @ mottox2 dans # 22061)
    • [x] /eslint-config.js ( @dvrylc dans # 22294)
    • [x] /gatsby-dependents.js ( @dvrylc dans # 22422)
    • [x] /gatsby-webpack-eslint-graphql-schema-reload-plugin.js ( @ sasurau4 # 22408)
    • [x] /gatsby-webpack-stats-extractor.js ( @ sasurau4 # 22404)
    • [x] /get-cache.js ( @ cola119 dans # 22094)
    • [x] /get-latest-apis.js ( @ cola119 dans # 22097)
    • [x] /get-public-path.js ( @ cola119 dans # 22093)
    • [x] /get-ssl-cert.js ( @ mottox2 dans # 22447)
    • [x] /get-static-dir.js ( @ mottox2 dans # 22083)
    • [x] /get-value-at.js ( @martijnjanssen dans # 22182)
    • [x] /is-32-bit-integer.js ( @Pittan dans # 22138)
    • [x] /jobs-manager.js ( @martijnjanssen dans # 22189)
    • [x] /js-chunk-names.js ( @ mottox2 dans # 22289)
    • [x] /local-eslint-config-finder.js ( @ mottox2 dans # 22403)
    • [x] /merge-gatsby-config.js ( @taejs dans # 23789)
    • [x] /normalize-page-path.js ( @martijnjanssen dans # 22188)
    • [x] /page-data.js ( @hiwelo dans ~ # 23436 ~ # 23991)
    • [x] /page-html.js ( @kawamataryo dans # 22118)
    • [x] /path.js ( @kawamataryo dans # 22130)
    • [x] /prepare-regex.js ( @ mottox2 dans # 22133)
    • [] /profile.js
    • [x] /reach-router-add-basecontext-export-loader.js
    • [x] /source-nodes.js
    • [x] /stack-trace-utils.js ( @ sasurau4 dans # 22251)
    • [x] /test-require-error.js ( @ sasurau4 dans # 22265)
    • [x] /webpack-error-utils.js ( @ sasurau4 dans # 22278)
    • [x] /webpack-helpers.js ( @ sasurau4 dans # 22279)
    • [x] /webpack-hmr-hooks-patch.js ( @ sasurau4 dans # 22280)
    • [x] /webpack-plugins.js ( @ sasurau4 dans # 22378)
    • [x] /webpack-utils.js ( @ sasurau4 dans # 22381)
    • [] /webpack.config.js

      - [x] /websocket-manager.js ( @Eyas dans # 22510)

  • [x] packages / gatsby-cli

    • [x] src / reporter
    • [x] enregistreurs

      • [x] encre ( @arthurjdam dans # 22782)

      • [x] composants ( @arthurjdam dans # 22782)



        • [x] develop.js (


        • [x] error.js ( @Naturalclar dans # 22098)


        • [x] messages.js ( @ cola119 dans # 22084)


        • [x] progress-bar.js ( @Naturalclar dans # 22081)


        • [x] spinner.js ( @Naturalclar dans # 22080)



      • [x] cli.js ( @arthurjdam dans # 22782)

      • [x] context.js (

      • [x] index.js ( @arthurjdam dans # 22782)

      • [x] ipc / index.js ( @anoriqq dans # 23960)

      • [x] json / index.js ( @ wiput1999 dans # 24140)

      • [x] yurnalist / index.js ( @blainekasten dans # 24224)

    • [x] redux ( @Kornil dans # 22292)

      • [x] actions.js

      • [x] index.js

      • [x] reducer.js

    • [x] constants.js ( @ cola119 dans # 22084)
    • [x] errors.js ( @blainekasten dans # 24226)
    • [x] index.js ( @blainekasten dans # 22869)
    • [x] prepare-stack-trace.js ( @blainekasten dans # 24226)
    • [x] types.js ( @blainekasten dans # 22869)
    • [x] src / erreurs-structurées ( @LekoArts dans # 20597)
    • [x] erreur de construction.js
    • [x] error-map.js
    • [x] error-schema.js
    • [x] src / util
    • [x] calc-elapsed-time.js ( @Naturalclar dans # 22081)
    • [x] configstore.js ( @ mottox2 dans # 22180 renommé package-manager)
    • [x] assurer-windows-drive-letter-is- uppercase.js (
    • [x] is-tty.js ( @ mottox2 dans # 22129)
    • [x] version.js ( @ mottox2 dans # 22176)
    • [x] src / create-cli.js ( @alexpyzhianov dans # 23650)
    • [x] src / did-you-mean.js ( @ mottox2 dans # 22068)
    • [x] src / index.js ( @blainekasten dans # 19923)

      - [x] src / init-starter.js ( @ mottox2 dans # 22086)

  • [x] packages / gatsby-core-utils

    • [x] src /
    • [x] /ci.js ( @danielkov dans # 22047)
    • [x] /cpu-core-count.js ( @danielkov dans # 22048)
    • [x] /create-content-digest.js ( @danielkov dans # 22049)
    • [x] /create-require-from-path.js ( @danielkov dans # 22050)
    • [x] /get-config-file.js ( @danielkov dans # 22051)
    • [x] /get-gatsby-version.js ( @danielkov dans # 22052)
    • [x] /index.js ( @danielkov dans # 22053)
    • [x] /path.js ( @danielkov dans # 22054)
    • [x] /physical-cpu-count.js ( @blainekasten dans # 22122)

      - [x] /url.js ( @danielkov dans # 22056)

  • [] packages / gatsby-link ( @herecydev dans # 22027)

    • [] src /
    • [] /index.js + test

      - [] /parse-path.js + test

  • [x] packages / gatsby-page-utils

    • [x] src /
    • [x] /create-path.js + test
    • [x] /ignore-path.js + test
    • [x] /index.js
    • [x] /validate-path.js + test

      - [x] /watch-directory.js

  • [x] packages / gatsby- telemetry (

    • [x] src /
    • [x] error-helpers.js + test
    • [x] /event-storage.js
    • [x] /flush.js ( @blainekasten dans # 25886)
    • [x] /index.js
    • [x] /is-truthy.js + test ( @blainekasten dans # 25884)
    • [x] /postinstall.js
    • [x] /repository-id.js + test ( @ mottox2 dans # 22474)
    • [x] /send.js
    • [x] /showAnalyticsNotification.js
    • [x] /store.js

      - [x] /telemetry.js + test

  • [x] packages / gatsby-react-router-scroll ( @blainekasten dans # 24306)

    • [x] src /
    • [x] /index.js
    • [x] /ScrollBehaviorContext.js
    • [x] /ScrollContainer.js
    • [x] /StateStorage.js
help wanted not stale TypeScript migration

Commentaire le plus utile

Énorme jalon! gatsby-cli est 100% converti en TypeScript! Merci à tous pour votre travail incroyable 💜💜💜

Tous les 130 commentaires

Je reprends volontiers gatsby-link. Je voulais en savoir plus là-bas!

@herecydev Cela sonne bien! Je vais mettre ton nom! Celui-ci est relativement petit et isolé, alors n'hésitez pas à faire tout ce package dans un seul PR si vous le souhaitez.

@blainekasten juste quelques commentaires préliminaires. Il y a pas mal de variables globales / fenêtres: __BASE_PATH__ , ___navigate , ___push , ___replace , __PATH_PREFIX__ , ___loader . Existe-t-il une stratégie pour les rendre disponibles à la dactylographie? Je pense qu'ils sont tous définis à partir du package gatsby.

@herecydev ces variables sont par gatsby-link .

Je suis ravi de contribuer, quel package suggérez-vous pour commencer?

@aminkhp génial !! J'adorerais que nous puissions commencer à découper des fichiers individuels dans les PR. Vous voulez vous attaquer à gatsby-core-utils ? J'adorerais que vous ne fassiez qu'un seul fichier par PR car ils sont tous très isolés.

Je serais heureux de contribuer à certains types. Je serais capable de m'attaquer à gatsby-page-utils .

J'ai jeté un coup d'œil à gatsby-core-utils au fait, et il semble que true-case-path n'est qu'un fichier vide. Je ne sais pas si c'est intentionnel, mais cela pourrait valoir la peine de supprimer du dépôt et de supprimer de la liste? https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-core-utils/src/true-case-path.js

@robertrbairdii Super! Si vous pouviez diviser le travail et soumettre 1 PR pour chaque ligne que j'avais, ce serait fantastique.

Bon point concernant les gatsby-core-utils. cc @aminkhp

J'aimerais essayer src/commands/build-javascript.js .

ADDITION: j'aimerais aussi aborder babel-preset-gatsby

J'ai passé du temps dans src/redux/actions/public.js avant, donc je pense que je peux vous aider.

@blainekasten Je regardais le .babelrc lors de la conversion de gatsby-page-utils et j'ai remarqué qu'il n'y avait aucune référence à @babel/plugin-transform-typescript dans babel-preset-gatsby-package (https: // github. com / gatsbyjs / gatsby / blob / master / packages / babel-preset-gatsby-package / index.js
). Et en exécutant une version de test, les fichiers convertis .ts ne parviennent pas dans le dossier /dist .

La configuration babel à la racine du dépôt a un remplacement pour elle https://github.com/gatsbyjs/gatsby/blob/master/.babelrc.js#L12 Et cette configuration semble être importée par d'autres packages tels que https: //github.com/gatsbyjs/gatsby/blob/master/packages/gatsby/babel.config.js

Autant que je sache, vous ne pouvez passer les extensions que comme argument via l'interface de ligne de commande, nous devrons donc ajouter le drapeau --extensions à chaque référence babel dans la section scripts de tous les package.json des packages en cours de conversion. Vous pouvez alors soit fournir le remplacement comme cela est fait dans la racine .babelrc soit ajouter @babel/plugin-transform-typescript dans babel-preset-gatsby-package et permettre à des valeurs comme isTSX d'être configurées via les options passées dans le package.

Je pense que cela bloquera la fusion et la publication de certaines des conversions TS.

@robertrbairdii Je suis arrivé aux mêmes conclusions sur mon PR: https://github.com/gatsbyjs/gatsby/pull/22027

Ce n'était pas évident au début, mais heureusement, il y a de l'art antérieur dans le projet gatsby-cli à examiner. Cela peut valoir la peine de parcourir tous les packages pour prendre en charge ts, ce qui rendra les fichiers plus accessibles dans leur ensemble

J'adorerais aider et je n'ai aucune préférence. Pouvez-vous me recommander certaines pièces à migrer?

@danielkov Vu le commentaire de @blainekasten (https://github.com/gatsbyjs/gatsby/issues/21995#issuecomment-595965697), je pense que vous pourriez commencer en gatsby-core-utils

@MichaelDeBoey J'ai aussi mes yeux sur gatsby-cli / src / structural-errors si personne d'autre n'est dessus, puis je passe à gatsby-core-utils dans un autre PR. Ça sonne bien?

@danielkov Celui-ci est déjà pris par @LekoArts dans # 20597

Je vois que # 22031 s'adresse à l'un des fichiers de gatsby-core-utils . Dois-je attendre cette fusion ou démarrer de manière indépendante et résoudre les conflits une fois terminé?

@danielkov Vous pouvez simplement commencer à travailler dessus.
Les conflits peuvent être corrigés avant la fusion. 🙂

@MichaelDeBoey mes PR actuellement ouverts incluent tous ceux qui sont fermés pour le moment. Si vous avez le temps, vérifierez-vous que c'est maintenant correct?

J'aimerais travailler sur src/utils/app-data.js , utils/browserslist

J'aimerais travailler sur components/spinner.js

Où en sommes-nous avec la conversion des plugins en tapuscrit? des choses comme les plugins sources, le manifeste, hors ligne, etc.

J'aimerais travailler sur

  • packages/gatsby-cli/src/reporter/loggers/ink/components/messages.js (modifié)
  • packages/gatsby-cli/src/reporter/constants.js

Où en sommes-nous avec la conversion des plugins en tapuscrit? des choses comme les plugins sources, le manifeste, hors ligne, etc.

Nous n'allons pas les convertir (encore)? Comme nous pensons qu'il pourrait être plus difficile pour les gens d'y contribuer. Les packages principaux de Gatsby sont pour la plupart gérés uniquement par nous, nous pensons donc que cela vaut la peine de le faire car cela nous facilite la vie lorsque vous travaillez dessus.

@blainekasten Je ne suis pas sûr à 100% si nous devrions refactoriser des parties de navigateur comme gatsby-link, gatsby-image et notre cache-dir. Cela pourrait conduire à de plus gros lots.

salut! J'aimerais travailler sur

  • packages / gatsby / src / utils / create-node-id.js

J'aimerais essayer

  • packages/gatsby/src/utils/get-cache.js
  • packages/gatsby/src/utils/get-latest-apis.js
  • packages/gatsby/src/utils/get-public-path.js

J'aimerais essayer

  • packages/gatsby/src/utils/get-cache.js
  • packages/gatsby/src/utils/get-latest-apis.js
  • packages/gatsby/src/utils/get-public-path.js

@ cola119 Je vous suggère de créer d'abord un PR pour tous les autres fichiers sur
Ne pense pas que nous voulons attendre quelque chose, quand quelqu'un d'autre pourrait y travailler

Je vais travailler sur stack-trace-utils.js

Je travaille sur jobs-manager.js

Je vais prendre src/redux/actions/types.js

J'aimerais essayer packages/gatsby-image/src/index.js .

redux/actions/restricted.js dépend aussi de redux/actions/types.js , donc je vais le prendre.

Je m'occupe du dossier /redux sur gatsby-cli sur https://github.com/gatsbyjs/gatsby/pull/22292

Je voudrais commencer par packages/gatsby/src/utils/eslint-config.js - # 22294

Je travaille sur packages/gatsby/src/utils/gatsby-dependents.js - # 22422

J'adorerais aider avec ça, @blainekasten. Des suggestions pour un premier contributeur?

Il y a pas mal de variables globales / window: __BASE_PATH__, ___navigate, ___push, ___replace, __PATH_PREFIX__, ___loader.

Si personne ne s'y oppose, @blainekasten , je pense que je vais essayer de convertir babel-plugin-remove-graphql-queries/src/murmur.js .

@ zachtylr21 d' accord

@ parikshitgupta1 Oh, votre commentaire précédent était-il dirigé contre moi? Je peux aussi travailler dessus, si nécessaire.

Si vous cherchez toujours de l'aide, j'aimerais faire ce que je peux. Y a-t-il quelque chose de spécifique que vous souhaitez obtenir de l'aide pour la conversion et qui n'a pas encore été attribué?

Hey @AmyShackles merci d'avoir demandé, bien que de mon côté, il ne reste plus rien, bien que voyons dans le fil.

N'hésitez pas à prendre n'importe quel élément de cette liste. Nous apprécions tous les RP, qu'ils soient petits / faciles ou gros / compliqués :)

Salut @blainekasten J'envoie des PR pour:

  • gatsby src / load-plugins # 22504
  • gatsby websocket-manager # 22510
  • gatsby-telemetry # 22532
  • gatsby-link # 22563

Certains d'entre eux sont plus grands que je ne l'espérais, mais leurs dépendances ont été difficiles à démêler.

J'adorerais contribuer! Y a-t-il un petit fichier facile sur lequel je peux commencer à travailler? Je me familiarise toujours avec Gatsby: D

Je suis là pour t'aider. Quiconque demande de l'aide spécifiquement ou je vais en choisir un.

@blainekasten

Je voulais rendre mes 2 cents à la communauté. Le week-end dernier, j'ai dû creuser profondément dans la base de code gatsby.js, car j'avais ce problème ennuyeux avec la vérification de type dans mon projet: # 22070

J'ai donc eu le temps le week-end dernier de commencer un énorme refactoring. Je n'ai pas le temps de continuer maintenant, mais j'avais refactorisé en dactylographié gatsby-telemetry gatsby-core-utils et partiellement d'autres projets.

https://github.com/gatsbyjs/gatsby/pull/22817

J'espère que cela donnera quelques idées.Si besoin, je peux expliquer mes conclusions et mes décisions, soit ici, soit sur skype: justfly1984

Souhaitez-vous contribuer, des suggestions par où commencer?

J'aimerais d'abord essayer de travailler sur packages\gatsby\src\bootstrap\prefer-default.js pour en savoir plus sur le fonctionnement des choses, si cela vous convient.

Mise à jour: PR soumis https://github.com/gatsbyjs/gatsby/pull/22958

J'aimerais vraiment contribuer! Puis-je éventuellement convertir packages/gatsby/reducers/themes.js ?

Matin. Je prends un laissez-passer à src/schema/infer/is-file.js ce matin. Quelque chose, espérons-le petit, pour me faire la tête en premier!

J'essaye aussi à src/schema/infer/inference-metadata . Je pense que c'est presque terminé, mais essayer d'ajouter des types me pose quelques problèmes en termes de code accessible.

# 23093 ajouté pour is-file . C'est un changement non testé, donc il faudra peut-être un PR préalable pour ajouter d'abord des tests.

Bonjour à tous!

Je voulais juste passer et dire un merci HUUUUUUGE! La réponse de la communauté a été incroyable et (un peu) écrasante 😅. Mais continuez à venir! Ya'll sont inestimables et accélèrent cette conversion 100x.

  • À ceux qui ont soumis des PR, merci!
  • A ceux dont les PR n'ont pas encore été revus, nous y arriverons! Certains demandent plus de travail que d'autres et nous avons beaucoup à faire (y compris d'autres fonctionnalités que nous voulons lancer pour tout le monde!)
  • Pour ceux qui souhaitent s'impliquer, faites-le! N'hésitez pas à mettre votre nom sur un fichier dans la description et à commencer à travailler dessus. Nous voulons l'implication de tous.

Nous faisons de grands progrès. Continuons comme ça!

J'ai fait un PR pour babel-plugin-remove-graphql-queries/murmur.js mais je ne sais pas comment obtenir mon nom par le fichier dans la description. Quelqu'un peut-il aider avec ça?

@ zachtylr21 C'est fait! Merci pour le travail. Une fois que vous avez fusionné ce PR et que vous avez rejoint l'organisation gatsby, vous pourrez tout faire vous-même !! : partying_face:

Je viens de remarquer que l'action par étapes lint ne se déclenchera pas s'il n'y a que des modifications dans un fichier TS: https://github.com/gatsbyjs/gatsby/blob/master/package.json#L78

Hey! Y a-t-il des problèmes spécifiques avec src/create-cli.js en gatsby-cli ? J'aimerais le prendre si ça va

Salut! J'ai fait un PR pour gatsby/src/query/redirects-writer.js . Quelqu'un peut-il m'aider à consulter la liste? Merci beaucoup! BTW, c'est mon premier PR à Gatsby, donc je crains de tout gâcher. Tout conseil m'aidera beaucoup.

Salut les gens! Je suis heureux de me joindre à l'effort, et si personne ne regarde actuellement src/utils/page-data.js je suis heureux d'essayer de commencer à aider: +1:

Salut tout le monde 👋 Je viens de faire un petit PR pour redux/reducers/webpack-compilation-hash # 23439. Quelqu'un pourrait-il l'ajouter à la liste s'il vous plaît?

S'il n'y a personne dessus pour le moment, demain je pourrais travailler sur de petits réducteurs comme redux/reducers/webpack , redux/reducers/status (# 23474), redux/reducers/static-query-components (# 23475), redux/reducers/schema (# 23476) et ainsi de suite :)

J'aimerais contribuer avec log-line-function.js pour commencer, d'accord?

Salut! 👋
J'adorerais participer! Puis-je commencer avec le src/bootstrap/remove-stale-jobs.js au packages/gatsby ? 😄

~ Je viens de vérifier la liste des fichiers; le PR pour gatsby/src/utils/page-data.js (# 23436) est manquant ~
(je viens de voir que je peux mettre à jour la liste moi-même maintenant, merci!)

Et je viens de pousser la migration gatsby/src/utils/webpack.ts (# 23566)

Je vais faire packages/gatsby/src/redux/reducers/config.js (dans le cadre de quelques corrections)

@moonmeister Merci d'avoir fait ça! Je devrais probablement mentionner que le numéro PR pour murmur.js est # 22458, si vous voulez le mettre également à côté de mon nom.

J'ai eu un petit problème avec ma fourche, j'ai donc dû fermer # 23476 et ouvrir # 23591 à la place.
Même code, mais nouveau PR à revoir. Désolé.

De plus, celui-ci devrait être prêt pour examen (dernier conflit résolu avec master ): # 23436

J'ai un gatsby/src/utils/tracer/jaeger-local migré prêt à être poussé, mais à la lecture de la documentation, il semble que le fichier soit là comme exemple pour que quelqu'un puisse le renvoyer dans gatsby, pas dans le cadre de l'application elle-même. S'il devait être migré et que la documentation était mise à jour pour pointer vers le fichier TS à la place, est-ce que l'alimentation de ce fichier dans gatsby en tant que configuration fonctionnerait toujours?

Je me rends compte que je pourrais essayer de configurer une instance de jaeger pour l'essayer, mais aussi quelqu'un de plus compétent pourrait y répondre en beaucoup moins de temps! :)

@chooban Dans la documentation, nous dist . dist répertoire

Bonjour 👋 Puis-je commencer par page-hot-reloader.js ?

Je suis ravi d'aider à migrer Gatsby vers Typescript

Salut les gens!
J'aimerais aussi contribuer. Puis-je commencer avec src/schema/types/pagination.js ?

@ alisson-suzigan Salut mon frère, je suis heureux de vous voir ici ❤️

Je prendrai le fichier src/commands/build.js
souhaite moi bonne chance 🤓

Salut les gens!
Je travaille actuellement sur gatsby/src/reducers/program.js et j'ai une série de questions.

Pour le moment, il semble qu'il y ait beaucoup d'éléments du fichier source js qui ne correspondent pas à l'interface décrite dans IGatsbyState .
Il devrait accueillir un objet IProgram , mais il semble y avoir une série d'éléments manquants.

Dans le fichier JS, le state est initialisé avec un accessoire state que je ne trouve pas dans l'interface IProgram . Je l'ai remplacé par status , cela pourrait être une faute de frappe.
Mais alors, l'action SET_PROGRAM_EXTENSIONS définit un accessoire extensions qui n'existe pas du tout dans l'interface IProgram . Avez-vous une idée de son contenu?

De plus, ce qui est obligatoire ne semble pas correspondre à ce qui a été initialisé.

@blainekasten : auriez-vous plus d'informations sur cette interface? Il semble que vous l'ayez créé. Je suis heureux d'avoir une discussion rapide sur Discord si c'est plus facile :)

Screenshot of my IDE with the reducer file and the interface side by side

Salut,
Maintenant, j'aimerais travailler dans ces fichiers:

  • packages/gatsby/src/redux/reducers/index.js
  • packages/gatsby/src/redux/reducers/nodes.js
  • packages/gatsby/src/redux/reducers/last-action.js

Est-ce que ça va?

Salut! J'aimerais travailler sur 🙌

  • packages/gatsby/src/schema/types/sort.js

J'ai étudié ces fichiers ( /babel-loader-helpers.js et
/babel-loader.js ) peuvent être migrés,
Mais c'est probablement difficile car babel-loader ne fournit pas leur type.

src/utils/profile.js est dans la liste mais le contenu du fichier est entièrement commenté. Je pourrais pousser un PR pour le supprimer? ;)

Je voudrais terminer le package sur lequel je travaillais et convertir babel-plugin-remove-graphql-queries/src/index.js

Ajouté # 23823 pour les nœuds source.

Je prendrai le fichier src/create-cli.js

@devrchancay Hé! Désolé pour la confusion, mais j'ai déjà fait un travail initial dessus https://github.com/gatsbyjs/gatsby/pull/23650 , mais vous pouvez y participer par tous les moyens

ok pas de problème je prendrai autre chose 🤔

Il est bon que nous soyons nombreux à contribuer

Je vais travailler sur gatsby-cli/src/reporter/loggers/ipc/index.js !

salut
Je souhaite travailler sur gatsby/src/query/queue.js

@hiwelo Vous travaillez toujours sur gatsby/redux/reducer/component.js ?
J'ai travaillé sur page-component et c'est assez lié, faites-moi savoir si je peux vous aider.

@Kornil Je ne travaille pas dans gatsby/redux/reducer/component . Afaik, ce fichier n'est pas attribué pour le moment :)

(J'ai travaillé sur gatsby/redux/reducer/static-query-components , mais je ne me souviens pas d'avoir jeté un coup d'œil à celui-ci jusqu'à présent)

J'adorerais commencer à contribuer! Je peux ramasser gatsby\packages\gatsby\src\redux\reducers\page-data-stats.js pour me mouiller les pieds.

Je vais essayer le réducteur babelrc.js de Gatsby

Je peux acheter des réducteurs nodes-touched et nodes-by-touch .

@ alisson-suzigan J'ai fait gatsby-cli/src/reporter/loggers/json/index.js PR # 24140 mais j'ai oublié d'ajouter mon nom dans la liste. Je suis désolé à ce sujet

@carrotderek Je t'ai vu schema-customization , je viens de le faire, je n'ai pas vu ton nom plus tôt, pardonne-moi.

Prendre requires-writer.js partir de gatsby

Énorme jalon! gatsby-cli est 100% converti en TypeScript! Merci à tous pour votre travail incroyable 💜💜💜

puisque certains fichiers sont référencés à partir des documents: un changement de lien dans les documents doit-il également inclure un PR?

Heureux d'essayer le réducteur de programme ( src/redux/reducers/program.js ). Voir # 24941

Je vois que ces PR sont fusionnés, mais les fichiers sont toujours décochés:

index.js ( @ascorbic dans # 24816)
queue.js ( @chooban dans # 25389)
date.js ( @ sasurau4 dans # 22430)
dérivés-types.js ( @ sasurau4 dans # 22442)

Juste une suggestion. que diriez-vous d'utiliser https://github.com/airbnb/ts-migrate ?

Un des commentaires (salut, @pvdz!) J'ai eu un PR il y a peu de temps était d'utiliser Array<string> au lieu de string[] pour mettre les choses en ligne avec Map, Set, etc. Nous avons fini par aller dans le même sens sur un projet de travail, et j'ai écrit un codemod pour faire le travail pour moi.

Cette décision de style a-t-elle été officialisée et aimeriez-vous qu'un RP les change d'un seul coup?

@chooban En fait, oui :) Mais l'absence de codemod a rendu les choses un peu plus difficiles.

Votre codemod est-il livré avec une règle de charpie pour éviter de futures régressions? Pouvez-vous publier le codemod?

function transform(file, api) {
  const j = api.jscodeshift

  const root = j(file.source)

  root
    .find(j.TSTypeAnnotation, {
      typeAnnotation: {
        type: 'TSArrayType',
      },
    })
    .replaceWith(p => {
      return j.tsTypeAnnotation(
        j.tsTypeReference(
          j.identifier(
            'Array'
          ),
          j.tsTypeParameterInstantiation([p.node.typeAnnotation.elementType])
        )
      )
    })

  return root.toSource()
}

module.exports = transform
module.exports.parser = 'tsx'

C'est ce que j'ai imaginé. C'est le deuxième codemod que j'ai écrit, donc si quelqu'un le regarde et pense "pourquoi est-il si complexe?" alors j'aimerais quelques pointeurs!

Il n'y a pas encore de règle de charpie, mais il ne semble pas que ce soit trop difficile à faire.

Il s'avère qu'il existe déjà une règle pour cela, et c'est réparable: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/array-type.md C'est aussi plus précis que mon codemod. Intéressant. Je vais devoir exécuter certains de ces autres correctifs dans notre base de code dans AST Explorer pour voir pourquoi je les ai manqués.

J'ai ajouté le # 26738.

Comment puis-je aider?

Je voudrais essayer les packages / gatsby / src / utils / api-node-helpers-docs.js et /packages/gatsby-link/src/parse-path.js

packages / gatsby / src / utils / profile.js semble être un changement inutile bien que je puisse simplement mettre à jour l'extension pendant que j'étais sur d'autres choses

@LekoArts @blainekasten J'aimerais travailler sur ces

packages/gatsby/src/schema/schema-composer.js
packages/gatsby/src/schema/types/type-defs.js

comme je suis nouveau à dactylographié, je vais commencer avec ces fichiers.
Merci !

Je suis désolé si quelqu'un veut prendre src/redux/actions/public.js ( @jlkiri dans # 22274) - vous pouvez le prendre - je n'aurai peut-être pas le temps de le terminer pendant un moment.

Je suis prêt à essayer de refactoriser gatsby/src/bootstrap/page-hot-reloader.js

J'aurais peut-être sauté une arme à feu mais j'ai rapidement remanié le gatsby-link / src / parse-path.js et le test. Pr peut être vu ici:
https://github.com/gatsbyjs/gatsby/pull/27264

Je vais vous aider avec load-themes/index.js .

Je veux travailler avec gatsby / packages / gatsby / src / schema / schema-composer.js

@khushijindal Il y a déjà un PR ouvert pour cela :) https://github.com/gatsbyjs/gatsby/pull/27241


Veuillez regarder les commentaires précédents et les PR pour que vous ne travailliez pas tous sur les mêmes choses :) Merci pour toutes vos contributions!

@khushijindal Il y a déjà un PR ouvert :) # 27241

Veuillez regarder les commentaires précédents et les PR pour que vous ne travailliez pas tous sur les mêmes choses :) Merci pour toutes vos contributions!

En fait, il n'a pas été marqué dans le fichier ci-dessus, c'est pourquoi. Cool, je vais chercher autre chose XD.

Hé, je serai heureux de vous aider avec la migration de gatsby/src/query/query-watcher.js

J'adorerais ramasser quelque chose si ce n'est déjà fait. N'hésitez pas à m'attribuer ce qui est gratuit!

Je serais ravi de vous aider, mais ce serait l'une de mes premières contributions open source et je ne sais pas par où commencer. Existe-t-il encore des fruits potentiellement à portée de main?

@LinnJS et @neobats : n'hésitez pas à réclamer tout fichier listé ci-dessus qui n'a pas de nom contre lui. Ajoutez simplement un commentaire ici en disant que vous y travaillez, comme @ArcaneDiver l'a fait.

Conseils pour vous impliquer: lisez d'abord les documents de contribution et découvrez comment configurer votre environnement local . Lisez les instructions de ce numéro pour un guide sur notre style de code TypeScript. Une fois que vous avez réclamé le fichier sur lequel travailler, convertissez-le localement et assurez-vous qu'aucune erreur ne s'affiche dans votre IDE. Exécutez yarn typecheck et yarn lint:code dans la racine avant d'ouvrir le PR, qui affichera toutes les erreurs. Une fois que vous êtes prêt, ouvrez le PR et l'un de nous l'examinera. Merci et bonne chance!

Le fichier node-interface.js a déjà été migré et fusionné dans ce PR.

Je vais aider avec /src/query/file-parser.js et tester

Je prendrai print.js !

Je vais travailler sur /src/query/graphql-errors.js

Hé, j'aimerais travailler sur src/query/query-compiler.js

Hé, j'aimerais travailler sur /api-node-helpers-docs.js :)

Salut, je vais prendre bootstrap/load-themes/index.js

Je vais travailler sur src/schema/node-model.js et src/schema/schema-composer.js

Je vais travailler sur src/schema/index.js et src/schema/infer/index.js .

De plus, src/schema/schema.js est vérifié comme terminé mais le PR associé ne tape pas réellement le fichier (change juste une ligne pour que cela fonctionne pour un fichier typé différent)

Bonjour, j'aimerais travailler sur packages/gatsby/src/utils/babel-loader.js .

Hey @davad Je travaillais déjà sur schema-compose.js ici https://github.com/gatsbyjs/gatsby/pull/27241 . Merci !

Salut @LekoArts Je voudrais travailler sur gatsby/src/utils/webpack.config.js Merci.

Hey @LekoArts @ascorbic J'ai besoin d'aide ici https://github.com/gatsbyjs/gatsby/pull/27241 Je ne suis pas sûr de ce qui se brise dans circleci, pouvez-vous m'indiquer où est le problème. Merci !

Est-ce que src/utils/api-runner-node.js ou src/utils/api-node-helpers-docs.js ouverts?

J'aimerais travailler sur l'un d'entre eux s'ils le sont.

Je vais travailler sur packages/babel-preset-gatsby/index.js + test

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

Oppenheimer1 picture Oppenheimer1  ·  3Commentaires

benstr picture benstr  ·  3Commentaires

rossPatton picture rossPatton  ·  3Commentaires

totsteps picture totsteps  ·  3Commentaires

dustinhorton picture dustinhorton  ·  3Commentaires