Heim  >  Artikel  >  Web-Frontend  >  Logger-Paket im Changesets-Monorepo

Logger-Paket im Changesets-Monorepo

Barbara Streisand
Barbara StreisandOriginal
2024-11-19 17:37:02783Durchsuche

Das Changesets-CLI-Paket hat einen Import, wie unten in Zeile 3 in packets/cli/src/index.ts#L3 gezeigt

import { error } from "@changesets/logger";

Ich habe das schon einmal gesehen, ein spezielles Paket nur für Logger, in docusaurus-logger. Zum jetzigen Zeitpunkt glaube ich, dass es im gesamten OSS ein allgemeiner Standard/Best Practice ist, ein dediziertes Paket zu haben, um über einen konsistenten Logger zu verfügen, der in der gesamten Codebasis verwendet werden kann.

Warum ein spezielles Paket für Logger?

Da es sich bei Changesets um ein Monorepo handelt (so auch bei Docusaurus), werden Sie feststellen, dass Sie Pakete in der gesamten Codebasis wiederverwenden, aber stellen Sie sich ein Szenario vor, in dem Sie einen Fehler mithilfe einer Farbe an der CLI protokolliert haben. Warum ist diese Farbe jetzt im Bild? Sie fragen sich vielleicht. Wenn Sie ein CLI-Paket eines Open-Source-Projekts wie Next.js, Docusaurus oder Changesets verwenden, wird das Feedback, das Sie durch die Interaktion mit der CLI erhalten, häufig farbig dargestellt, um beispielsweise einen Fehler, eine Warnung oder Informationen anzuzeigen.

Logger package in changesets monorepo

Ich habe einige Funktionen aus Changesets packets/cli/src/index.ts ausgewählt

export function error(…args: Array<any>) {
 console.error(format(args, pc.red("error")));
}
export function info(…args: Array<any>) {
 console.info(format(args, pc.cyan("info")));
}
export function success(…args: Array<any>) {
 console.log(format(args, pc.green("success")));
}

Was ist also ein PC? Es handelt sich um ein Picocolors-Paket, das oben in der Datei importiert wird.

import pc from "picocolors";

Vorteile der Verwendung eines Logger-Pakets

Sie werden von konsistenten Protokollierungsfunktionen in Ihrer gesamten Codebasis erheblich profitieren, da Sie die gemeinsamen Protokolle bei Bedarf mit Farbcodierung definieren.

Unten ist ein Codeausschnitt von Docusuarus.

function warn(msg: unknown, …values: InterpolatableValue[]): void {
 console.warn(
 chalk.yellow(
 `${chalk.bold('[WARNING]')} ${
 values.length === 0
 ? stringify(msg)
 : interpolate(msg as TemplateStringsArray, …values)
 }`,
 ),
 );
}

Docusaurus verwendet Kreide, um die CLI-Ausgabezeichenfolgen einzufärben. Ich habe Docusaurus erwähnt und das Beispiel gezeigt, um zu demonstrieren, wie ein Paket ausschließlich zu Protokollierungszwecken verwendet wird.

Über uns:

Bei Thinkthroo studieren wir große Open-Source-Projekte und stellen Architekturführer zur Verfügung. Wir haben mit Rückenwind wiederverwendbare Komponenten entwickelt, die Sie in Ihrem Projekt nutzen können. Wir bieten Next.js-, React- und Node-Entwicklungsdienste an.

Buchen Sie einen Termin mit uns, um Ihr Projekt zu besprechen.

Logger package in changesets monorepo

Referenzen:

  1. https://github.com/changesets/changesets/blob/main/packages/logger/src/index.ts#L18

  2. https://github.com/changesets/changesets/blob/main/packages/cli/src/index.ts#L3

  3. https://github.com/changesets/changesets/tree/main/packages/logger

  4. https://github.com/facebook/docusaurus/blob/2b8ddb9260c54b7fdba4398bfdce64553a1356b0/packages/docusaurus-logger/src/index.ts

  5. https://www.npmjs.com/package/picocolors

  6. https://www.npmjs.com/package/chalk

Das obige ist der detaillierte Inhalt vonLogger-Paket im Changesets-Monorepo. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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