ขึ้น Yarn แบบไม่ต้องซื้อโหลดเพิ่ม

ปัญหาของคนใช้ npm ที่ต้องเจอแน่ๆ คือ ไฟล์ขยะ หรือไฟล์ที่เราไม่ได้ใช้ จำนวนมหาศาล ที่ไม่ควรไปนั่งเสียเวลานั่งลบมัน แต่ด้วยขนาด package ที่ใหญ่ เวลาเอางานขึ้น production นั้น ถ้าไม่ลง node ไว้บน server และ install ผ่าน CLI เราก็ต้องใช้วิธี FTP เข้าไปวาง 

ซึ่ง code เราจริงๆ อาจจะมีแค่ 1 Mb แต่ package library ที่ต้อง upload กลับมีขนาดใหญ่กว่าเป็น 10 เท่า!!! 

ผมพยายามหาวิธี deployment สวยๆ เช่นการใช้ grunt, gulp แต่กระนั้นก็ไม่วายที่ต้องเจอทางตันที่มันใช้ไม่ได้ เพราะไม่ใช่ทุกงานจะเป็น js, html มันยังมี PHP และ framework อื่นๆ ด้วย จึงต้องหาวิธีอื่นเพื่อมาจัดการ 

บทความที่เกี่ยวข้องกับ yarn

yarn install เพื่อให้ได้ขนาด node_module ที่เล็กลง

สิ่งที่เราต้องมีคือ package.json หรือใช้ตัวอย่างนี้ก็ได้ครับ

สร้าง folder เปล่าๆ ขึ้นมาทดสอบ สร้างไฟล์ package.json เตรียมไว้ จากนั้นลอง install ด้วยคำสั่ง yarn install หรือ yarn เฉยๆ ก็ได้

ได้ข้อมูล 14,648 Files, 2,323 Folders ขนาดรวม 151MB

เราจะมาลดสิ่งที่ไม่จำเป็นออกด้วยโดยใช้คำสั่ง

จะมีไฟล์ .yarnclean ถูกสร้างขึ้นมา โดยข้างในก็จะมีค่ามาตรฐานตามนี้ ไฟล์นี้เป็น config ของ autoclean ที่เราสามารถเพิ่มหรือลบเงื่อนไขได้เอง (ตรงนี้จะช่วยเรา save พื้นที่ลงได้เยอะ)

จากนั้นสั่ง autoclean ให้ทำงาน ตาม config ตามคำสั่งนี้ ใส่ --force กันเหนียว

ไฟล์ถูกลบไป 13,253 files และลดพื้นที่ไป 63.02 MB

เปรียบเทียบของเดิม

14,648 Files, 2,323 Folders ขนาดรวม 151MB
3,373 Files, 345 Folders ขนาดรวม 88MB

ทีนี้ก็ลองทดสอบโดยลบทุกอย่างออกให้เหลือแค่ 2 ไฟล์นี้ .yarnclean และ package.json เพื่อทดสอบการติดตั้ง package ใหม่ แบบเบาๆ

เมื่อเราติดตั้ง package ใหม่ จะมี task ที่ 5/5 เพิ่มเข้ามา เนื่องจาก yarn พบไฟล์ .yarnclean มันจึงดำเนินการลบสิ่งที่เราไม่ต้องการออกไปด้วย ทุกครั้งที่มีการ install

สรุป

อย่างน้อยก็ช่วยลดขนาดจอง package ไปได้พอสมควร ถึงแม้มันจะไม่สามารถโหลดเฉพาะที่ใช้งานมาได้ก็ตาม แต่ก็ยังดีกว่าทำอะไรไม่ได้เลย ทั้งนี้ผมลองใช้ –production แล้ว มันก็ไม่ใช่อย่างที่ต้องการ ผมต้องการแค่ /dist หรือ .css .js ที่ใช้งานจริงๆเท่านั้น ส่วนที่ไม่ใช้ หรือ ที่อยู่ใน devDependencies มันไม่จำเป็น เพราะพอถึงเวลา upgrade สิ่งเหล่านี้มันก็ต้องถูกทับไปอยู่ดี