Less.js: Требуется расширение в node_modules

Созданный на 12 окт. 2017  ·  23Комментарии  ·  Источник: less/less.js

Я пытался воспроизвести проблему сегодня, и, наконец, у меня есть кое-что, взломав мой каталог node_modules .

В принципе, включение файла LESS без расширения работает, мы это знаем ... но ... включение без расширения из каталога node_modules не удается.

Я создал простое репо, демонстрирующее следующее: https://github.com/robhuzzey/lessimporttest

<strong i="11">@import</strong> './one/two/three/four/test'; работает

как и: <strong i="14">@import</strong> 'thisisinnodemodules/one/two/three/four/test.less';
(обратите внимание, что в том числе из node_modules с расширением)

Тем не мение:

<strong i="19">@import</strong> 'thisisinnodemodules/one/two/three/four/test';
(обратите внимание, что в том числе из node_modules без расширения)

не работает и выдает следующую ошибку:

$ 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 

Я сделал несколько веток, чтобы показать, что это проблема с v3 но НЕ v2 ... может ли кто-нибудь подтвердить, является ли это ожидаемым или нежелательным поведением (я не могу показаться чтобы найти что-нибудь об этом в Интернете).

bug high priority

Все 23 Комментарий

Тоже столкнулся с этой проблемой сегодня.

Я также подтверждаю эту проблему. Вы можете воспроизвести его клонирование и запуск npm run dev в этом репо:

https://github.com/acacha/AdminLTETinkerLaravelMix

Учтите, что это может быть проблема с веб-пакетом, потому что при использовании команды lessc проблем не возникает.

@acacha Я думал то же самое, но я доказал обратное ... если вы видите репо, которое я создал в поднятом вопросе ... вы можете видеть, что он не использует веб-пакет, и у нас все еще есть эта проблема :(

Я покопался в меньшем количестве исходного кода, и это выглядело, вероятно, местом для начала тестирования некоторых вещей:

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

Я не хочу начинать копать или делать пиар, пока не узнаю, что это ненормальное поведение ... если один из сопровождающих Less подтвердит ... Я рад изучить исправление.

@robhuzzey Импорт из node_modules был добавлен только в последнюю альфа-версию 3.0, и это не предполагаемое поведение, которое не было бы импортировано без .less в импорте. Определенно ошибка в версии 3.0 alpha 3. Спасибо, что изучили ее.

@ matthew-dean Я, кажется, исправил это с помощью этой работы: https://github.com/robhuzzey/less.js/tree/issue3115_extInNodePath, но я не понимаю, где добавить тест для этого?

Все тесты проходят с этим изменением ... Я рад отправить PR на рассмотрение / предложения?

@robhuzzey Вам нужно будет добавить .less NPM devDependency в package.json , а затем добавить тест (в /tests/less ) для загрузки файла из модуля (возможно, import-module.less file?) После добавления теста я бы проверил, что он не работает, без исправления, чтобы убедиться, что тест работает.

Спасибо @ matthew-dean. Я проверил, что текущие тесты сломались, прежде чем вставлять исправление ... где я борюсь, так это то, что все тесты были названы .less .

Думаю, следующая задача - заставить его включить файл из node_modules .

@robhuzzey У вас тоже будет время посмотреть https://github.com/less/less.js/issues/3116 ? Это нормально, если вы этого не сделаете.

@ matthew-dean конечно ... рад помочь.

Я сделал тест для своей ветки здесь: https://github.com/robhuzzey/less.js/tree/issue3115_extInNodePath, но что-то работает не так, как я ожидал (думаю, я не совсем понимаю, как включить тест для эта работа).

Если вы можете указать мне, что я делаю не так, я был бы признателен :)

Извините @ matthew-dean, я сейчас работаю за границей, так что теперь в другом часовом поясе ... с удовольствием посмотрю на ваши проблемы, если вы дадите мне знать, как писать тесты для этой библиотеки? Я пытался несколько раз периодически, но чувствую, что это, вероятно, что-то очевидное, вы можете с легкостью сказать мне :)

@robhuzzey Я не знаком с синтаксисом file: в NPM, но в остальном мне кажется, что он должен работать правильно. Единственное, что вам нужно сделать, это поместить import-module.css в test/css , который затем используется как файл сравнения с ожидаемым результатом, чтобы тест мог проверить его работу. Когда вы запускаете grunt quicktest , вам может потребоваться настроить незначительные вещи в CSS вывода, такие как перевод строки или отступы, чтобы они соответствовали выводам Less. Вы даже можете создать пустой файл для своего первого теста, а затем скопировать / вставить ожидаемый результат в журнал консоли. Пока он выводит наборы правил из модулей с опущенным .less , это важно. Я бы на самом деле смешал ваш тест так, чтобы некоторые (или один) импортировались с .less а некоторые без, для более надежного теста.

@ matthew-dean, спасибо ... в конце концов, это было так просто ... просто нужен CSS для сравнения!

Я и раньше не знал о синтаксисе file:// в NPM ... но теперь я понимаю, что это хороший вариант использования, а не создание фактического пакета NPM только для теста :)

Я сделал пиар сейчас: https://github.com/less/less.js/pull/3120 Я не уверен в лучшем описании ... если у вас есть примеры, которым я могу следовать и т. Д., Или шаблон, я с радостью следуй за ним.

Спасибо.

Эта проблема была решена с помощью: https://github.com/less/less.js/pull/3120.

@robhuzzey Есть ли сроки, когда будет выпущена новая альфа-

@ stefan-schweiger Я собираюсь выпустить это сегодня или завтра вечером.

Если кто-то заинтересован в участии в репо Releasing for the Less, непременно свяжитесь со мной здесь или в Твиттере @matthewdeaners.

@ stefan-schweiger извини, только что видел это. У меня нет возможности выпускать, как у Мэтью Дина (если честно, это мой первый вклад в Less).

@ matthew-dean, как ты, наверное, понимаешь, я сейчас очень занят, но у меня скоро запланировано «свободное время», так что я вернусь к тебе тогда, если это нормально? (Я просто не могу добавить больше к тому, что делаю прямо сейчас).

спасибо @ matthew-dean за исправление https://github.com/less/less.js/issues/3123 , поэтому я даже получил эту ошибку в своей сборке релиза. Так что не волнуйтесь, @robhuzzey, это сработало путем

Эта проблема все еще сохранялась в версии 3.0.1.
Я вручную понизил версию до 2.7.3, чтобы решить эту проблему.

@allentcm В этом нет смысла. Менее 2.7.3 вообще не импортирует из папки node_modules.

@ matthew-dean @allentcm, понижение версии до 2.7.3

@ matthew-dean @allentcm @babsonmatt, у меня тоже сработало понижение до 2.7.3 👍

Была ли эта страница полезной?
0 / 5 - 0 рейтинги