Less.js: Les importations ne sont pas mises à jour lors de la recompilation via le même (?) Objet less

Créé le 7 mars 2018  ·  19Commentaires  ·  Source: less/less.js

rapport d'erreur
J'écris un outil de compilation pour mon projet, cela dépend moins.

mon dossier de style de projet et les fichiers aiment

- styles
   _utils.less
   index.less

et index.less content est

<strong i="12">@import</strong> "./utils"

J'utilise moins d'API pour compiler moins de fichiers comme

let less=require('less');
//....
less.render(indexContent,options,(err,result)=>{
       console.log(result.css)
});

quand je change le contenu _utils.less , le code ci-dessus s'exécute automatiquement

mais depuis 3.0.x, quand je change le contenu de _utils.less , le result.css est le premier résultat, quel que soit le changement, combien de fois.

mais 2.7.x est ok, quand je change le contenu de _utils.less , le result.css également changé.

bug high priority research needed up-for-grabs

Commentaire le plus utile

Dans l'environnement Node, effacez manuellement le fichier mis en cache moins compile:

const less = require('less');
const fileManagers = less.environment && less.environment.fileManagers || [];
fileManagers.forEach(fileManager => {
     if (fileManager.contents) {
               fileManager.contents = {};
     }
});

Tous les 19 commentaires

Cela ressemble à https://github.com/stevelacy/gulp-less/issues/283.
Je suppose que dans ces cas de "surveillance automatique", c'est le même objet Less utilisé pour compiler chaque mise à jour, non? Ensuite, je suppose que c'est quelque chose de ne pas réinitialiser le cache des importations entre différents appels render ou un peu comme ça.

@ seven-phases-max oui, utilisez le même objet Less pour compiler chaque mise à jour.
Je n'utilise pas d'outil sans gulp, j'utilise moins d'API directement.
il semble moins mettre en cache le résultat et ne pas mettre à jour correctement

Donc, la solution de contournement rapide (jusqu'à ce que le bogue soit résolu) dans votre cas sera dans:

require('less').render(indexContent,options,(err,result)=>{
       console.log(result.css)
});

Oui, il semble que le problème réside dans ce commit où l'arbre d'appel est manipulé en fonction d'arguments https://github.com/less/less.js/commit/a48c24c4dd3c13e00a20ece80323768496a96b36#diff -a6b31db4e862654ae597161e441689bb

il semble que le problème réside dans ce commit ...

Hmm, honnêtement là, je ne vois rien qui puisse affecter les importations ...

Dans l'environnement Node, effacez manuellement le fichier mis en cache moins compile:

const less = require('less');
const fileManagers = less.environment && less.environment.fileManagers || [];
fileManagers.forEach(fileManager => {
     if (fileManager.contents) {
               fileManager.contents = {};
     }
});

Merci @tiodot cela semble fonctionner jusqu'à présent ... Mais j'espère que nous aurons bientôt une solution "plus propre"!

Cela pourrait avoir quelque chose à voir avec ces lignes ajoutées pour la version 3.0. https://github.com/less/less.js/blob/master/lib/less/tree/mixin-definition.js#L9

Essayez de supprimer le if / else spécifique à l'instruction else et voyez si le problème persiste. Si ce n'est pas le cas, cette optimisation devra peut-être être supprimée. Cependant, ce qui serait plus idéal est de vider le gestionnaire de fichiers ou tout cache interne par nouvel appel d'analyse / de rendu.

Vous venez de vérifier s'il existe des mises à jour pour ce problème?
gulp-less attire un certain nombre de développeurs.

Je viens de faire un autre essai il y a quelques heures et cela semblait fonctionner correctement (sans patch). Quelqu'un d'autre?

  "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"
  }

J'ai le même problème décrit par @xinglie mettant à niveau de [email protected].

La solution de contournement fournie par @tiodot ne semble pas fonctionner pour moi (essayé: [email protected] et [email protected]).
L'utilisation de la solution require('less').render() contournement
Y a-t-il peut-être d'autres suggestions? :)

Également affecté par ceci :(

Salut, même si je ne suis pas sûr de ce que j'ai fait différemment, la solution de contournement fournie par @tiodot fonctionne pour moi maintenant!
J'ai essayé à nouveau et j'ai dû faire une erreur quelque part dans le code.
(en utilisant [email protected]).
Merci @tiodot !

Merci @tiodot

@tiodot @ hawkerboy7 @TigersWay Cette branche résout-elle le problème? Si tel est le cas, je vais faire un PR - veuillez vérifier ceci - https://github.com/matthew-dean/less.js/commits/cache-modified

Je viens de faire des vérifications dans 2 projets clairement différents, en commentant le super correctif @tiodot dans package.json, et cela semble fonctionner parfaitement !!

  "optionalDependencies": {
    "less": "github:matthew-dean/less.js#cache-modified"
  },

@ matthew-dean travaille pour moi!

@ matthew-dean Oui, il a résolu le problème! PR à la rescousse !! :)

@tiodot @ hawkerboy7 @TigersWay Cool, la bonne chose est que vous devriez être légèrement plus rapide Moins de compilation avec un cache chaud (une fonctionnalité 3.x), il est donc préférable de le faire réparer; sinon j'aurais suggéré de le retirer. Fera un PR.

Cette page vous a été utile?
0 / 5 - 0 notes