Less.js: Erweiterung in node_modules erforderlich

Erstellt am 12. Okt. 2017  ·  23Kommentare  ·  Quelle: less/less.js

Ich habe heute versucht, ein Problem zu replizieren, und endlich habe ich etwas, indem ich in meinem node_modules Verzeichnis herumhacke.

Grundsätzlich funktioniert das Einbinden einer LESS-Datei ohne Erweiterung, das wissen wir... aber... das Einbinden ohne Erweiterung aus einem node_modules Verzeichnis schlägt fehl.

Ich habe ein einfaches Repo erstellt, das Folgendes zeigt: https://github.com/robhuzzey/lessimporttest

<strong i="11">@import</strong> './one/two/three/four/test'; funktioniert

ebenso wie: <strong i="14">@import</strong> 'thisisinnodemodules/one/two/three/four/test.less';
(beachten Sie, dass dies von node_modules mit einer Erweiterung umfasst)

Jedoch:

<strong i="19">@import</strong> 'thisisinnodemodules/one/two/three/four/test';
(beachten Sie, dass dies von node_modules ohne Erweiterung umfasst)

funktioniert nicht und liefert folgenden Fehler:

$ npm run buildStyles

> [email protected] buildStyles /Users/robert.huzzey/Sites/test/lessissue
> lessc styles.less styles.css

FileError: 'thisisinnodemodules/one/two/three/four/test' wasn't found. Tried - /Users/robert.huzzey/Sites/test/lessissue/thisisinnodemodules/one/two/three/four/test.less,/Users/robert.huzzey/Sites/test/lessissue/thisisinnodemodules/one/two/three/four/test.less,/Users/robert.huzzey/Sites/test/lessissue/node_modules/thisisinnodemodules/one/two/three/four/test,thisisinnodemodules/one/two/three/four/test.less in /Users/robert.huzzey/Sites/test/lessissue/styles.less on line 5, column 1:
4 // This does NOT work
5 <strong i="24">@import</strong> 'thisisinnodemodules/one/two/three/four/test';
6 

Ich habe ein paar Zweige erstellt, um zu zeigen, dass dies ein Problem mit v3 zu sein scheint, aber NICHT v2 ... kann jemand bestätigen, ob dies erwartet oder ein unerwünschtes Verhalten ist (ich kann nicht scheinen im Internet etwas darüber zu finden).

bug high priority

Alle 23 Kommentare

Ist heute auch auf dieses Problem gestoßen.

Auch dieses Problem bestätige ich. Sie können es reproduzieren, indem Sie npm run dev in diesem Repository klonen und ausführen:

https://github.com/acacha/AdminLTETinkerLaravelMix

Berücksichtigen Sie, dass dies möglicherweise ein Webpack-Problem ist, da mit dem Befehl lessc keine Probleme auftreten.

@acacha Ich habe das gleiche gedacht, aber ich habe das

Ich habe im weniger Quellcode herumgestöbert und dies schien wahrscheinlich ein Ort zu sein, um einige Dinge auszuprobieren:

https://github.com/less/less.js/blob/55380d49e96a6ed561cac4d13a774830aa3c17a3/lib/less-node/file-manager.js#L79 -L87

Ich zögere, mit der Suche oder dem Erstellen einer PR zu beginnen, bis ich weiß, dass dies kein beabsichtigtes Verhalten ist ... wenn einer der Betreuer von Less dies bestätigen kann ... Ich freue mich, eine Lösung zu untersuchen.

@robhuzzey Das Importieren von node_modules wurde nur zum letzten 3.0-Alpha hinzugefügt, und nein, es ist nicht beabsichtigt, dass es ohne .less beim Import nicht importiert würde. Definitiv ein Fehler in 3.0 alpha 3. Danke, dass Sie sich das angeschaut haben.

@matthew-dean Ich scheine es mit dieser Arbeit behoben zu haben: https://github.com/robhuzzey/less.js/tree/issue3115_extInNodePath, aber ich bin mir nicht sicher, wo ich einen Test dafür hinzufügen soll?

Alle Tests bestehen mit dieser Änderung... Ich reiche die PR gerne zur Überprüfung / Vorschläge ein?

@robhuzzey Sie müssten eine .less NPM-Abhängigkeit in package.json hinzufügen und dann einen Test (in /tests/less ) hinzufügen, um die Datei aus einem Modul zu laden (wahrscheinlich ein import-module.less Datei?) Nachdem ich den Test hinzugefügt habe, würde ich überprüfen, ob er ohne den Fix bricht, um sicherzustellen, dass der Test funktioniert.

Danke @matthew-dean Ich habe überprüft, ob die aktuellen Tests fehlgeschlagen sind, bevor ich den Fix einfüge ... wo ich kämpfe, ist, dass alle Tests .less .

Ich denke, die nächste Herausforderung besteht darin, eine Datei von node_modules einzubinden.

@robhuzzey Hätten Sie auch Zeit, sich https://github.com/less/less.js/issues/3116 anzusehen? Das ist in Ordnung, wenn Sie es nicht tun.

@matthew-dean sicher ... gerne helfen.

Ich habe hier einen Test für meinen Zweig gemacht: https://github.com/robhuzzey/less.js/tree/issue3115_extInNodePath, aber etwas scheint nicht wie erwartet zu funktionieren (ich glaube, ich verstehe nicht ganz, wie man einen Test für diese Arbeit).

Wenn Sie mir sagen können, was ich falsch mache, wäre ich Ihnen dankbar :)

Entschuldigung @matthew-dean Ich arbeite im Moment im Ausland, also jetzt in einer anderen Zeitzone ... freue mich über die Probleme, die Sie haben, wenn Sie mir mitteilen können, wie man Tests für diese Lib schreibt? Ich habe es in regelmäßigen Abständen ein paar Mal versucht, aber ich habe das Gefühl, dass es wahrscheinlich etwas Offensichtliches ist, das Sie mir leicht sagen können :)

@robhuzzey Ich bin mit der Syntax file: in NPM nicht vertraut, aber ansonsten scheint es mir so, als ob sie korrekt ausgeführt werden sollte. Sie müssen lediglich ein import-module.css in test/css , das dann als Vergleichsdatei mit der erwarteten Ausgabe verwendet wird, damit der Test überprüfen kann, ob er funktioniert. Wenn Sie grunt quicktest ausführen, müssen Sie möglicherweise kleinere Dinge in Ihrem Ausgabe-CSS wie Zeilenumbrüche oder Einzüge anpassen, damit sie mit der Less-Ausgabe übereinstimmen. Sie können für Ihren ersten Test sogar eine leere Datei erstellen und dann die erwartete Ausgabe in das Konsolenprotokoll kopieren / einfügen. Solange es die Regelsätze von Modulen ohne .less ausgibt, ist das das Wichtigste. Ich würde Ihren Test tatsächlich so mischen, dass einige (oder einer) mit .less und andere ohne importiert werden, um einen robusteren Test zu erzielen.

@matthew-dean danke ... am Ende war es so einfach ... brauchte nur das CSS zum Vergleichen!

Ich kannte die Syntax von file:// in NPM vorher auch nicht ... aber jetzt merke ich, dass dies ein guter Anwendungsfall ist, anstatt ein tatsächliches NPM-Paket nur für einen Test zu erstellen :)

Ich habe jetzt die PR gemacht: https://github.com/less/less.js/pull/3120 Ich bin mir nicht sicher der besten Beschreibung ... wenn Sie Beispiele haben, denen ich folgen kann usw. oder eine Vorlage, die ich gerne habe Folge es.

Vielen Dank.

Dieses Problem wurde behoben von: https://github.com/less/less.js/pull/3120

@robhuzzey Gibt es einen Zeitplan, wann eine neue Alpha mit diesem Fix veröffentlicht wird? Dies unterbricht derzeit meinen Webpack-Build, wenn ich versuche, Variablen in einer externen Bibliothek zu überschreiben.

@stefan-schweiger Ich werde versuchen, das entweder heute Abend oder morgen Abend zu veröffentlichen.

Wenn jemand Interesse hat, sich bei Releasing for the Less Repo zu engagieren, kontaktiere mich auf jeden Fall hier oder auf Twitter @matthewdeaners.

@stefan-schweiger sorry, gerade erst gesehen. Ich habe nicht die Fähigkeit zu veröffentlichen wie Matthew Dean (dies ist mein erster Beitrag zu Less, um ehrlich zu sein).

@matthew-dean wie du wahrscheinlich siehst, bin ich im Moment ziemlich beschäftigt, aber ich habe bald eine geplante "Ausfallzeit", also werde ich dann auf dich zurückkommen, wenn das in Ordnung ist? (Ich kann einfach nicht mehr hinzufügen, was ich gerade tue).

danke @matthew-dean für die Behebung von https://github.com/less/less.js/issues/3123 , deshalb habe ich diesen Fehler sogar in meinem Release-Build erhalten. Machen Sie sich also keine Sorgen geklappt , indem Sie manuell heruntergestuft wurden, bevor dies behoben wurde.

Dieses Problem bestand noch in der Version 3.0.1.
Ich habe ein manuelles Downgrade auf Version 2.7.3 durchgeführt, um das Problem zu beheben.

@allentcm Das macht keinen Sinn. Less 2.7.3 importiert überhaupt nicht aus dem Ordner node_modules.

@matthew-dean @allentcm Downgrade auf 2.7.3 hat auch bei mir funktioniert

@matthew-dean @allentcm @babsonmatt Downgrade auf 2.7.3 hat bei mir auch funktioniert

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen