rescript-lang / rescript-lang/rescript

Dependency analysis

Offen
#8,499 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
OCaml
Sterne
7.5k
Forks
485
Ø Merge
1 T. 2 Std.
Gemergte PRs (30 T.)
55

Beschreibung

Currently it is very hard to analyze where a dependency will be imported, for example:

type t

@module("dep") external make: unit => t = "make"

let timeMake = () => {
  Js.Console.timeStart("make")
  let t = make()
  Js.Console.timeEnd("make")
  t
} 

A consuming module may import dep directly, or it may not depending on which function is used and if there is an interface file.

If dependencies, devDependencies, and peerDependencies are not properly set this may become a problem for certain package manager setups. A small change could end up causing a runtime error. It could be particularly insidious if it is a rarely used or lazy loaded binding.

Due to the different dependency types often being misunderstood and the complexity of analysis, I believe ReScript should have the ability to check package.json dependencies for correctness.

I've had Claude create an example project here that failures when using pnpm style linking. The main branch uses ReScript 12 and ESM, but there is also a rescript-11-cjs branch for reference.

BTW it could be helpful if this feature was implemented in a way that we could integrate with Knip as a plugin

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginnen Sie mit dem verlinkten res-dep-issue-Beispiel, vergleichen Sie dessen main- und rescript-11-cjs-Branches und reproduzieren Sie den pnpm-Style-Verknüpfungsfehler. Lesen Sie anschließend die Einstiegspunkte der Abhängigkeitsanalyse des Compilers und ermitteln Sie, wie Abhängigkeiten in package.json geprüft werden sollten. Als erledigt gilt die Aufgabe, wenn die vorgeschlagene Analyse unzuverlässige Abhängigkeiten zuverlässig erkennt und einen klaren Integrationspfad für Knip bietet.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
javascript
Bereich
build-system, compilers
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Ruhig
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.