Less.js: Extensão necessária em node_modules

Criado em 12 out. 2017  ·  23Comentários  ·  Fonte: less/less.js

Estou tentando replicar um problema hoje e, finalmente, tenho algo invadindo meu diretório node_modules .

Basicamente, incluir um arquivo LESS sem uma extensão funciona, nós sabemos disso ... mas ... incluir sem uma extensão de um diretório node_modules falha.

Criei um repo simples demonstrando o seguinte: https://github.com/robhuzzey/lessimporttest

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

assim como: <strong i="14">@import</strong> 'thisisinnodemodules/one/two/three/four/test.less';
(observe que está incluindo de node_modules com uma extensão)

Contudo:

<strong i="19">@import</strong> 'thisisinnodemodules/one/two/three/four/test';
(observe que está incluindo de node_modules sem extensão)

não funciona e produz o seguinte erro:

$ 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 

Fiz algumas ramificações para mostrar que isso parece ser um problema com v3 mas NÃO v2 ... alguém pode confirmar se este é um comportamento esperado ou indesejado (não consigo para encontrar algo sobre isso online).

bug high priority

Todos 23 comentários

Também tive esse problema hoje.

Eu confirmo este problema também. Você pode reproduzi-lo clonando e executando npm run dev neste repo:

https://github.com/acacha/AdminLTETinkerLaravelMix

Leve em consideração que este é talvez um problema do webpack, porque usando o comando lessc não há problemas.

@acacha Eu pensei a mesma coisa, mas provei o contrário .. se você

Eu fiz uma pesquisa no código-fonte menos e este parecia provavelmente um lugar para começar a testar algumas coisas:

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

Estou relutante em começar a cavar ou fazer um PR até saber que este não é o comportamento pretendido ... se um dos mantenedores do Less puder confirmar ... Fico feliz em investigar uma solução.

@robhuzzey A importação de node_modules foi adicionada apenas ao último alfa 3.0, e não, não é um comportamento pretendido que não importaria sem .less na importação. Definitivamente um bug no 3.0 alpha 3. Obrigado por olhar para ele.

@ matthew-dean Parece que consertei com este trabalho: https://github.com/robhuzzey/less.js/tree/issue3115_extInNodePath, mas não estou certo de onde adicionar um teste para isso?

Todos os testes passam com essa mudança ... Terei prazer em enviar o PR para revisão / sugestões?

@robhuzzey Você precisaria adicionar .less NPM devDependency em package.json e, em seguida, adicionar um teste (em /tests/less ) para carregar o arquivo de um módulo (provavelmente um import-module.less file?) Depois de adicionar o teste, eu verificaria se ele quebra sem a correção para ter certeza de que o teste está funcionando.

Obrigado @ matthew-dean eu verifiquei se os testes atuais quebraram antes de colocar a correção ... onde eu luto é que todos os testes foram nomeados .less .

Acho que o próximo desafio é fazer com que ele inclua um arquivo de node_modules .

@robhuzzey Você também teria tempo para dar uma olhada em https://github.com/less/less.js/issues/3116 ? Tudo bem se você não quiser.

@ matthew-dean com certeza ... feliz em ajudar.

Fiz um teste para meu branch aqui: https://github.com/robhuzzey/less.js/tree/issue3115_extInNodePath, mas algo parece não funcionar como eu esperava (acho que não entendi completamente como incluir um teste para Este trabalho).

Se você puder me apontar o que estou fazendo de errado, eu agradeceria :)

Desculpe @ matthew-dean, estou trabalhando no exterior no momento, então em um fuso horário diferente agora ... feliz em ver os problemas que você tem, se você puder me dizer como escrever testes para esta biblioteca? Tentei algumas vezes periodicamente, mas sinto que provavelmente é algo óbvio que você pode me dizer com facilidade :)

@robhuzzey Não estou familiarizado com a sintaxe file: do NPM, mas, por outro lado, parece que deveria estar funcionando corretamente. A única outra coisa que você precisa fazer é colocar import-module.css em test/css , que então é usado como um arquivo de comparação com a saída esperada para que o teste possa verificar se está funcionando. Quando você executa grunt quicktest , pode ser necessário ajustar coisas menores em seu CSS de saída, como novas linhas ou recuos, apenas para corresponder a menos saída. Você pode até criar um arquivo vazio para o primeiro teste e, em seguida, copiar / colar a saída esperada no log do console. Contanto que ele esteja gerando os conjuntos de regras dos módulos com .less omitidos, isso é o que importa. Na verdade, eu mesclaria seu teste de forma que alguns (ou um) fossem importados com .less e outros sem, para um teste mais robusto.

@matthew-dean obrigado ... foi tão simples no final .. só precisava do CSS para comparar!

Eu também não sabia sobre a sintaxe file:// no NPM ... mas agora percebo que este é um bom caso de uso em vez de fazer um pacote NPM real apenas para um teste :)

Eu fiz o PR agora: https://github.com/less/less.js/pull/3120 Não tenho certeza da melhor descrição ... se você tiver exemplos que posso seguir etc ou um modelo terei prazer Siga isso.

Obrigado.

Este problema foi resolvido por: https://github.com/less/less.js/pull/3120

@robhuzzey Qualquer cronograma sobre quando um novo Alpha será lançado com esta correção? Isso atualmente quebra minha construção do webpack quando tento substituir variáveis ​​em uma biblioteca externa.

@ stefan-schweiger vou tentar liberar isso hoje à noite ou amanhã à noite.

Se alguém estiver interessado em se envolver no Releasing for the Less repo, por favor, entre em contato comigo aqui ou no Twitter @matthewdeaners.

@stefan-schweiger desculpe, acabei de ver isso. Eu não tenho a habilidade de liberar como Matthew Dean tem (esta é minha primeira contribuição para Less para ser honesto).

@matthew-dean como você provavelmente pode dizer, estou muito ocupado no momento, mas tenho algum "tempo ocioso" agendado para breve, então voltarei a falar com você, se estiver tudo bem? (Eu simplesmente não posso adicionar mais ao que estou fazendo agora).

obrigado @ matthew-dean por corrigir https://github.com/less/less.js/issues/3123 , essa é a razão pela qual recebi esse erro na minha versão de lançamento. Portanto, não se preocupe, @robhuzzey , deu certo fazendo o downgrade manualmente antes de ser corrigido.

Este problema ainda persistia na versão 3.0.1.
Fiz o downgrade manualmente para a versão 2.7.3 para resolver o problema.

@allentcm Isso não faz sentido. Less 2.7.3 não importa da pasta node_modules.

@ matthew-dean @allentcm rebaixar para 2.7.3 funcionou para mim também

@ matthew-dean @allentcm @babsonmatt rebaixar para 2.7.3 funcionou para mim também 👍

Esta página foi útil?
0 / 5 - 0 avaliações