relatório de erro
Eu escrevo uma ferramenta de compilação para o meu projeto, depende menos.
minha pasta de estilo de projeto e arquivos como
- styles
_utils.less
index.less
e o conteúdo de index.less
é
<strong i="12">@import</strong> "./utils"
Eu uso menos api para compilar menos arquivos como
let less=require('less');
//....
less.render(indexContent,options,(err,result)=>{
console.log(result.css)
});
quando eu mudar o conteúdo de _utils.less
, o código acima será executado automaticamente
mas desde 3.0.x, quando eu mudo _utils.less
conteúdo, o result.css
é o resultado da primeira vez, independentemente da mudança quantas vezes.
mas 2.7.x está ok, quando eu mudo o conteúdo de _utils.less
, o result.css
também mudou.
Parece semelhante a https://github.com/stevelacy/gulp-less/issues/283.
Acho que nesses casos de "observação automática" é o mesmo objeto Less usado para compilar cada atualização, certo? Então eu acho que é algo com não redefinir algum cache de importação entre diferentes render
chamadas ou algo parecido.
@ seven-phase-max yes, use o mesmo objeto Less para compilar cada atualização.
Eu não uso a ferramenta gulp-less, eu uso menos api diretamente.
parece menos armazenar em cache o resultado e não atualizar corretamente
Portanto, a solução rápida (até que o bug seja resolvido) no seu caso será:
require('less').render(indexContent,options,(err,result)=>{
console.log(result.css)
});
Sim, parece que o problema está neste commit em que a árvore de chamada é manipulada com base nos argumentos https://github.com/less/less.js/commit/a48c24c4dd3c13e00a20ece80323768496a96b36#diff -a6b31db4e862654ae597161e441689bb
parece que o problema está neste commit ...
Hmm, honestamente não consigo ver nada que possa afetar as importações ...
No ambiente Node, limpe manualmente o arquivo em cache menos compilado:
const less = require('less');
const fileManagers = less.environment && less.environment.fileManagers || [];
fileManagers.forEach(fileManager => {
if (fileManager.contents) {
fileManager.contents = {};
}
});
Obrigado @tiodot parece estar funcionando até agora ... Mas espero que possamos obter uma maneira "mais limpa" logo!
Pode ter algo a ver com essas linhas adicionadas para 3.0. https://github.com/less/less.js/blob/master/lib/less/tree/mixin-definition.js#L9
Tente remover o if / else específico apenas para a instrução else e veja se o problema ainda ocorre. Caso contrário, essa otimização pode precisar ser removida. No entanto, o que seria mais ideal é limpar o gerenciador de arquivos ou qualquer cache interno por nova chamada de análise / renderização.
Apenas verificando se há alguma atualização para este problema?
gulp-less está fazendo com que alguns desenvolvedores acertem isso.
Apenas tentei novamente algumas horas atrás e parecia estar funcionando bem (sem patch). Alguém mais?
"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"
}
Eu tenho o mesmo problema descrito por [email protected].
A solução alternativa fornecida por @tiodot não pareceu funcionar para mim (tentei: [email protected] e [email protected]).
Além disso, usar a solução alternativa require('less').render()
fornecida por @ seven-phase-max não funcionou :(
Existem talvez mais sugestões? :)
Também afetado por :(
Olá, embora eu não tenha certeza do que fiz de maneira diferente, a solução alternativa fornecida pelo @tiodot funciona para mim agora!
Tentei novamente e devo ter cometido um erro em algum lugar do código.
(usando [email protected]).
Obrigado @tiodot !
Obrigado @tiodot
@tiodot @ hawkerboy7 @TigersWay Este branch resolve o problema? Em caso afirmativo, farei um PR - verifique isto - https://github.com/matthew-dean/less.js/commits/cache-modified
Acabei de fazer verificações em 2 projetos claramente diferentes, comentando @tiodot ótimo patch dentro do package.json, e parece estar funcionando perfeitamente !!
"optionalDependencies": {
"less": "github:matthew-dean/less.js#cache-modified"
},
@matthew-dean trabalha para mim!
@ matthew-dean Sim, resolveu o problema! PR para o resgate !! :)
@tiodot @ hawkerboy7 @TigersWay Legal, o legal é que você deve ficar um pouco mais rápido Compilando menos com um cache quente (um recurso 3.x), então é preferível consertá-lo; caso contrário, eu teria sugerido retirá-lo. Fará um PR.
Comentários muito úteis
No ambiente Node, limpe manualmente o arquivo em cache menos compilado: