Rollup-plugin-typescript2: Symlinks funktionieren nicht

Erstellt am 30. Okt. 2019  ·  12Kommentare  ·  Quelle: ezolenko/rollup-plugin-typescript2

typescript2 symlink issue

Wenn ein Symlink zur Abhängigkeit erstellt wird, gibt das Rollup den Fehler "Fehler: Unerwartetes Token (Beachten Sie, dass Sie Plugins zum Importieren von Dateien benötigen, die kein JavaScript sind)" aus.

Umgebung

Versionen

  • Typoskript:^3.6.4
  • Rollup:"^1.26.0"
  • rollup-plugin-typescript2:^0.24.3

rollup.config.js

tsconfig.json

Paket.json

Plugin-Ausgabe mit Ausführlichkeit 3

bug

Hilfreichster Kommentar

Das gleiche Problem, aber ich verwende lerna, um Pakete zu verknüpfen, und Rollup beschwert sich über unerwartete Token für die verknüpften Pakete.

Alle 12 Kommentare

Dateisystem-Symlinks? Welches Betriebssystem, Soft- oder Hardlinks? können Sie eine Repo mit Reproduktion ändern?

Windows-Betriebssystem. Symlink mit der Option "npm link" zum externen Modul erstellt. Wenn das Modul installiert ist, kein Problem. Aber um lokal zu testen, müssen wir Symlinks erstellen und das funktioniert nicht nur mit dem typescript2-Plugin. Mit dem typescript1-Plugin funktionieren Symlinks, aber Aufzählungen funktionieren nicht.

Das gleiche Problem, aber ich verwende lerna, um Pakete zu verknüpfen, und Rollup beschwert sich über unerwartete Token für die verknüpften Pakete.

genau das gleiche Problem unter Windows mit lerna
Wenn ich den Ordner direkt in node_modules kopiere ist alles in Ordnung, aber mit einem Symlink funktioniert es nicht

@PavaniVaka @TerenceZ @thealjey eine Chance für ein kleines Repo mit Reproduktion?

@ezolenko Entschuldigung, nein. Aber ich habe das Thema etwas eingegrenzt. Mir ist aufgefallen, dass es funktioniert, wenn das externe Modul in das Anwendungsverzeichnis kopiert wird. Aber wenn es nur ein Symlink ist, funktioniert es nicht. Zum Beispiel: Mit yalc können wir die externen Abhängigkeiten einfach testen. Weil es den yalc-Ordner im Anwendungsverzeichnis erstellt und das externe Modul in diesen Ordner kopiert und dann einen Symlink vom yalc-Ordner zu node_modules erstellt. Hoffe das gibt einen Anhaltspunkt.

@ezolenko Ich habe tatsächlich herausgefunden, was das Problem in meinem Fall war und es hat nichts mit diesem Plugin (es funktioniert perfekt) oder Symlinks zu tun.
Es ist eher ein Manko des Typoskripts selbst oder vielmehr seiner Konfiguration, die auf Json-Dateien basiert.
Das Problem war, dass der Symlink in eine Datei außerhalb von CWD aufgelöst wurde.
Ich habe meinen Build-Befehl einfach in die Datei package.json der obersten Ebene verschoben und alles funktionierte.

Ich glaube, wir sind hier auf der gleichen Seite.

194

@PavaniVaka @TerenceZ @thealjey eine Chance für ein kleines Repo mit Reproduktion?

@ezolenko https://github.com/moki/mokui es gibt einen.

Ich habe das Problem # 194 gelöst, falls jemand auf das gleiche Problem stößt, biete ich unten eine Lösung an:

Wenn versucht wird, jedes einzelne Paket innerhalb des Monorepo zu erstellen, versucht das Rollup, @organization/package-name aufzulösen und in den Build einzuschließen. Sie wollen das nicht. Um es beim Erstellen jedes Pakets zu vermeiden, parse ich package.json , extrahiere die Schlüssel des dependencies Felds und vergleiche sie dann innerhalb des callback Felds kann im Feld external Rollup-Konfiguration bereitstellen. Dadurch wird das gewünschte Ergebnis erzielt.

import json from "rollup-plugin-json";

const pkg = process.env.LERNA_PACKAGE_NAME &&
          require(`${process.env.LERNA_PACKAGE_NAME}/package.json`);

const dependencies = ({ dependencies }) => Object.keys(dependencies || {});

const pkgdependencies = dependencies(pkg);

/* exported rollup configuration */
const config = {
    /* your config goes here... */
    /* id is the source name if list of dependencies includes
     * id source name, then mark it as external,
     */
    external: id => pkgdependencies.includes(id)
};

export default config;

gleiches Problem und rollup-plugin-typescript funktioniert

Das Problem tritt auch auf, wenn eine Datei unter dem src ein symbolischer Link zu einer Typoskriptdatei außerhalb des Projekts ist.

zB die Dateistruktur wie folgt:

core/core-client/src/api.ts
myapp/myapp-client/src/api.ts
myapp/myapp-app/src/domain/api.ts -> ../../../myapp-client/src/domain/api.ts
myapp/myapp-app/src/domain/core -> ../../../../core/core-client/src/domain/
...

wenn ich das Projekt unter myapp/myapp-app kompiliere,
Rollup-Beschwerde mit folgendem Fehler:

[ ERROR ]  Rollup: Parse Error: ../myapp-client/src/domain/api.ts:28:7
           Unexpected token (Note that you need plugins to import files that are not JavaScript)

     L28:  export interface IPrimus extends Primus {

mit dem rot hervorgehobenen Wort interface

Meine Problemumgehung besteht darin, den Pre/Post-Hook im npm-Skript zu verwenden, um die Verknüpfung der Dateien aufzuheben und zu verknüpfen ...
So kann meine IDE während der Entwicklung nach der neuesten Version suchen und beim Build kompilieren.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen