MNIEJ kompilatorów CSS zwracających puste


8

Nie jestem nawet pewien, od czego zacząć debugowanie. Kilka miesięcy temu mogłem z radością skompilować mój CSS z moich plików LESS. Dzisiaj uruchamiam albo recess --compile test.lessalbo, lessc test.lessi po prostu otrzymuję pusty wynik. Bez błędów. lessc test.less > test.csspo prostu tworzy pusty plik. Makefile twitter-bootstrap dla MNIEJ błędów, niech to nie będzie pomocne.

Używam następujących prostych test.lessdo debugowania:

@color: #4D926F;
#header {
  color: @color;
}
h2 {
   color: @color;
}

Jestem na Ubuntu 12.10, kiedyś sudo apt-get install node-lesszapewniałem lessci instalowałem wnękę ze wskazówek na github (npm). Oba dają mi tylko puste wyjście.

Nawet lessc --versionnic nie zwraca.

 which lessc

przedstawia

/usr/local/bin/lessc

a plik nie jest pusty.

Coś musiało się stać z moją nodeinstalacją, ale nie mam pojęcia, jak to debugować. apt-get remove --purge node-lessi ponowna instalacja nie pomogła.

Wielkie dzięki za pomoc lub wskazówki dotyczące debugowania!


Tak, /usr/local/bin/lesscnie jest to poprawna lokalizacja, jeśli pochodzi z oficjalnego repozytorium: packages.ubuntu.com/quantal/all/node-less/filelist ... Chyba zainstalowałeś go na ścieżce systemowej, sudo npm ...co jest naprawdę złym pomysłem.
— dAnjou,

Odpowiedzi:


7

W Ubuntu i innych dystrybucjach powinieneś preferować pakiety dystrybucyjne zamiast ręcznej instalacji pakietów. Przede wszystkim należy usunąć wnękę zainstalowaną za pomocą npm :

sudo npm uninstall recess -g

Usuń także pakiet bez węzłów zainstalowany przez apt-get, abyśmy mogli zacząć od czystego środowiska:

sudo apt-get remove node-less

Po wydaniu tych dwóch poleceń upewnij się, że następujące pliki nie istnieją, a jeśli istnieją, usuń je:

/usr/bin/lessc
/usr/local/bin/lessc

Sprawdź także następujące katalogi (i usuń je, jeśli istnieją):

/node_modules/less
/usr/bin/node_modules/less
/usr/node_modules/less
/usr/local/bin/node_modules/less
/usr/local/node_modules/less
~/.node_modules/less
~/.node_libraries/less

Wszystkie te pliki i katalogi mogą być generowane na różne sposoby. Różne metody instalacji prowadzą do różnych używanych katalogów. Usunięcie wszystkich tych plików jest ważne, aby upewnić się, że nic konfliktu: zawsze powinieneś mieć jedną i tylko jedną wersję oprogramowania zainstalowanego w systemie. Jedynym wyjątkiem jest sytuacja, gdy sama dystrybucja udostępnia różne wersje tego samego oprogramowania (w tym przypadku pakiety są tworzone w taki sposób, aby nie powodowały konfliktów).

Teraz masz czyste środowisko i możesz zainstalować bez węzłów :

sudo apt-get install node-less

Zauważ, że pakiet bez węzłów nie jest wysyłany /usr/bin/recess, /usr/bin/lesscwięc jest całkowicie OK, jeśli recess --compilezawiedzie (lub, lepiej, musi zawieść).

Jeśli lesscnadal nie działa, sprawdź wydajność which lessc. Pamiętaj: jeśli zwraca coś innego niż /usr/bin/lessc, oznacza to, że nie używasz lessc z pakietu dystrybucyjnego, ale coś innego.


Nie musisz preferować pakietów dystrybucyjnych, ale mieszanie pakietów dystrybucyjnych i skompilowanych, które zapewniają podobne pliki binarne, jest naprawdę receptą na problemy.
— Javier Rivera

@Javier: cześć. Na pewno nie musisz wybierać tylko pakietów dystrybucyjnych, ale jesteśmy na Ask Ubuntu i myślę, że najbardziej odpowiednie jest to, które mówi ci, jak korzystać z pakietów dystrybucyjnych. :-)
— Andrea Corbellini,

Po prostu genialna odpowiedź, dziękuję za staranne wyjaśnienie. Wszystko działa teraz tak, jak powinno. Nie jestem pewien, w jaki sposób udało mi się uzyskać mniej zainstalowaną wersję npm, ale ostrzegam, aby nie mieszać podobnych pakietów dystrybucyjnych i skompilowanych. Szkoda, że ​​często nie można polegać tylko na pakietach dystrybucyjnych, szczególnie w przypadku ruby ​​itp.
— cboettig 27.12.12

1
@cboettig: dzięki za opinie, to bardzo doceniane. Jak zauważył Javier, nie jesteś zmuszony używać pakietów dystrybucyjnych. Ale podczas instalowania oprogramowania innych firm pamiętaj, aby nie instalować go w całym systemie. Na przykład używam Pythona Virtualenv, chroots, Linux Containers (LXC) i maszyn wirtualnych Qemu, gdy muszę uruchomić oprogramowanie, które nie jest dostarczane przez dystrybucję (lub gdy potrzebuję specjalnych konfiguracji systemu). Wszystkie te technologie (i wiele innych) pomagają izolować oprogramowanie, unikając bólu.
— Andrea Corbellini,

Bieganie lesscdaje /usr/local/bin/lessc no such file or directory, ale bieganie which lesscdaje /usr/bin/lessc. Jak mam to zrobić, aby użyć lekcji z which lessc?
— Jacob Valenta

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.