คอมไพเลอร์ CSS น้อยกลับว่างเปล่า


8

ฉันไม่แน่ใจด้วยซ้ำว่าจะเริ่มแก้ไขจุดบกพร่องนี้ที่ไหน หลายเดือนที่ผ่านมาฉันสามารถรวบรวม CSS จากไฟล์ LESS ของฉันได้อย่างมีความสุข วันนี้ผมทำงานอย่างใดอย่างหนึ่งrecess --compile test.lessหรือlessc test.lessและฉันเพิ่งได้รับการส่งออกว่างเปล่า ไม่มีข้อผิดพลาด lessc test.less > test.cssเพียงสร้างไฟล์เปล่า Makefile twitter-bootstrap สำหรับข้อผิดพลาดน้อยไม่ว่าจะเป็นประโยชน์

ฉันใช้test.lessdebug ง่าย ๆ ต่อไปนี้:

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

ฉันใช้อูบุนตู 12.10 ฉันใช้sudo apt-get install node-lessเพื่อให้lesscและติดตั้งช่องจากทิศทางบน github (npm) ทั้งสองแค่ให้ผลผลิตที่ว่างเปล่ากับฉัน

แม้แต่lessc --versionคืนสิ่งใดก็ตาม

 which lessc

แสดงให้เห็นว่า

/usr/local/bin/lessc

และไฟล์ไม่ว่างเปล่า

อาจมีบางอย่างเกิดขึ้นกับnodeการติดตั้งของฉันแต่อาจไม่รู้ว่าจะแก้ไขข้อบกพร่องนี้ได้อย่างไร apt-get remove --purge node-lessการติดตั้งใหม่ไม่ได้ช่วยอะไร

ขอบคุณมากสำหรับความช่วยเหลือหรือเคล็ดลับในการแก้ไขข้อบกพร่อง!


ใช่/usr/local/bin/lesscไม่ใช่ตำแหน่งที่ถูกต้องเมื่อมาจาก repo อย่างเป็นทางการ: packages.ubuntu.com/quantal/all/node-less/filelist ... ฉันเดาว่าคุณติดตั้งไว้ในเส้นทางของระบบโดยใช้sudo npm ...ซึ่งเป็นความคิดที่แย่จริงๆ
dAnjou

คำตอบ:


7

ใน Ubuntu และดิสทริบิวชันอื่น ๆ คุณควรเลือกแพ็คเกจการจัดจำหน่ายแทนการติดตั้งแพ็คเกจด้วยตนเอง ดังนั้นก่อนอื่นคุณควรเอาย่อมุมติดตั้งผ่านNPM :

sudo npm uninstall recess -g

ลบแพ็กเกจnode-less ที่ติดตั้งไว้ด้วยapt-getเพื่อให้เราสามารถเริ่มต้นด้วยสภาวะแวดล้อมที่สะอาดได้:

sudo apt-get remove node-less

หลังจากเรียกใช้สองคำสั่งเหล่านี้ให้ตรวจสอบให้แน่ใจว่าไม่มีไฟล์ต่อไปนี้อยู่และหากมีอยู่ให้ลบออก:

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

ตรวจสอบไดเรกทอรีดังต่อไปนี้ (และลบออกหากมี):

/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

ไฟล์และไดเรกทอรีทั้งหมดนั้นอาจถูกสร้างขึ้นในรูปแบบต่างๆ วิธีการติดตั้งที่แตกต่างกันนำไปสู่ไดเรกทอรีต่าง ๆ ที่ใช้ การลบไฟล์ทั้งหมดนั้นมีความสำคัญเพื่อให้แน่ใจว่าไม่มีข้อขัดแย้งใด ๆ : คุณควรมีหนึ่งไฟล์และติดตั้งซอฟต์แวร์เวอร์ชันเดียวในระบบของคุณ ข้อยกเว้นเพียงอย่างเดียวคือเมื่อมีการแจกจ่ายซอฟต์แวร์รุ่นเดียวกันที่ต่างกัน (ในกรณีนี้มีการจัดทำแพคเกจเพื่อไม่ให้ขัดแย้งกัน)

ตอนนี้คุณมีสภาวะแวดล้อมที่สะอาดและสามารถติดตั้งโหนดได้น้อย :

sudo apt-get install node-less

โปรดทราบว่าแพ็กเกจโหนดน้อยไม่จัดส่ง/usr/bin/recessเพียง/usr/bin/lesscดังนั้นมันจึงสมบูรณ์ตกลงถ้าrecess --compileล้มเหลว (หรือดีกว่านั้นจะต้องล้มเหลว)

หากยังไม่ทำงานโปรดตรวจสอบการส่งออกของlessc which lesscข้อควรจำ: ถ้ามันคืนสิ่งที่แตกต่าง/usr/bin/lesscไปนั่นหมายความว่าคุณไม่ได้ใช้ lessc จากแพ็คเกจการกระจาย แต่เป็นอย่างอื่น


คุณไม่จำเป็นต้องชอบแพคเกจ distro แต่การผสม distro และ compiled package ที่ให้ไบนารีที่คล้ายกันเป็นสูตรสำหรับปัญหาจริงๆ
Javier Rivera

@ จาเวียร์: สวัสดี แน่นอนว่าคุณไม่จำเป็นต้องเลือกแพ็คเกจการกระจายเท่านั้น แต่เราอยู่บน Ask Ubuntu และฉันคิดว่าโซลูชันที่เหมาะสมที่สุดคือโซลูชันที่บอกวิธีใช้แพ็คเกจการกระจาย :-)
Andrea Corbellini

เพียงคำตอบที่ยอดเยี่ยมขอขอบคุณสำหรับคำอธิบายอย่างระมัดระวัง ทุกอย่างทำงานได้ตามปกติ ไม่แน่ใจว่าฉันจัดการเพื่อติดตั้งรุ่น npm ที่น้อยลงได้อย่างไร แต่ฉันเตือนว่าไม่ควรรวมแพ็คเกจ distro & compiled ที่คล้ายกันไว้ด้วย เป็นเรื่องน่าเสียดายที่มักไม่สามารถพึ่งพาเฉพาะแพ็คเกจ distro ได้โดยเฉพาะกับ ruby ​​เป็นต้น
cboettig

1
@ cboettig: ขอบคุณสำหรับความคิดเห็นของคุณมันชื่นชมจริงๆ ดังที่ Javier ระบุไว้คุณไม่ได้ถูกบังคับให้ใช้แพ็คเกจการแจกจ่าย แต่เมื่อคุณติดตั้งซอฟต์แวร์บุคคลที่สามอย่าลืมติดตั้งระบบให้กว้าง ตัวอย่างเช่นฉันใช้ Python Virtualenv, chroots, Linux Containers (LXC) และเครื่องเสมือน Qemu เมื่อฉันต้องการเรียกใช้ซอฟต์แวร์ที่ไม่ได้จัดไว้ให้โดยการกระจาย (หรือเมื่อฉันต้องการการกำหนดค่าระบบพิเศษ) เทคโนโลยีเหล่านี้ทั้งหมด (และอื่น ๆ อีกมากมาย) ช่วยให้คุณแยกซอฟท์แวร์ออกจากกันเพื่อหลีกเลี่ยงความเจ็บปวด
Andrea Corbellini

เล่นlesscให้/usr/local/bin/lessc no such file or directoryแต่ทำงานให้which lessc /usr/bin/lesscฉันจะบอกให้ใช้ Lessc ได้which lesscอย่างไร
Jacob Valenta

3

หลังจากทำตามขั้นตอนจากคำตอบของ Andrea ที่คุณอาจจะต้องทำงานsource ~/.bashrcถ้าคุณได้รับbash: /usr/local/bin/lessc: No such file or directoryเมื่อคุณเรียก lessc และเมื่อแสดงให้เห็นว่าwhich lessc /usr/bin/lesscนี่คือการอัปเดตตัวแปรสภาพแวดล้อม $ PATH ของคุณ


บันทึกคำตอบจากunix.stackexchange.com/questions/5609/…เพิ่มเติมจากสิ่งนี้
Jeppe Mariager-Lam
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.