Less.js: Extensión requerida en node_modules

Creado en 12 oct. 2017  ·  23Comentarios  ·  Fuente: less/less.js

He intentado replicar un problema hoy y finalmente tengo algo pirateando en mi directorio node_modules .

Básicamente, incluir un archivo LESS sin una extensión funciona, sabemos esto ... pero ... incluso sin una extensión de un directorio node_modules falla.

Creé un repositorio simple que demuestra lo siguiente: https://github.com/robhuzzey/lessimporttest

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

como lo hace: <strong i="14">@import</strong> 'thisisinnodemodules/one/two/three/four/test.less';
(tenga en cuenta que se incluye desde node_modules con una extensión)

Sin embargo:

<strong i="19">@import</strong> 'thisisinnodemodules/one/two/three/four/test';
(tenga en cuenta que se incluye desde node_modules sin extensión)

no funciona y produce el siguiente error:

$ 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 

Hice un par de ramas para mostrar que esto parece ser un problema con v3 pero NO v2 ... ¿alguien puede confirmar si esto es un comportamiento esperado o no deseado (no puedo parecer para encontrar algo sobre esto en línea).

bug high priority

Todos 23 comentarios

También me encontré con este problema hoy.

Confirmo este problema también. Puede reproducirlo clonando y ejecutando npm run dev en este repositorio:

https://github.com/acacha/AdminLTETinkerLaravelMix

Tenga en cuenta que esto puede ser un problema de paquete web porque al usar el comando lessc no hay problemas.

@acacha Pensé lo mismo pero he demostrado lo contrario ... si ves el repositorio que creé en el problema planteado ... puedes ver que no está usando el paquete web y todavía tenemos este problema :(

Hice una búsqueda en el código fuente menos y este parecía un lugar para comenzar a probar algunas cosas:

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

Soy reacio a comenzar a investigar o hacer un PR hasta que sepa que este no es un comportamiento intencionado ... si uno de los mantenedores de Less puede confirmarlo ... Estoy feliz de investigar una solución.

@robhuzzey La importación desde node_modules solo se agregó a la última .less en la importación. Definitivamente un error en 3.0 alpha 3. Gracias por investigarlo.

@ matthew-dean Parece que lo he solucionado con este trabajo: https://github.com/robhuzzey/less.js/tree/issue3115_extInNodePath pero no tengo claro dónde agregar una prueba para esto.

Todas las pruebas pasan con este cambio ... ¿Me complace enviar el RP para revisión / sugerencias?

@robhuzzey Debería agregar .less NPM devDependency en package.json , y luego agregar una prueba (en /tests/less ) para cargar el archivo desde un módulo (probablemente un import-module.less file?) Después de agregar la prueba, verificaría que se rompa sin la corrección para asegurarme de que la prueba está funcionando.

Gracias @ matthew-dean Verifiqué que las pruebas actuales se rompieron antes de arreglarlo ... donde lucho es que todas las pruebas se llamaron .less .

Supongo que el próximo desafío es lograr que incluya un archivo de node_modules .

@robhuzzey ¿También tendrías tiempo para mirar https://github.com/less/less.js/issues/3116 ? Está bien si no lo hace.

@ matthew-dean seguro ... feliz de ayudar.

Hice una prueba para mi rama aquí: https://github.com/robhuzzey/less.js/tree/issue3115_extInNodePath pero algo parece no funcionar como esperaba (creo que no entiendo completamente cómo incluir una prueba para este trabajo).

Si me puede indicar lo que estoy haciendo mal, se lo agradecería :)

Lo siento @ matthew-dean, estoy trabajando en el extranjero en este momento, así que ahora en una zona horaria diferente ... ¿Me alegra ver los problemas que tiene si me puede decir cómo escribir pruebas para esta biblioteca? Lo he intentado varias veces periódicamente, pero siento que probablemente es algo obvio que puedes decirme con facilidad :)

@robhuzzey No estoy familiarizado con la sintaxis file: en NPM, pero, de lo contrario, me parece que debería estar funcionando correctamente. La única otra cosa que debe hacer es colocar un import-module.css en test/css , que luego se usa como un archivo de comparación con el resultado esperado para que la prueba pueda verificar que está funcionando. Cuando ejecuta grunt quicktest , es posible que deba ajustar cosas menores en su CSS de salida, como líneas nuevas o sangrías, solo para que coincida con la salida Menos. Incluso puede crear un archivo vacío para su primera prueba y luego copiar / pegar el resultado esperado en el registro de la consola. Siempre que genere los conjuntos de reglas de los módulos con .less omitido, eso es lo importante. De hecho, combinaría su prueba para que algunos (o uno) se importen con .less y otros sin, para una prueba más sólida.

@ matthew-dean gracias ... fue tan simple al final ... ¡solo necesitaba el CSS para comparar!

Tampoco conocía la sintaxis file:// en NPM anteriormente ... pero ahora me doy cuenta de que este es un buen caso de uso en lugar de hacer un paquete NPM real solo para una prueba :)

Hice el PR ahora: https://github.com/less/less.js/pull/3120 No estoy seguro de la mejor descripción ... si tiene ejemplos que puedo seguir, etc. o una plantilla, con mucho gusto Siguelo.

Gracias.

Este problema ha sido resuelto por: https://github.com/less/less.js/pull/3120

@robhuzzey ¿ Alguna línea de tiempo sobre cuándo se lanzará un nuevo Alpha con esta solución? Esto actualmente rompe la compilación de mi paquete web cuando trato de anular las variables en una biblioteca externa.

@ stefan-schweiger Voy a intentar publicar esto esta noche o mañana por la noche.

Si alguien está interesado en participar en el repositorio de Releasing for the Less, comuníquese conmigo aquí o en Twitter @matthewdeaners.

@ stefan-schweiger lo siento, acabo de ver esto. No tengo la capacidad de lanzar como Matthew Dean (esta es mi primera contribución a Less para ser honesto).

@ matthew-dean, como probablemente pueda ver, estoy bastante ocupado en este momento, pero tengo un "tiempo de inactividad" programado próximamente, así que volveré con usted si está bien. (No puedo agregar más a lo que estoy haciendo actualmente).

gracias @ matthew-dean por arreglar https://github.com/less/less.js/issues/3123 , esa es la razón por la que incluso recibí este error en mi versión de lanzamiento. Así que no te preocupes @robhuzzey , funcionó degradando manualmente antes de que esto se solucionara.

Este problema aún persiste en la versión 3.0.1.
Bajé manualmente a la versión 2.7.3 para resolver el problema.

@allentcm Eso no tiene sentido. Less 2.7.3 no se importa desde la carpeta node_modules en absoluto.

@ matthew-dean @allentcm rebajar a 2.7.3 también funcionó para mí

@ matthew-dean @allentcm @babsonmatt rebajar a 2.7.3 también funcionó para mí 👍

¿Fue útil esta página
0 / 5 - 0 calificaciones