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.
@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.
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.