Visulima

Open-Source-Toolkit

Die langweiligen Teile beim Ausliefern einer TypeScript-Library, schon gelöst.

Eine Library in vier Schritten vom Quellcode zum Release, mit vier der Pakete. Jedes lässt sich einzeln installieren, keines braucht die anderen.

Zum Quellcode
Schritt 1 von 4

Bauen ohne Konfigurationsdatei.

Packem liest die Entry Points aus den Exports, die ohnehin schon deklariert sind. Es gibt also keine zweite Dateiliste, die mit der package.json Schritt halten muss.

@visulima/packem6k / weekpnpm add -D @visulima/packem
package.json
// package.json
{
  "exports": {
    "import": "./dist/index.mjs",
    "require": "./dist/index.cjs"
  },
  "types": "./dist/index.d.ts"
}

$ packem build
// CJS and ESM, .d.ts bundled, dependencies
// externalised. No config file required.

Weiter: sehen, was zur Laufzeit passiert

Schritt 2 von 4

Sieh zu, was sie tut.

Lesbare Badges bei der Arbeit, strukturiertes JSON in der Produktion, derselbe Logger in Node, an der Edge und im Browser. Wiederholte Zeilen werden zusammengefasst statt die Ausgabe zu fluten.

@visulima/pail6k / weekpnpm add @visulima/pail
logger.ts
import { pail } from "@visulima/pail";

pail.success("Operation successful");
pail.pending("Write release notes for %s", "1.2.0");
pail.fatal(new Error("Unable to acquire lock"));

// Or configure your own instance
import { createPail } from "@visulima/pail";

const logger = createPail({ logLevel: "warn" });

logger.info("Filtered out");
logger.force.info("Logged anyway");

Weiter: eine Kommandozeile dazu

Schritt 3 von 4

Gib ihr eine Kommandozeile.

Kommandos, Flags und Argumente, deren Hilfetext aus derselben Definition entsteht. Die Dokumentation kann dem Parser also nicht davonlaufen. Läuft auf Node, Deno und Bun.

@visulima/cerebro6k / weekpnpm add @visulima/cerebro
cli.ts
import { Cerebro } from "@visulima/cerebro";

const cli = new Cerebro("my-cli");

cli.addCommand({
  name: "build",
  description: "Build the project",
  options: [
    {
      name: "output",
      alias: "o",
      type: String,
      defaultValue: "dist",
    },
    { name: "watch", alias: "w", type: Boolean },
  ],
  execute: ({ logger, options }) => {
    logger.info(`Building to ${options.output}`);
  },
});

await cli.run();

Zuletzt: das Repository sauber halten

Schritt 4 von 4

Halte das Repository sauber.

Ein Toolkit für die Pflichtaufgaben: Task-Runner mit Cache, Hooks für gestagte Dateien, Secret-Scanning und ein gepinnter Installer, damit ein frischer Clone denselben Baum auflöst. Diese Website ist damit gebaut.

@visulima/vis4k / weekpnpm add -D @visulima/vis
vis.config.ts
// vis.config.ts
import { defineConfig } from "@visulima/vis/config";

export default defineConfig({
  install: { backend: "aube" },
  staged: {
    "*.{ts,tsx}": ["eslint --fix", "prettier --write"],
    "package.json": (files) =>
      `sort-package-json ${files.join(" ")}`,
  },
});
60+
Pakete auf npm veröffentlicht
500k+
Downloads pro Woche
MIT
Lizenz, für jedes Paket

Am häufigsten installiert

Die vier oben sind der Rundgang. Diese hier tauchen still in den meisten Lockfiles auf.

@visulima/boxenBoxen im Terminal159k
@visulima/vite-overlayLesbare Vite-Fehler32k
@visulima/errorStacktraces, die man lesen kann31k
@visulima/fsHelfer fürs Dateisystem29k
@visulima/tabularTabellen im Terminal25k
@visulima/pathPfade plattformübergreifend25k

Was drin ist

Ein Monorepo, veröffentlicht Paket für Paket. Nehmen Sie die zwei, die Sie brauchen, und lassen Sie den Rest.

13Terminal
10Datenverarbeitung
8Fehler und Debugging
8Tooling
5E-Mail
3Dateisystem
3API
2Storage
1Workflow
1Benachrichtigung

Getestet auf den Runtimes, auf die Sie ausliefern.

Jedes Paket ist auf aktuelles Node ausgelegt und wird vor dem Release gegen die anderen Runtimes geprüft.

Node.jsBunDenoCloudflare

Nutzen, kaputt machen, Bescheid geben

Alles entsteht öffentlich. Ein Issue aufmachen, einen Patch schicken oder das Paket einfach nehmen und loslegen.

Visulima auf GitHub
Anolilab Jungle