Fehlerbericht
Ich schreibe ein Kompilierungswerkzeug für mein Projekt, es hängt weniger davon ab.
Mein Projektstil Ordner und Dateien gefällt
- styles
_utils.less
index.less
und index.less
Inhalt ist
<strong i="12">@import</strong> "./utils"
Ich benutze weniger API, um die weniger Dateien wie zu kompilieren
let less=require('less');
//....
less.render(indexContent,options,(err,result)=>{
console.log(result.css)
});
Wenn ich _utils.less
Inhalt ändere, wird der obige Code automatisch ausgeführt
Aber seit 3.0.x, wenn ich den Inhalt von _utils.less
ändere, ist das result.css
das erste Ergebnis, unabhängig davon, wie oft ich es ändere.
aber 2.7.x ist in Ordnung, wenn ich _utils.less
Inhalt ändere, hat sich auch der result.css
geändert.
Klingt ähnlich wie https://github.com/stevelacy/gulp-less/issues/283.
Ich denke, in diesen "Auto-Watch" -Fällen ist es dasselbe Less-Objekt, das zum Kompilieren jedes Updates verwendet wird, oder? Dann ist es wohl etwas, bei dem einige Import-Caches zwischen verschiedenen render
-Aufrufen oder ähnlichem nicht zurückgesetzt werden.
@ Seven-Phases-Max Ja, verwenden Sie dasselbe Less-Objekt, um jedes Update zu kompilieren.
Ich benutze kein schluckloses Tool, ich benutze weniger API direkt.
Es scheint, dass das Ergebnis weniger zwischengespeichert und nicht korrekt aktualisiert wird
Die schnelle Problemumgehung (bis der Fehler behoben ist) in Ihrem Fall lautet also:
require('less').render(indexContent,options,(err,result)=>{
console.log(result.css)
});
Ja, es scheint, dass das Problem in diesem Commit liegt, bei dem der Aufrufbaum basierend auf den Argumenten https://github.com/less/less.js/commit/a48c24c4dd3c13e00a20ece80323768496a96b36#diff -a6b31db4e862654ae597161e441689bb manipuliert wird
es scheint, dass das Problem in diesem Commit liegt ...
Hmm, ehrlich gesagt kann ich dort nichts sehen, was die Importe beeinflussen könnte ...
In der Knotenumgebung wird die zwischengespeicherte Datei manuell gelöscht und weniger kompiliert:
const less = require('less');
const fileManagers = less.environment && less.environment.fileManagers || [];
fileManagers.forEach(fileManager => {
if (fileManager.contents) {
fileManager.contents = {};
}
});
Danke @tiodot, es scheint soweit zu funktionieren ... Aber ich hoffe, wir werden bald einen "saubereren" Weg finden!
Es könnte etwas mit diesen Zeilen zu tun haben, die für 3.0 hinzugefügt wurden. https://github.com/less/less.js/blob/master/lib/less/tree/mixin-definition.js#L9
Versuchen Sie, das spezifische if / else nur für die else-Anweisung zu entfernen, und prüfen Sie, ob das Problem weiterhin auftritt. Ist dies nicht der Fall, muss diese Optimierung möglicherweise entfernt werden. Idealer wäre es jedoch, den Dateimanager oder einen internen Cache pro neuem Analyse- / Renderaufruf zu löschen.
Überprüfen Sie nur, ob es Updates für dieses Problem gibt?
gulp-less bringt einige Entwickler dazu, dies zu tun.
Ich habe es vor ein paar Stunden noch einmal versucht und es schien gut zu funktionieren (ohne Patch). Irgendjemand anderes?
"dependencies": {
"browser-sync": "^2.24.4",
"gulp": "^4.0.0",
"gulp-autoprefixer": "^5.0.0",
"gulp-clean-css": "^3.9.4",
"gulp-hb": "^7.0.1",
"gulp-less": "^4.0.0",
"gulp-load-plugins": "^1.5.0",
"gulp-rename": "^1.2.2"
},
"optionalDependencies": {
"less": "^3.0.4"
}
Ich habe das gleiche Problem, das durch ein Upgrade von @xinglie von
Die von @tiodot bereitgestellte
Auch die Verwendung der von @ sieben-Phasen-max bereitgestellten Problemumgehung require('less').render()
den Trick nicht ausgeführt :(
Gibt es vielleicht noch mehr Vorschläge? :) :)
Auch davon betroffen :(
Hallo, obwohl ich nicht sicher bin, was ich anders gemacht habe, funktioniert die von @tiodot bereitgestellte Problemumgehung jetzt für mich!
Ich habe es erneut versucht und muss irgendwo im Code einen Fehler gemacht haben.
(mit [email protected]).
Danke @tiodot !
Danke @tiodot
@tiodot @ hawkerboy7 @TigersWay Behebt dieser Zweig das Problem? Wenn ja, mache ich eine PR - bitte überprüfen Sie dies - https://github.com/matthew-dean/less.js/commits/cache-modified
Habe gerade 2 deutlich unterschiedliche Projekte eingecheckt und
"optionalDependencies": {
"less": "github:matthew-dean/less.js#cache-modified"
},
@ Matthew-Dean arbeitet für mich!
@ Matthew-Dean Ja, es hat das Problem behoben! PR zur Rettung !! :) :)
@tiodot @ hawkerboy7 @TigersWay Cool, das
Hilfreichster Kommentar
In der Knotenumgebung wird die zwischengespeicherte Datei manuell gelöscht und weniger kompiliert: