informe de error
Escribo una herramienta de compilación para mi proyecto, depende menos.
mi carpeta de estilo de proyecto y archivos me gusta
- styles
_utils.less
index.less
y el contenido de index.less
es
<strong i="12">@import</strong> "./utils"
Uso menos api para compilar menos archivos como
let less=require('less');
//....
less.render(indexContent,options,(err,result)=>{
console.log(result.css)
});
cuando cambio el contenido de _utils.less
, el código anterior se ejecutará automáticamente
pero desde 3.0.x, cuando cambio el contenido de _utils.less
, el result.css
es el resultado de la primera vez, sin importar cuántas veces cambie.
pero 2.7.x está bien, cuando cambio el contenido de _utils.less
, el result.css
también cambió.
Suena similar a https://github.com/stevelacy/gulp-less/issues/283.
Supongo que en estos casos de "observación automática" es el mismo objeto Less que se usa para compilar cada actualización, ¿verdad? Entonces supongo que es algo con no resetear algunas importaciones de caché entre diferentes llamadas render
o algo así.
@ seven-phase-max sí, use el mismo objeto Less para compilar cada actualización.
No estoy usando la herramienta gulp-less, uso menos api directamente.
parece menos caché el resultado y no se actualiza correctamente
Entonces, la solución rápida (hasta que se solucione el error) en su caso estará en:
require('less').render(indexContent,options,(err,result)=>{
console.log(result.css)
});
Sí, parece que el problema radica en esta confirmación donde el árbol de llamadas se manipula en función de los argumentos https://github.com/less/less.js/commit/a48c24c4dd3c13e00a20ece80323768496a96b36#diff -a6b31db4e862654ae597161e441689bb
parece que el problema radica en este compromiso ...
Hmmm, honestamente ahí no veo nada que pueda afectar las importaciones ...
En el entorno de nodo, borre manualmente el archivo en caché menos compilado:
const less = require('less');
const fileManagers = less.environment && less.environment.fileManagers || [];
fileManagers.forEach(fileManager => {
if (fileManager.contents) {
fileManager.contents = {};
}
});
Gracias @tiodot , parece estar funcionando hasta ahora ... ¡Pero espero que pronto tengamos una forma "más limpia"!
Podría tener algo que ver con estas líneas agregadas para 3.0. https://github.com/less/less.js/blob/master/lib/less/tree/mixin-definition.js#L9
Intente eliminar el if / else específico solo para la instrucción else y vea si el problema persiste. Si no es así, es posible que deba eliminarse esta optimización. Sin embargo, lo que sería más ideal es borrar el administrador de archivos o cualquier caché interno por cada nueva llamada de análisis / procesamiento.
¿Solo está comprobando si hay actualizaciones para este problema?
Gulp-less está consiguiendo que bastantes desarrolladores lo estén.
Lo intenté de nuevo hace unas horas y parecía estar funcionando bien (sin parche). ¿Alguien mas?
"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"
}
Tengo el mismo problema descrito por [email protected].
La solución alternativa proporcionada por @tiodot no pareció funcionar para mí (probado: [email protected] y [email protected]).
Además, el uso de la solución alternativa require('less').render()
proporcionada por @ seven-phase-max no funcionó :(
¿Hay quizás más sugerencias? :)
También afectado con esto :(
Hola, aunque no estoy seguro de qué hice de manera diferente, ¡la solución alternativa que @tiodot proporcionó
Lo intenté de nuevo y debo haber cometido un error en algún lugar del código.
(usando [email protected]).
¡Gracias @tiodot !
Gracias @tiodot
@tiodot @ hawkerboy7 @TigersWay ¿Esta rama resuelve el problema? Si es así, haré un PR - por favor revise esto - https://github.com/matthew-dean/less.js/commits/cache-modified
Acabo de verificar 2 proyectos claramente diferentes, comentando el gran parche @tiodot dentro de package.json, ¡y parece estar funcionando perfectamente!
"optionalDependencies": {
"less": "github:matthew-dean/less.js#cache-modified"
},
¡@ matthew-dean funciona para mí!
@ matthew-dean ¡Sí, ha resuelto el problema! PR al rescate !! :)
@tiodot @ hawkerboy7 @TigersWay Genial, lo bueno es que deberías compilar menos rápido con un caché cálido (una característica 3.x), por lo que es preferible que lo arreglen; de lo contrario, habría sugerido sacarlo. Hará un PR.
Comentario más útil
En el entorno de nodo, borre manualmente el archivo en caché menos compilado: