Gatsby: [Umbrella] TypeScript-Migration (Hilfe gesucht!)

Erstellt am 5. März 2020  ·  130Kommentare  ·  Quelle: gatsbyjs/gatsby

Hallo Community!

Gatsby schreibt unsere Kerncodebasis in TypeScript neu! Kasse des RFC: # 21798

Wir würden lieben lieben lieben Ihre Hilfe! Diese Arbeit ist unglaublich wichtig, damit Gatsby ein stabiles Produkt ist und Sie ein Teil davon sein können! Wir suchen Community-Mitglieder, die bereit wären, in Übergangsdateien von .js zu .ts in die Codebasis zu springen und die richtigen Typisierungen hinzuzufügen. Wir haben einige Richtlinien, an die wir uns dabei halten möchten:

Gatsby TS-Richtlinien

  • Verwenden Sie nur benannte Exporte, keine Exportvorgabe.
  • Versuchen Sie beim Importieren eines Pakets immer, von der Community verwaltete Typen zu finden, anstatt uns selbst einzugeben. Schauen Sie sich das DefinitelyTyped Github-Repository an.
  • Entscheiden Sie sich für die Verwendung von Schnittstellen für Objekte und Funktionen.
  • Typ-Aliase sollten für Grundelemente, Gewerkschaften und Tupel verwendet werden
  • Das Zusammenführen von Schnittstellendeklarationen ist ein Anti-Pattern und sollte nicht intern verwendet werden.
  • Verwenden Sie die Syntax Array<type> anstelle der Syntax type[] , da diese klarer ist und mit integrierten Typen wie Map übereinstimmt.
  • Verwenden Sie die Hilfstypen von TypeScript, z. B. Record , anstatt Ihre eigenen zu definieren.
  • Jede Funktion sollte ihre Ein- und Ausgabe eingeben (auch wenn sie ableitbar ist).
  • Aufzählungen sind großartig, aber Vorsicht, sie werden Indexnummern zugeordnet, wenn sie nicht neu definiert werden. Dies kann seltsame Probleme für öffentliche APIs verursachen, die mit normalem JS zusammenarbeiten.
  • Der Typ any kann zum Stubben von Modultypen verwendet werden, deren Migration nicht möglich wäre. Es sollte jedoch nicht für funktionale Ein- / Ausgänge verwendet werden. Das Endziel dieser Migration besteht darin, NULL any Typen in der Codebasis zu haben. Prüfen Sie, ob unknown in diesem Zusammenhang sinnvoller ist. Verwenden Sie keine @ts-ignore Kommentare.
  • Schließlich und vor allem wollen wir, wann immer möglich, einfache Typen haben. In erster Linie sollten wir versuchen, Generika zu vermeiden. Generischer Code kann in hohem Maße wiederverwendbar sein, aber das kann auch die Wahrscheinlichkeit erhöhen, dass Dinge kaputt gehen. Wenn Sie Generika verwenden müssen, geben Sie diese entweder als Standardwerte an oder stellen Sie sicher, dass der generische Wert abgeleitet werden kann. Der Code sollte nach Möglichkeit einfach sein. TROCKEN ist nicht immer am besten.

Wenn Sie daran interessiert sind, sich zu engagieren, lesen Sie die folgende Liste. Wenn Sie daran interessiert sind, etwas zu tun, antworten Sie bitte als Kommentar. Ich werde Ihren Namen in eine Datei einfügen, damit andere wissen, dass er "beansprucht" wird. Wenn die PR zusammengeführt wird, werde ich das Kontrollkästchen aktivieren.

Tipps zum Mitmachen: Lesen Sie zuerst die Beitragsdokumente und erfahren Sie , wie Sie Ihre lokale Umgebung einrichten . Nachdem Sie behauptet haben, dass die Datei bearbeitet werden soll, konvertieren Sie sie lokal und stellen Sie sicher, dass in Ihrer IDE keine Tipp- oder Flusenfehler angezeigt werden. Führen Sie yarn typecheck und yarn lint:code im Stammverzeichnis aus, bevor Sie den PR öffnen, der alle Fehler anzeigt. Sobald Sie fertig sind, öffnen Sie die PR und einer von uns wird sie überprüfen. Danke und viel Glück!

### Dateiliste

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

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

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

  • [] packages / babel-preset-gatsby

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

      - [] /index.js + test

  • [] Pakete / Gatsby

    • [x] / Cache- Verzeichnis NICHT TUN
    • [] src / bootstrap
    • [x] Lade-Plugins ( @Eyas in # 22504)

      • [x] /index.js

      • [x] /load.js

      • [x] /validate.js

    • [] load-theme / index.js
    • [x] get-config-file.js ( @ mottox2 in # 22472)
    • [x] graphql-running.js ( @rayriffy in # 22860)
    • [x] index.js ( @ascorbic in # 24816)
    • [x] log-line-function.js ( @gabrieluizramos in # 23677)
    • [x] page-hot-reloader.js ( @jeffreymeng in # 27330)
    • [x] prepare- default.js (
    • [x] redirects-writer.js ( @ mottox2 in # 22530)
    • [x] remove-stale-jobs.js ( @gabrieluizramos in # 23538)
    • [x] require-writer.js ( @alexpyzhianov in # 24289)
    • [x] resolve-module-exports.js ( @Eyas in # 24519)
    • [x] schema-hot-reloader.js ( @ mottox2 in # 22497)
    • [x] src / Befehle
    • [x] /build.js ( @devrchancay in # 23695)
    • [x] /build-html.js ( @blainekasten in # 20535)
    • [x] /build-javascript.js ( @ mottox2 in # 22028)
    • [x] /build-utils.js ( @ mottox2 in # 22262)
    • [x] /clean.js ( @ mottox2 in # 22036)
    • [x] / Develop (
    • [x] /develop-static.js ( @blainekasten in # 22106)
    • [x] /repl.js ( @ mottox2 in # 22037)
    • [x] /serve.js ( @ mottox2 in # 22209)
    • [] src / db
    • [x] common / query.js
    • [x] loki / * NICHT TUN
    • [] index.js ( @arthurjdam in # 22725)
    • [x] node.js ( @pvdz in # 25199)
    • [] sanitize-node.js ( @arthurjdam in # 22725)
    • [x] src / internal-plugins NICHT TUN
    • [x] src / joi-schemas / joi.js ( @arthurjdam in # 22738)
    • [] src / query
    • [x] /better-queue-custom-store.js + test ( @chooban in # 25389)
    • [x] /error-parser.js + test ( @LekoArts in # 20597)
    • [] /file-parser.js + test ( @martingreilinger )
    • [] /graphql-errors.js (@jeffreymeng)
    • [x] /graphql-runner.js ( @ascorbic in # 21956)
    • [] /index.js + test - data-tracking.js
    • [] /query-compiler.js + test (@mohinderps)
    • [x] /query-runner.js ( @ mottox2 in # 22427)
    • [] /query-watcher.js ( @ArcaneDiver in # 27324)
    • [x] /queue.js ( @chooban in # 25389)
    • [x] /redirects-writer.js ( @PerfectPan in # 23332), ( @taejs in # 23785 - dies wurde als Duplikat geschlossen)
    • [x] /utils.js + test ( @kawamataryo # 22171
    • [] src / redux
    • [ ] /Aktionen

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

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

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

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

      • [x] eingeschränkte.js ( @ 1natsu172 in # 22297)

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

    • [x] machine / page-component.js (
    • [x] / Reduzierstücke

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

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

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

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

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

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

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

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

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

      • [x] last-action.js (@ alisson-suzigan in # 23771)

      • [x] node-by-type.js (@ alisson-suzigan # 24419)

      • [x] node-touch.js ( @carrotderek in # 24247)

      • [x] node.js (@ alisson-suzigan in # 23771)

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

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

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

      • [x] program.js (

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

      • [x] aufgelöst-node.js (@ alisson-suzigan in # 24062)

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

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

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

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

      • [x] theme.js ( @taejs in # 23716)

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

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

    • [x] index.js ( @blainekasten in # 20457)
    • [x] node.js ( @blainekasten in # 21010)
    • [x] persist.js ( @blainekasten in # 20457)
    • [x] plugin-running.js ( @kawamataryo in # 22476)
    • [x] run-fast-filter.js ( @pvdz in # 25055)
    • [] src / schema
    • [] extensions / index.js
    • [] schließen /

      • [] add-inferred-fields.js

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

      • [] index.js

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

      • [x] is-32-bit-integer.js ( @Pittan in # 22138)

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

      • [x] Typkonflikt -Reporter.js (

    • [] Typen /

      • [x] integrierte Typen.js ( @ mottox2 in # 22391)

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

      • [x] derivative-types.js ( @ sasurau4 in # 22442)

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

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

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

      • [] sort.js

      • [x] type-builders.js ( @PerfectPan in # 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 in # 23717)
    • [] src / utils
    • [x] Tracer /

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

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

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

    • [x] Arbeiter /

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

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

  • [x] packages / gatsby-cli

    • [x] src / Reporter
    • [x] Logger

      • [x] Tinte ( @arthurjdam in # 22782)

      • [x] Komponenten ( @arthurjdam in # 22782)



        • [x] Develop.js ( @arthurjdam in # 22782)


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


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


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


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



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

      • [x] context.js ( @arthurjdam in # 22782)

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

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

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

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

    • [x] Redux ( @Kornil in # 22292)

      • [x] action.js

      • [x] index.js

      • [x] reducer.js

    • [x] constants.js ( @ cola119 in # 22084)
    • [x] error.js ( @blainekasten in # 24226)
    • [x] index.js ( @blainekasten in # 22869)
    • [x] prepare-stack-trace.js ( @blainekasten in # 24226)
    • [x] types.js ( @blainekasten in # 22869)
    • [x] src / strukturierte Fehler ( @LekoArts in # 20597)
    • [x] construct-error.js
    • [x] error-map.js
    • [x] error-schema.js
    • [x] src / util
    • [x] calc-elapsed-time.js ( @Naturalclar in # 22081)
    • [x] configstore.js ( @ mottox2 in # 22180 in Paketmanager umbenannt)
    • [x] Sicherstellen, dass Windows-Laufwerk-Buchstabe-Großbuchstabe ist.js (
    • [x] is-tty.js ( @ mottox2 in # 22129)
    • [x] version.js ( @ mottox2 in # 22176)
    • [x] src / create-cli.js ( @alexpyzhianov in # 23650)
    • [x] src / did-you-mean.js ( @ mottox2 in # 22068)
    • [x] src / index.js ( @blainekasten in # 19923)

      - [x] src / init-Starter.js ( @ mottox2 in # 22086)

  • [x] Pakete / Gatsby-Core-Utils

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

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

  • [] packages / gatsby-link ( @herecydev in # 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] Pakete / Gatsby-Telemetrie ( @Eyas in # 22532)

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

      - [x] /telemetry.js + test

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

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

Hilfreichster Kommentar

Riesiger Meilenstein! gatsby-cli wird zu 100% in TypeScript konvertiert! Vielen Dank an alle für Ihre unglaubliche Arbeit 💜💜💜

Alle 130 Kommentare

Ich werde gerne Gatsby-Link abholen. Wollte dort mehr lernen!

@herecydev Das hört sich toll an! Ich werde deinen Namen aufschreiben! Dieser ist relativ klein und isoliert, also zögern Sie nicht, das ganze Paket in einer PR zu machen, wenn Sie möchten.

@blainekasten nur ein paar vorläufige Kommentare. Es gibt einige globale / Fenstervariablen: __BASE_PATH__ , ___navigate , ___push , ___replace , __PATH_PREFIX__ , ___loader . Gibt es eine Strategie, um diese für Typoskripte verfügbar zu machen? Ich glaube, sie sind alle im Gatsby-Paket definiert.

@herecydev Diese Variablen sind auf gatsby-link zu definieren.

Ich freue mich darauf, einen Beitrag zu leisten. Welches Paket schlagen Sie für den Start vor?

@aminkhp super !! Ich würde es lieben, wenn wir einfach anfangen könnten, einzelne Dateien in PRs abzutrennen. Willst du gatsby-core-utils angehen? Ich würde mich freuen, wenn Sie nur eine Datei pro PR erstellen würden, da alle sehr isoliert sind.

Ich würde gerne einige Typen beisteuern. Ich könnte gatsby-page-utils angehen.

Ich habe übrigens einen Blick auf gatsby-core-utils geworfen, und es sieht so aus, als wäre true-case-path nur eine leere Datei. Ich bin mir nicht sicher, ob das beabsichtigt ist, aber es könnte sich lohnen, es aus dem Repo zu löschen und von der Liste zu entfernen. https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-core-utils/src/true-case-path.js

@robertrbairdii Großartig! Wenn Sie die Arbeit aufteilen und 1 PR für jede Zeile einreichen könnten, die ich hatte, wäre das fantastisch.

Guter Punkt bezüglich der Gatsby-Core-Utils. cc @aminkhp

Ich würde gerne src/commands/build-javascript.js ausprobieren.

ZUSATZ: Ich möchte auch babel-preset-gatsby angehen

Ich habe vorher einige Zeit in src/redux/actions/public.js , also denke ich, dass ich dabei helfen kann.

@blainekasten Ich habe beim Konvertieren von gatsby-page-utils auf .babelrc geschaut und festgestellt, dass in babel-preset-gatsby-package kein Verweis auf @babel/plugin-transform-typescript babel-preset-gatsby-package (https: // github. com / gatsbyjs / gatsby / blob / master / packages / babel-preset-gatsby-package / index.js
). Beim Ausführen eines Test-Builds gelangen die konvertierten .ts -Dateien nicht in den Ordner /dist .

Die Babel-Konfiguration im Stammverzeichnis des Repos hat eine Überschreibung. Https://github.com/gatsbyjs/gatsby/blob/master/.babelrc.js#L12 Und diese Konfiguration scheint von anderen Paketen wie https importiert zu werden

Soweit ich weiß, können Sie die Erweiterungen nur als Argument über die CLI übergeben, daher müssten wir jeder Babel-Referenz im Skriptabschnitt aller package.json Flag --extensions hinzufügen der zu konvertierenden Pakete. Sie können dann entweder die Überschreibung wie im Stammverzeichnis .babelrc bereitstellen oder @babel/plugin-transform-typescript in babel-preset-gatsby-package hinzufügen und zulassen, dass Werte wie isTSX über übergebene Optionen konfiguriert werden in das Paket.

Ich denke, dies wird verhindern, dass einige der TS-Konvertierungen zusammengeführt und veröffentlicht werden.

@robertrbairdii Ich bin auf meiner PR zu denselben Ergebnissen gekommen: https://github.com/gatsbyjs/gatsby/pull/22027

Anfangs war es nicht offensichtlich, aber zum Glück gibt es im gatsby-cli -Projekt einen Stand der Technik zu sehen. Es könnte sich lohnen, alle Pakete zu durchsuchen, um ts zu unterstützen, wodurch die Dateien insgesamt zugänglicher werden

Ich würde gerne helfen und habe keine Vorlieben. Können Sie mir einige Teile für die Migration empfehlen?

@danielkov Nach dem Kommentar von gatsby-core-utils anfangen

@MichaelDeBoey Ich habe auch meine Augen auf gatsby-cli / src / strukturierte Fehler gerichtet, wenn niemand anderes darauf ist, und gehe dann in einer anderen PR auf gatsby-core-utils . Hört sich das gut an?

@danielkov Das ist schon von @LekoArts in # 20597 aufgenommen

Ich sehe, dass # 22031 eine der Dateien von gatsby-core-utils adressiert. Soll ich auf diese Zusammenführung warten oder unabhängig starten und Konflikte lösen, wenn ich fertig bin?

@danielkov Du kannst einfach anfangen daran zu arbeiten.
Die Konflikte können vor dem Zusammenführen behoben werden. 🙂

@MichaelDeBoey Meine derzeit geöffneten PRs umfassen alle derzeit geschlossenen. Wenn Sie die Zeit haben, werden Sie überprüfen, ob dies jetzt korrekt ist?

Ich würde gerne an src/utils/app-data.js , utils/browserslist

Ich würde gerne an components/spinner.js

Wo sind wir mit der Konvertierung von Plugins in Typoskript? Dinge wie Quell-Plugins, Manifest, Offline usw.

Ich würde gerne daran arbeiten

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

Wo sind wir mit der Konvertierung von Plugins in Typoskript? Dinge wie Quell-Plugins, Manifest, Offline usw.

Wir werden diese (noch) nicht konvertieren? Wie wir denken, könnte es für die Menschen schwieriger sein, dazu beizutragen. Gatsby-Kernpakete werden meistens nur von uns verwaltet, daher denken wir, dass es sich lohnt, dies zu tun, da dies unser Leben bei der Arbeit erleichtert.

@blainekasten Ich bin mir nicht 100% sicher, ob wir Browserteile wie Gatsby-Link, Gatsby-Image und unser Cache-Verzeichnis umgestalten sollen. Dies kann zu größeren Bündeln führen.

Hallo! Ich würde gerne daran arbeiten

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

ich würde gerne probieren

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

ich würde gerne probieren

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

@ cola119 Ich schlage vor, dass Sie zuerst eine PR für alle anderen Dateien erstellen, an denen Sie arbeiten, damit andere Leute sich diese Datei in der Zwischenzeit ansehen können, wenn sie möchten.
Denken Sie nur nicht, dass wir auf etwas warten wollen, wenn jemand anderes daran arbeiten könnte

Ich werde an stack-trace-utils.js

Ich arbeite an jobs-manager.js

Ich werde src/redux/actions/types.js

Ich würde gerne packages/gatsby-image/src/index.js ausprobieren.

redux/actions/restricted.js hängt auch von redux/actions/types.js , also werde ich es nehmen.

Ich kümmere mich um den Ordner /redux auf gatsby-cli unter https://github.com/gatsbyjs/gatsby/pull/22292

Ich möchte mit packages/gatsby/src/utils/eslint-config.js - # 22294 beginnen

Ich arbeite an packages/gatsby/src/utils/gatsby-dependents.js - # 22422

Ich würde gerne dabei helfen, @blainekasten. Irgendwelche Vorschläge für einen erstmaligen Mitwirkenden?

Es gibt einige globale / Fenstervariablen: __BASE_PATH__, ___navigate, ___push, ___replace, __PATH_PREFIX__, ___loader.

Wenn niemand dagegen ist, @blainekasten , werde ich versuchen, babel-plugin-remove-graphql-queries/src/murmur.js konvertieren.

@ zachtylr21 in Ordnung

@ parikshitgupta1 Oh, war dein vorheriger Kommentar an mich gerichtet? Bei Bedarf kann ich auch daran arbeiten.

Wenn Sie immer noch Hilfe suchen, würde ich gerne tun, was ich kann. Möchten Sie Hilfe bei der Konvertierung, die noch nicht zugewiesen wurde?

Hey @AmyShackles, danke, dass hast , obwohl von meiner Seite nichts mehr übrig ist, obwohl wir im Thread sehen wollen.

Fühlen Sie sich frei, irgendeinen Gegenstand von dieser Liste zu nehmen. Wir freuen uns über jede PR, egal ob kleine / einfache oder große / komplizierte Datei :)

Hallo @blainekasten, ich sende PRs für:

  • gatsby src / load-plugins # 22504
  • gatsby Websocket-Manager # 22510
  • gatsby-telemetry # 22532
  • gatsby-link # 22563

Einige von ihnen sind größer als ich gehofft hatte, aber ihre Abhängigkeiten waren schwer zu entwirren.

Ich würde gerne dazu beitragen! Gibt es eine kleine / einfache Datei, an der ich arbeiten kann? Ich mache mich immer noch mit Gatsby vertraut: D.

Ich bin hier um zu helfen. Jeder, der speziell um Hilfe bittet, oder ich werde einen auswählen.

@blainekasten

Ich wollte meine 2 Cent an die Community zurückgeben. Letztes Wochenende musste ich tief in die Codebasis von gatsby.js graben, weil ich dieses nervige Problem mit der Typprüfung in meinem Projekt hatte: # 22070

Also hatte ich am letzten Wochenende Zeit, mit dem großen Refactoring zu beginnen. Ich habe jetzt keine Zeit, weiterzumachen, aber ich hatte mich auf Typoskript-Gatsby-Telemetrie-Gatsby-Core-Utils und teilweise andere Projekte umgestellt.

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

Ich hoffe, es gibt einige Ideen. Bei Bedarf kann ich meine Ergebnisse und Entscheidungen entweder hier oder über Skype erklären: justfly1984

Möchten Sie einen Beitrag dazu leisten, wo Sie anfangen sollen?

Ich möchte zuerst versuchen, an packages\gatsby\src\bootstrap\prefer-default.js zu arbeiten, um mehr darüber zu erfahren, wie die Dinge funktionieren, wenn das in Ordnung ist.

Update: PR eingereicht https://github.com/gatsbyjs/gatsby/pull/22958

Ich würde wirklich gerne dazu beitragen! Könnte ich möglicherweise packages/gatsby/reducers/themes.js konvertieren?

Morgen. Ich nehme heute Morgen einen Pass für src/schema/infer/is-file.js . Etwas hoffentlich Kleines, um zuerst meinen Kopf herumzukriegen!

Ich probiere auch src/schema/infer/inference-metadata . Ich denke, es ist fast geschafft, aber der Versuch, Typen hinzuzufügen, gibt mir einige Probleme hinsichtlich des erreichbaren Codes.

# 23093 für is-file hinzugefügt. Da es sich um eine nicht getestete Änderung handelt, ist möglicherweise eine PR vor dem Start erforderlich, um zuerst Tests hinzuzufügen.

Hallo, alle miteinander!

Ich wollte nur vorbeischauen und ein HUUUUUUGE Danke sagen! Die Resonanz der Community war erstaunlich und (ein wenig) überwältigend 😅. Aber mach weiter so! Sie werden von unschätzbarem Wert sein und diese Konvertierung um das 100-fache beschleunigen.

  • Vielen Dank an diejenigen, die PRs eingereicht haben!
  • Für diejenigen, deren PRs noch nicht überprüft wurden, werden wir dort ankommen! Einige erfordern mehr Arbeit als andere, und wir müssen noch viel durcharbeiten (einschließlich anderer Funktionen, die wir für alle starten möchten!).
  • Für diejenigen, die sich engagieren möchten, bitte! Zögern Sie nicht, Ihren Namen in eine Datei in der Beschreibung einzutragen und daran zu arbeiten. Wir wollen, dass sich alle beteiligen.

Wir machen große Fortschritte. Lass uns weitermachen!

Ich habe eine PR für babel-plugin-remove-graphql-queries/murmur.js , bin mir aber nicht sicher, wie ich meinen Namen anhand der Datei in der Beschreibung ermitteln kann. Kann mir jemand dabei helfen?

@ zachtylr21 Fertig! Danke für die Arbeit. Sobald Sie diese PR zusammengeführt haben und sich der Gatsby-Organisation anschließen, können Sie alles selbst erledigen !! : partying_face:

Ich habe gerade bemerkt, dass die fusselförmige Aktion nicht ausgelöst wird, wenn nur Änderungen an einer TS-Datei vorgenommen werden: https://github.com/gatsbyjs/gatsby/blob/master/package.json#L78

Hallo! Gibt es spezielle Probleme mit src/create-cli.js in gatsby-cli ? Ich würde es gerne annehmen, wenn es in Ordnung ist

Hallo! Ich habe eine PR für gatsby/src/query/redirects-writer.js . Kann mir jemand beim Auschecken in der Liste helfen? Vielen Dank! Übrigens, es ist meine erste PR in Gatsby, also mache ich mir Sorgen, es zu vermasseln. Jeder Rat wird mir sehr helfen.

Hallo Leute! Ich bin froh, mich den Bemühungen anzuschließen, und wenn derzeit niemand src/utils/page-data.js versuche ich gerne, zu helfen: +1:

Hallo allerseits 👋 Habe gerade eine kleine PR für redux/reducers/webpack-compilation-hash # 23439 gemacht. Könnte jemand es bitte zur Liste hinzufügen?

Wenn im Moment niemand drauf ist, könnte ich morgen an kleinen Reduzierstücken wie redux/reducers/webpack , redux/reducers/status (# 23474), redux/reducers/static-query-components (# 23475), redux/reducers/schema (# 23476) und so weiter :)

Ich möchte mit log-line-function.js anfangen, ok?

Hallo! 👋
Ich würde gerne mitmachen! Kann ich mit dem src/bootstrap/remove-stale-jobs.js am packages/gatsby ? 😄

~ Ich habe gerade die Dateiliste überprüft. Die PR für gatsby/src/utils/page-data.js (# 23436) fehlt ~
(Ich habe gerade gesehen, dass ich die Liste jetzt selbst aktualisieren kann, danke!)

Und ich habe gerade die gatsby/src/utils/webpack.ts Migration (# 23566) vorangetrieben.

Ich mache packages/gatsby/src/redux/reducers/config.js (als Teil einiger Korrekturen)

@moonmeister Danke dafür! Ich sollte wahrscheinlich erwähnen, dass die PR-Nummer für murmur.js # 22458 ist, wenn Sie diese auch neben meinen Namen setzen möchten.

Hatte ein kleines Problem mit meiner Gabel, also musste ich # 23476 schließen und stattdessen # 23591 öffnen.
Gleicher Code, aber neue PR zu überprüfen. Das tut mir leid.

Auch dieser sollte zur Überprüfung bereit sein (letzter Konflikt mit dem aktuellen master behoben): # 23436

Ich habe ein migriertes gatsby/src/utils/tracer/jaeger-local bereit zum Hochfahren, aber beim Lesen der Dokumente scheint es, dass die Datei als Beispiel für jemanden dient, der in gatsby zurückspeist, nicht als Teil der Anwendung selbst. Wenn es migriert und die Dokumentation aktualisiert würde, um stattdessen auf die TS-Datei zu verweisen, würde das Einspeisen dieser Datei in gatsby als Konfiguration weiterhin funktionieren?

Mir ist klar, dass ich versuchen könnte, eine Jaeger-Instanz einzurichten, um es zu versuchen, aber auch jemand, der besser informiert ist, könnte es in viel kürzerer Zeit beantworten! :) :)

@chooban In der Dokumentation verweisen wir auf das Verzeichnis dist . dist Verzeichnis ist eine Javascript-Datei (aus Typoskript kompiliert) - dies sollte also in Ordnung sein und die Dokumentation muss nicht geändert werden. Es ist gut zu überprüfen, ob diese Konfigurationsdateien korrekt funktionieren, aber ansonsten sollte es in Ordnung sein!

Hallo 👋 Darf ich mit page-hot-reloader.js ?

Ich freue mich darauf, Gatsby bei der Migration auf Typescript zu unterstützen

Hallo Leute!
Ich möchte auch dazu beitragen. Kann ich mit src/schema/types/pagination.js ?

@ alisson-suzigan Hallo Bruder, ich freue mich dich hier zu sehen ❤️

Ich werde die Datei src/commands/build.js
wünsche mir viel Glück 🤓

Hallo Leute!
Ich arbeite derzeit an gatsby/src/reducers/program.js und habe eine Reihe von Fragen.

Im Moment scheint es, dass es viele Elemente aus der Quelldatei js gibt, die nicht mit der in IGatsbyState beschriebenen Schnittstelle übereinstimmen.
Es sollte ein IProgram Objekt begrüßen, aber es scheint eine Reihe von fehlenden Elementen zu geben.

In der JS-Datei wird state mit einer state Requisite initialisiert, die ich in der IProgram -Schnittstelle nicht finden kann. Ich habe es durch status , das könnte ein Tippfehler sein.
Aber dann setzt die Aktion SET_PROGRAM_EXTENSIONS eine extensions Requisite, die in der IProgram -Schnittstelle überhaupt nicht vorhanden ist. Haben Sie eine Idee, was der Inhalt sein würde?

Außerdem scheint das, was obligatorisch ist, nicht mit dem zu übereinstimmen, was initialisiert wurde.

@blainekasten : hätten Sie mehr Einblick in diese Oberfläche? Es scheint, als hättest du es geschaffen. Ich freue mich über einen kurzen Chat über Discord, wenn es einfacher ist :)

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

Hallo,
Jetzt möchte ich in diesen Dateien arbeiten:

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

Ist das in Ordnung?

Hallo! Ich würde gerne an 🙌 arbeiten

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

Ich habe diese Dateien untersucht ( /babel-loader-helpers.js und
/babel-loader.js ) kann migriert werden,
Aber es ist wahrscheinlich schwierig, weil der Babel-Loader ihren Typ nicht angibt.

src/utils/profile.js ist in der Liste enthalten, aber der Inhalt der Datei ist vollständig auskommentiert. Ich könnte eine PR hochschieben, um sie zu löschen? ;)

Ich möchte das Paket, an dem ich gearbeitet habe, beenden und babel-plugin-remove-graphql-queries/src/index.js konvertieren

# 23823 für Quellknoten hinzugefügt.

Ich werde die Datei src/create-cli.js

@devrchancay Hey! Entschuldigen Sie die Verwirrung, aber ich habe bereits einige erste Arbeiten daran durchgeführt: https://github.com/gatsbyjs/gatsby/pull/23650 , aber Sie können auf jeden Fall daran teilnehmen

okay, kein Problem, ich werde etwas anderes nehmen 🤔

Es ist gut, dass viele von uns einen Beitrag leisten

Ich werde an gatsby-cli/src/reporter/loggers/ipc/index.js !

Hallo
Ich würde gerne an gatsby/src/query/queue.js

@hiwelo Arbeiten Sie noch an gatsby/redux/reducer/component.js ?
Ich habe an page-component und es ist ziemlich verwandt. Lassen Sie mich wissen, ob ich helfen kann.

@Kornil Ich arbeite nicht in gatsby/redux/reducer/component . Afaik, diese Datei ist momentan nicht zugeordnet :)

(Ich habe an gatsby/redux/reducer/static-query-components , aber ich kann mich nicht erinnern, dass ich mir diese bisher überhaupt angesehen habe.)

Ich würde gerne anfangen beizutragen! Ich kann gatsby\packages\gatsby\src\redux\reducers\page-data-stats.js , um meine Füße nass zu machen.

Ich werde versuchen, Gatsbys babelrc.js Reduzierer zu verwenden

Ich kann nodes-touched und nodes-by-touch Reduzierungen abholen.

@ alisson-suzigan Ich habe gatsby-cli/src/reporter/loggers/json/index.js PR # 24140 gemacht, aber ich habe vergessen, meinen Namen in die Liste aufzunehmen. das tut mir leid

Hey @carrotderek Ich habe gesehen, dass du dich schema-customization zugewiesen hast, ich habe es einfach getan, deinen Namen dort nicht früher gesehen, vergib mir.

Nehmen Sie requires-writer.js von gatsby

Riesiger Meilenstein! gatsby-cli wird zu 100% in TypeScript konvertiert! Vielen Dank an alle für Ihre unglaubliche Arbeit 💜💜💜

Da auf einige Dateien aus den Dokumenten verwiesen wird: Sollte auch eine Linkänderung in Dokumenten, die ebenfalls berücksichtigt wird, eine PR enthalten?

Gerne stechen wir in den Programmreduzierer ( src/redux/reducers/program.js ). Siehe # 24941

Ich sehe, dass diese PRs zusammengeführt werden, aber die Dateien sind immer noch deaktiviert:

index.js ( @ascorbic in # 24816)
queue.js ( @chooban in # 25389)
date.js ( @ sasurau4 in # 22430)
derivative-types.js ( @ sasurau4 in # 22442)

nur ein Vorschlag. Wie wäre es mit https://github.com/airbnb/ts-migrate ?

Einer der Kommentare (hi, @pvdz!), Die ich vor einiger Zeit zu einer PR hatte, war, Array<string> anstelle von string[] zu verwenden, um die Dinge mit Map, Set usw. in Einklang zu bringen. Am Ende gingen wir bei einem Arbeitsprojekt in die gleiche Richtung, und ich schrieb ein Codemod, um die Arbeit für mich zu erledigen.

Wurde diese Stilentscheidung formalisiert und möchten Sie, dass eine PR sie auf einmal ändert?

@chooban Eigentlich ja :) Aber das Fehlen eines Codemods machte es etwas schwieriger.

Enthält Ihr Codemod zufällig eine Flusenregel, um zukünftige Regressionen zu verhindern? Kannst du das Codemod posten?

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'

Das habe ich mir ausgedacht. Es ist das zweite Codemod, das ich geschrieben habe. Wenn also jemand darauf schaut und denkt: "Warum ist es so komplex?" dann würde ich gerne ein paar Hinweise haben!

Es gibt noch keine Flusenregel, aber es sieht nicht so aus, als wäre es zu schwierig.

Es stellt sich heraus, dass es bereits eine Regel dafür gibt, die behoben werden kann: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/array-type.md genauer als mein Codemod. Interessant. Ich muss einige dieser anderen Korrekturen in unserer Codebasis im AST-Explorer ausführen, um zu sehen, warum ich sie verpasst habe.

Ich habe # 26738 hinzugefügt.

Wie kann ich helfen?

Ich möchte einen Blick auf packages / gatsby / src / utils / api-node-helpers-docs.js und /packages/gatsby-link/src/parse-path.js werfen

packages / gatsby / src / utils / profile.js scheint eine sinnlose Änderung zu sein, obwohl ich die Erweiterung nur aktualisieren konnte, während ich mich mit anderen Dingen befasste

@LekoArts @blainekasten Daran möchte ich arbeiten

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

Da ich neu in Typoskript bin, werde ich mit diesen Dateien beginnen.
Vielen Dank !

Es tut mir leid, wenn jemand src/redux/actions/public.js nehmen möchte ( @jlkiri in # 22274) - Sie können es nehmen - ich habe möglicherweise keine Zeit, es für eine Weile zu beenden.

Ich möchte versuchen, gatsby/src/bootstrap/page-hot-reloader.js

Ich hätte vielleicht eine Waffe gesprungen, aber ich habe die Datei gatsby-link / src / parse-path.js schnell überarbeitet und getestet. Pr kann hier gesehen werden:
https://github.com/gatsbyjs/gatsby/pull/27264

Ich werde mit load-themes/index.js helfen.

Ich möchte mit gatsby / packages / gatsby / src / schema / schema-composer.js arbeiten

@khushijindal Es ist bereits eine PR dafür offen :) https://github.com/gatsbyjs/gatsby/pull/27241


Bitte schauen Sie sich die vorherigen Kommentare und die PRs an, damit Sie nicht an den gleichen Dingen arbeiten :) Vielen Dank für alle Beiträge!

@khushijindal Es ist bereits eine PR dafür offen :) # 27241

Bitte schauen Sie sich die vorherigen Kommentare und die PRs an, damit Sie nicht an den gleichen Dingen arbeiten :) Vielen Dank für alle Beiträge!

Eigentlich wurde es in der obigen Datei nicht markiert, deshalb. Cool, ich suche etwas anderes XD.

Hey, ich helfe gerne bei der Migration von gatsby/src/query/query-watcher.js

Würde gerne etwas abholen, wenn es nicht schon vergeben ist. Fühlen Sie sich frei, mir zuzuweisen, was auch immer frei ist!

Ich würde mich freuen, Ihnen dabei zu helfen, aber dies wäre einer meiner ersten Open-Source-Beiträge, und ich bin mir nicht sicher, wo ich anfangen soll. Gibt es noch potenziell niedrig hängende Früchte?

@LinnJS und @neobats : Sie können jede der oben aufgeführten Dateien beanspruchen, die keinen Namen haben. Fügen Sie hier einfach einen Kommentar hinzu, der besagt, dass Sie daran arbeiten, wie es

Tipps zum Mitmachen: Lesen Sie zuerst die Beitragsdokumente und erfahren Sie , wie Sie Ihre lokale Umgebung einrichten . In den Anweisungen in dieser Ausgabe finden Sie eine Anleitung zu unserem TypeScript-Codestil. Nachdem Sie behauptet haben, dass die Datei bearbeitet werden soll, konvertieren Sie sie lokal und stellen Sie sicher, dass in Ihrer IDE keine Fehler angezeigt werden. Führen Sie yarn typecheck und yarn lint:code im Stammverzeichnis aus, bevor Sie den PR öffnen, der alle Fehler anzeigt. Sobald Sie fertig sind, öffnen Sie die PR und einer von uns wird sie überprüfen. Danke und viel Glück!

Die node-interface.js -Datei wurde bereits in dieser PR migriert und zusammengeführt

Ich werde mit /src/query/file-parser.js helfen und testen

Ich werde print.js !

Ich werde an /src/query/graphql-errors.js

Hey, ich würde gerne an src/query/query-compiler.js

Hey, ich würde gerne an /api-node-helpers-docs.js :)

Hallo, ich übernehme bootstrap/load-themes/index.js

Ich werde an src/schema/node-model.js und src/schema/schema-composer.js

Ich werde an src/schema/index.js und src/schema/infer/index.js .

Außerdem wird src/schema/schema.js als erledigt überprüft, aber der zugehörige PR gibt die Datei nicht ein (ändert nur eine Zeile, damit sie für eine andere typisierte Datei funktioniert).

Hallo, ich würde gerne an packages/gatsby/src/utils/babel-loader.js .

Hey @davad Ich habe bereits an schema-compose.js hier gearbeitet https://github.com/gatsbyjs/gatsby/pull/27241 . Vielen Dank !

Hey @LekoArts Ich würde gerne an gatsby/src/utils/webpack.config.js Danke.

Hey @LekoArts @ascorbic Ich brauche hier Hilfe https://github.com/gatsbyjs/gatsby/pull/27241 Ich bin nicht sicher, was in circleci bricht. Können Sie mir zeigen, wo das Problem liegt? Vielen Dank !

Sind entweder src/utils/api-runner-node.js oder src/utils/api-node-helpers-docs.js offen?

Ich würde gerne an einem von ihnen arbeiten, wenn sie es sind.

Ich werde an packages/babel-preset-gatsby/index.js + test

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

andykais picture andykais  ·  3Kommentare

rossPatton picture rossPatton  ·  3Kommentare

totsteps picture totsteps  ·  3Kommentare

theduke picture theduke  ·  3Kommentare

3CordGuy picture 3CordGuy  ·  3Kommentare