Heim > Web-Frontend > js-Tutorial > Wiederbelebung eines veralteten Projekts

Wiederbelebung eines veralteten Projekts

Linda Hamilton
Freigeben: 2025-01-22 06:30:16
Original
122 Leute haben es durchsucht

Diese Woche habe ich einige Wartungsarbeiten an Starchart durchgeführt. An dem Projekt wurde eine Weile nicht gearbeitet, daher versuchen wir, seine Abhängigkeiten zu aktualisieren.

GitHub logo DevelopingSpace / Sternendiagramm

Ein Self-Service-Tool zur Verwaltung benutzerdefinierter Domänen und Zertifikate

Sternenkarte License: MIT

Starchart macht es der Seneca-Entwicklergemeinschaft einfach, ihre eigenen benutzerdefinierten Subdomains und SSL-Zertifikate zu erstellen und zu verwalten, ohne dass Kosten anfallen oder persönliche Daten angegeben werden müssen.

Informationen zum Ausführen von Starchart finden Sie in unserem Bereitstellungsleitfaden. Informationen zur Entwicklung finden Sie in unserem Beitragsleitfaden. Weitere technische Hintergründe, Planungen und erste Entwürfe finden Sie im Wiki.

Einführung

Das Internet entwickelt sich weiter und was früher schwierig war, ist jetzt einfach. Beispielsweise erforderte das Hosten einer eigenen Website früher Kenntnisse in Serveradministration, Betriebssystemen, Netzwerken usw. Heutzutage hosten viele Entwickler ihre persönlichen Websites und Projektwebsites, ohne jemals einen Remote-Server zu berühren, und entscheiden sich für (kostenlose) Cloud-Dienste wie GitHub Pages. Vercel, Netlify oder AWS.

Auch das Sicherheitsmodell des Internets entwickelt sich weiter. Beispielsweise haben Browser-Anbieter überall HTTPS eingeführt. Dies ist gut für die Sicherheit, da es eine zertifikatbasierte Verschlüsselung zwischen Clients und Servern ermöglicht. Allerdings wie bei…

Auf GitHub ansehen

Der Plan bestand darin, den CI-Workflow zu reparieren, von dem wir letzte Woche herausfanden, dass er fehlerhaft war:

Image description

Aber bevor ich eine Lösung finden konnte, löste einer der vorherigen Entwickler, Eakam, das Problem – es stellte sich heraus, dass es nur daran lag, dass Playwright veraltet war.

Wiederbelebung eines veralteten Projekts Bringen Sie Dramatiker auf 1.49.1 #772

Wiederbelebung eines veralteten Projekts
Eakam1007 veröffentlicht am

Playwright-Installation schlägt in CI (E2E-Tests) fehl. Eine Aktualisierung der Dramatiker-Version sollte das beheben.

Ref: Installation error log

Auf GitHub ansehen

Ich hatte das Gefühl, ich sollte das wieder gut machen, indem ich mehr Dinge finde, an denen ich arbeiten kann, und dachte, die Aktualisierung weiterer Abhängigkeiten wäre ein guter Ausgangspunkt.

Da an dem Projekt zwei Jahre lang nicht gearbeitet wurde, gab es eine Reihe von Sicherheitslücken, die auf veraltete Pakete zurückzuführen waren. Die meisten davon konnte ich mit npm audit fix beheben.

Es gab noch ein paar weitere Korrekturen, die zu wichtigen Änderungen in @remix-run/eslint-config und @remix-run/react führten, also habe ich diese manuell geändert.

Eines der Updates (ich habe sie gleichzeitig aktualisiert, kann es also nicht mit Sicherheit sagen, aber meine Wette ist auf /react) führte zu einem Typprüfungsfehler, weil [@remix-run/react].useNavigation( ).formData kann jetzt vom Typ undefiniert sein. Ich habe es mit optionaler Verkettung behoben.

// Before
const isLoading =
  navigation.state === 'submitting' &&
  Number(navigation.formData.get('id')) === dnsRecord.id;

// After
const isLoading =
  navigation.state === 'submitting' &&
  Number(navigation.formData?.get('id')) === dnsRecord.id;
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Die anderen Änderungen, die ich vorgenommen habe, hatten mit einigen aufgetauchten Lint-Fehlern zu tun (An diesem Punkt wurde mir klar, dass ich meine ESLint-Erweiterung deaktiviert hatte, aber ich bin mir sicher, dass diese Warnungen mit dem Update kamen, da es in CI nie passiert ist in der Vergangenheit).

  1. Fälle des mehrfachen Imports desselben Moduls in eine Datei:
// Before
import { getCertificateByUsername } from '~/models/certificate.server';
import { deleteCertificateById } from '~/models/certificate.server';
import { isAdmin } from '~/models/user.server';
import { getUserByUsername } from '~/models/user.server';

// After
import { getCertificateByUsername, deleteCertificateById } from '~/models/certificate.server';
import { isAdmin, getUserByUsername } from '~/models/user.server';
Nach dem Login kopieren
  1. Verwenden von let, wenn const bevorzugt wird:
// Before
let date = val.toLocaleDateString('en-US', {

// After
const date = val.toLocaleDateString('en-US', {
Nach dem Login kopieren

Überrascht, dass es diese nicht schon früher erwischt hat.

Außerdem war ich etwas verblüfft, als ich die ESLint-Erweiterung aktivierte, weil es etwa 900 Linter-Fehler gab. Es stellte sich heraus, dass es daran lag, dass ESLint die von Playwright generierte Ausgabe verfälschte. Also habe ich /playwright-report zu .eslintignore hinzugefügt.

Und das war die Summe meiner Wartungsarbeiten für diesen Sprint. Am Ende wurden 30 schwerwiegende Sicherheitsprobleme behoben, also nicht schlecht.

Wiederbelebung eines veralteten Projekts Abhängigkeiten aktualisieren #775

Wiederbelebung eines veralteten Projekts
uday-rana veröffentlicht am

Sollte eine Reihe von Sicherheitslücken beheben.

Änderungen

  • [x] Bump-Abhängigkeiten
  • [x] /playwright-report zu .eslintignore hinzufügen
  • [x] Behebung von Typprüfungs- und Linter-Fehlern
Auf GitHub ansehen

Ich habe auch Dependabot erneut aktiviert, wodurch vitest einige Nebenversionen beeinträchtigt hat. Es ist schön, Sicherheitslücken nicht manuell untersuchen und beheben zu müssen.

Zu den weiteren Neuigkeiten gehört, dass einer meiner Pull-Requests an Mattermost endlich zusammengeführt wurde!

Wiederbelebung eines veralteten Projekts [GH-29548] Vermeiden Sie SELECT * in „tokens_store.go“. #29558

Wiederbelebung eines veralteten Projekts
uday-rana veröffentlicht am

Zusammenfassung

Diese PR:

  • Stellt SQL-Abfragen in token_store.go um, um SQLBuilder zu verwenden
  • Definiert explizit Spalten in SELECT-Abfragen an TokenStore.
  • Berücksichtigt häufige Abfragen im Konstruktor.

Ticket-Link

Behebt #29548

Screenshots

Versionshinweis

// Before
const isLoading =
  navigation.state === 'submitting' &&
  Number(navigation.formData.get('id')) === dnsRecord.id;

// After
const isLoading =
  navigation.state === 'submitting' &&
  Number(navigation.formData?.get('id')) === dnsRecord.id;
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Auf GitHub ansehen

Es wurde vor einiger Zeit genehmigt, aber es dauerte ein paar Wochen, bis es in die Hauptversion integriert wurde.

In der Zwischenzeit habe ich an meiner anderen PR gearbeitet. Ich wurde gebeten, einige Änderungen vorzunehmen und warte auf eine erneute Überprüfung.

Wiederbelebung eines veralteten Projekts [MM-53650] Einstellung zum Deaktivieren des Emoticon-Renderings zur Webanwendung hinzugefügt #29414

Wiederbelebung eines veralteten Projekts
uday-rana veröffentlicht am

Zusammenfassung

Diese Pull-Anfrage fügt der Webanwendung eine Benutzereinstellung hinzu, um die Darstellung von Emoticons (:D) als Emojis (?) umzuschalten.

Die Einstellung wird als Komponente in Components/user_settings/display/render_emoticons_as_emoji/ hinzugefügt, die in Components/user_settings/display/user_settings_display.tsx importiert wird.

Ich habe user_settings_display.tsx eine renderOnOffLabel()-Funktion hinzugefügt, die aus Components/user_settings/advanced/user_settings_advanced.tsx übernommen wurde, um beim Rendern der neuen Komponente zu helfen.

Die Einstellung wird mit der Aktion savePreferences() als Benutzereinstellung gespeichert.

Ich habe Konstanten für die Präferenz zu utils/constants.tsx und webapp/channels/src/packages/mattermost-redux/src/constants/preferences.ts hinzugefügt.

Um die Einstellung tatsächlich zu verwenden, habe ich „components/post_markdown“ geändert, um seinen Wert als Requisite zu erhalten, wofür ich getBool() verwendet und der Konfiguration einen Standardwert hinzugefügt habe. post_markdown übergibt diesen Wert an Markdown für das Optionsobjekt, das ihn dann an utils/text_formatting.tsx weitergibt, das den Wert schließlich als neu hinzugefügten Parameter an emoticons.tsx übergibt. emoticons.tsx prüft, ob der Wert wahr ist und wenn ja, wandelt es die Emoticons in Emojis um.

Ich habe betroffene Tests aktualisiert und Komponententests für die neue Komponente erstellt. Ich habe auch die englische Übersetzungsdatei aktualisiert.

QA-Testschritte
  1. Navigieren Sie zu Benutzereinstellungen.
  2. Gehen Sie zur Kategorie „Anzeige“.
  3. Suchen Sie den Abschnitt mit der Bezeichnung „Emoticons automatisch als Emoji rendern“ und klicken Sie auf „Bearbeiten“.
  4. Schalten Sie die Einstellung um und klicken Sie auf „Speichern“.
  5. Emoticon-Rendering für Nachrichten, die vom aktuellen Benutzer und anderen Benutzern gesendet werden, sollte mit der Einstellung clientseitig umgeschaltet werden.

Ticket-Link

Korrekturen (teilweise) https://github.com/mattermost/mattermost/issues/26504 Jira https://mattermost.atlassian.net/browse/MM-53650

Hinweis Das Problem und das Ticket beschreiben das Hinzufügen dieser Funktion auch zur mobilen App, was in dieser PR nicht der Fall ist.

Screenshots

before after
Wiederbelebung eines veralteten Projekts Wiederbelebung eines veralteten Projekts

Versionshinweis

// Before
const isLoading =
  navigation.state === 'submitting' &&
  Number(navigation.formData.get('id')) === dnsRecord.id;

// After
const isLoading =
  navigation.state === 'submitting' &&
  Number(navigation.formData?.get('id')) === dnsRecord.id;
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Auf GitHub ansehen

Die Arbeit an dieser PR war interessant, denn als ich sie zum ersten Mal einreichte, verstand ich meine Änderungen noch nicht einmal ganz. Als ich nach einer langen Zeit wieder darauf zurückkam und das Feedback aus den Rezensionen mir dabei half, es aus einer neuen Perspektive zu betrachten und es besser zu verstehen.

Die Mattermost-App erhält den Status der Benutzereinstellungen sowohl aus „Einstellungen“ als auch aus einer „Konfiguration“. Ich habe meine Einstellung zu beiden hinzugefügt und eine der vorhandenen Einstellungen nachgeahmt, auf die ich verweisen sollte, aber es stellte sich heraus, dass die „config“ für Einstellungen auf Serverebene gedacht ist, während diese neue Einstellung als clientseitige Option gedacht war. Die Bewertungen haben mir geholfen zu verstehen, wo ich einen Fehler gemacht habe, und am Ende war es tatsächlich eine kleinere Änderung, als ich für nötig gehalten hätte.

Insgesamt würde ich sagen, dass es eine ziemlich produktive Woche war.

Das obige ist der detaillierte Inhalt vonWiederbelebung eines veralteten Projekts. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage