Less.js: Extension requise dans node_modules

Créé le 12 oct. 2017  ·  23Commentaires  ·  Source: less/less.js

J'ai essayé de reproduire un problème aujourd'hui et j'ai enfin quelque chose en piratant mon répertoire node_modules .

Fondamentalement, l'inclusion d'un fichier LESS sans extension fonctionne, nous le savons... mais... l'inclusion sans extension à partir d'un répertoire node_modules échoue.

J'ai créé un dépôt simple démontrant ce qui suit : https://github.com/robhuzzey/lessimporttest

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

tout comme : <strong i="14">@import</strong> 'thisisinnodemodules/one/two/three/four/test.less';
(notez que cela inclut de node_modules avec une extension)

Pourtant:

<strong i="19">@import</strong> 'thisisinnodemodules/one/two/three/four/test';
(notez que cela inclut de node_modules sans extension)

ne fonctionne pas et génère l'erreur suivante :

$ 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 

J'ai créé quelques branches pour montrer que cela semble être un problème avec v3 mais PAS v2 ... quelqu'un peut-il confirmer s'il s'agit d'un comportement attendu ou indésirable (je n'arrive pas à pour trouver quoi que ce soit à ce sujet en ligne).

bug high priority

Tous les 23 commentaires

Également rencontré ce problème aujourd'hui.

Je confirme ce problème également. Vous pouvez le reproduire en clonant et en exécutant npm run dev sur ce référentiel :

https://github.com/acacha/AdminLTETinkerLaravelMix

Tenez compte du fait qu'il s'agit peut-être d'un problème de Webpack, car l'utilisation de la commande lessc ne pose aucun problème.

@acacha Je pensais la même chose mais j'ai prouvé le contraire.. si vous voyez le référentiel que j'ai créé dans le problème soulevé... vous pouvez voir qu'il n'utilise pas webpack et nous avons toujours ce problème :(

J'ai cherché dans le code source le moins important et cela semblait probablement un endroit pour commencer à tester certaines choses :

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

Je suis réticent à commencer à creuser ou à faire un PR jusqu'à ce que je sache que ce n'est pas un comportement prévu... si l'un des mainteneurs de Less peut confirmer... Je suis heureux d'enquêter sur un correctif.

@robhuzzey L'importation à partir de node_modules n'a été ajoutée qu'à la dernière version alpha 3.0, et non, ce n'est pas un comportement prévu qu'il n'importerait pas sans .less dans l'importation. Certainement un bogue dans 3.0 alpha 3. Merci de l'avoir examiné.

@matthew-dean Je semble l'avoir corrigé avec ce travail : https://github.com/robhuzzey/less.js/tree/issue3115_extInNodePath mais je ne sais pas où ajouter un test pour cela ?

Tous les tests passent avec ce changement... Je suis heureux de soumettre le PR pour examen/suggestions ?

@robhuzzey Vous devrez ajouter un .less devDependency NPM dans package.json , puis ajouter un test (dans /tests/less ) pour charger le fichier à partir d'un module (probablement un import-module.less file?) Après avoir ajouté le test, je vérifierais qu'il se casse sans le correctif pour m'assurer que le test fonctionne.

Merci @matthew-dean J'ai vérifié que les tests actuels étaient cassés avant de mettre le correctif... là où j'ai du mal, c'est que tous les tests s'appelaient .less .

Je suppose que le prochain défi consiste à inclure un fichier de node_modules .

@robhuzzey Auriez -vous aussi le temps de regarder https://github.com/less/less.js/issues/3116 ? C'est bien si vous ne le faites pas.

@matthew-dean bien sûr... heureux de vous aider.

J'ai fait un test pour ma branche ici : https://github.com/robhuzzey/less.js/tree/issue3115_extInNodePath mais quelque chose semble ne pas fonctionner comme prévu (je pense que je ne comprends pas bien comment inclure un test pour ce travail).

Si vous pouvez m'indiquer ce que je fais mal, je vous en serais reconnaissant :)

Désolé @matthew-dean, je travaille à l'étranger en ce moment, donc sur un fuseau horaire différent maintenant... heureux d'examiner les problèmes que vous rencontrez si vous pouvez me dire comment écrire des tests pour cette bibliothèque ? J'ai essayé plusieurs fois périodiquement mais j'ai l'impression que c'est probablement quelque chose d'évident que vous pouvez me dire facilement :)

@robhuzzey Je ne connais pas la syntaxe file: dans NPM, mais, sinon, il me semble qu'elle devrait fonctionner correctement. La seule autre chose que vous devez faire est de placer un import-module.css dans test/css , qui est ensuite utilisé comme fichier de comparaison avec la sortie attendue afin que le test puisse vérifier qu'il fonctionne. Lorsque vous exécutez grunt quicktest , vous devrez peut-être ajuster des éléments mineurs dans votre CSS de sortie, comme des sauts de ligne ou des retraits, juste pour correspondre à Moins de sortie. Vous pouvez même créer un fichier vide pour votre premier test puis copier/coller la sortie attendue dans le journal de la console. Tant qu'il affiche les ensembles de règles des modules avec .less omis, c'est la chose importante. Je mélangerais en fait votre test pour que certains (ou un) soient importés avec .less et d'autres sans, pour un test plus robuste.

@matthew-dean merci... c'était si simple au final... juste besoin du CSS pour comparer !

Je ne connaissais pas non plus la syntaxe file:// dans NPM auparavant... mais maintenant je me rends compte que c'est un bon cas d'utilisation plutôt que de créer un véritable package NPM juste pour un test :)

J'ai fait le PR maintenant : https://github.com/less/less.js/pull/3120 Je ne suis pas sûr de la meilleure description... si vous avez des exemples que je peux suivre, etc. suis le.

Merci.

Ce problème a été résolu par : https://github.com/less/less.js/pull/3120

@robhuzzey Une chronologie sur la sortie d'une nouvelle Alpha avec ce correctif ? Cela interrompt actuellement ma construction de pack Web lorsque j'essaie de remplacer des variables dans une bibliothèque externe.

@stefan-schweiger Je vais essayer de sortir ça ce soir ou demain soir.

Si quelqu'un souhaite s'impliquer dans Releasing for the Less repo, contactez-moi par tous les moyens ici ou sur Twitter @matthewdeaners.

@stefan-schweiger désolé, je viens juste de voir ça. Je n'ai pas la possibilité de sortir comme Matthew Dean (c'est ma première contribution à Less pour être honnête).

@matthew-dean comme vous pouvez probablement le constater, je suis assez occupé en ce moment mais j'ai un "temps d'arrêt" prévu pour bientôt, donc je reviendrai vers vous si ça vous va? (Je ne peux tout simplement pas ajouter plus à ce que je fais actuellement en ce moment).

merci @matthew-dean pour avoir corrigé https://github.com/less/less.js/issues/3123 , c'est la raison pour laquelle j'ai même eu cette erreur dans ma version de version. Alors ne vous inquiétez pas @robhuzzey, cela a fonctionné en rétrogradant manuellement avant que cela ne soit corrigé.

Ce problème persistait toujours dans la version 3.0.1.
J'ai rétrogradé manuellement à la version 2.7.3 pour résoudre le problème.

@allentcm Cela n'a pas de sens. Less 2.7.3 n'importe pas du tout depuis le dossier node_modules.

@matthew-dean @allentcm rétrograder à 2.7.3 a également fonctionné pour moi

@matthew-dean @allentcm @babsonmatt rétrograder à 2.7.3 a fonctionné pour moi aussi 👍

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