Nitipat Lowichakornthikun
I GEAR GEEK
Published in
2 min readAug 15, 2018

--

มาทำความรู้จักกับเจ้า npx กันดีกว่า

ถ้าเราลองเข้าไปที่ create-react-app

สิ่งที่จะได้พบคือ… มันมีวิธีการเรียกใช้งาน create-react-app อีกแบบนึง ขึ้นมาครับ ซึ่งมันไม่ใช่การ npm install ตัว create-react-app แล้วน่ะครับ

ต่อไปนี้เราจะได้พบกับ npx แล้ววว…

ถ้าตามรูปด้านบน npx มันจะมาพร้อมกันกับ npm version 5.2 ขึ้นไปครับ (ออกมาจะปีกว่าแล้วนา…) แต่หลายคนก็ยังไม่รู้ว่ามีเครื่องมือเทพๆ นี้ติดมาให้ใช้แล้ว

ดังนั้นก่อนจะเริ่มเล่น npx ตรวจสอบความพร้อมก่อนว่า npm เรา version ไหนอยู่

npm -v

ทีนี้วกกลับมาที่ npx ครับ ถ้าจะสรุปแบบง่าย ๆ เลยน่ะครับ เจ้า npx (execute npm package binaries) ก็คือเครื่องมือสำหรับช่วยให้เราสามารถรัน package ของ node ขึ้นมาได้ง่ายๆ ขึ้น และดูหล่อมากยิ่งขึ้นนั่นเอง

เรามาดูกันที่ความสามารถของ npx กัน

  1. มันใช้รันคำสั่งที่อยู่ใน node_modules/.bin ของโปรเจกต์เราเองได้ จากเมื่อก่อนถ้าสมมติว่าเราติดตั้ง nodemon แบบ local เวลาเรียกใช้งานนอก task runner ที่ระบุใน package.json นั่นจะต้องสั่งคำสั่งว่า
    ./node_modules/.bin/nodemon
    ความเทพของ npx อยู่ตรงนี้ครับ… มันสามารถสั่ง
    npx nodemon
    ได้เลย บ๊ะ! เจ๋งป่ะล่ะ

2. จากคำสั่งด้านบนในข้อ 1. นั้น ถ้า nodemon ไม่อยู่ใน local ล่ะ หรือ เรียกง่ายๆ ว่าเรายังไม่ได้ลง package นี้ล่ะ?
เมื่อเราสั่งรัน npx nodemon
เจ้า npx นี้ก็จะไปดึงมาจาก registry ให้ แล้วติดตั้งใน folder temp จากนั้นมันจะรันเจ้า nodemon มาให้เรา ว้าวยอดไปเลย เราไม่ต้องสั่ง install ก่อนด้วย เหมาะมากๆ กับ package ที่เราน๊านนานใช้ที และ อยากได้ของใหม่สุดเสมอ อาทิ คำสั่ง create-react-app ที่เราใช้มันไม่บ่อย ก็ไม่จำเป็นที่ต้องติดตั้งลงในเครื่องอีกต่อไป

ความสนุกเริ่มต้นเมื่อเราสามารถรัน node package ได้ด้วยคำสั่งเดียวเมื่อมีคนเขียน package เจ๋งๆ ขึ้นมาอาทิ node ที่คุณสามารถเปลี่ยน node version ได้ด้วย command เดียว และ สามารถสั่งทำเรื่องอื่นๆ ต่อที่คุณต้องการได้

อีกทั้งคุณยังสามารถสั่งรัน command จาก gist.github.com ได้ด้วยคำสั่ง npx เพื่อทำให้เหมือน shell ไฟล์ ลองไปดูที่ไฟล์นี้ จากนั้นทดลองรันคำสั่งด้านล่าง

npx https://gist.github.com/zkat/4bc19503fe9e9309e2bfaa2c58074d32

สำหรับผมก็เอามาใช้ตอนสั่งรันพวก package ที่ไม่ได้ใช้บ่อย ๆ เพื่อไม่ให้เปลือง disk ของเรา กับ นำมาใช้ในขั้นตอนการใส่ command ของ build pipeline ในระบบ CI ของเราครับ

แนะนำให้อ่านต่อบทความเต็ม ๆ

ซึ่งคุณจะได้พบกับการทำ shell auto fallback ที่เราไม่ต้องมานั่งพิมพ์ npx ใน terminal อีกต่อไป เพียงแค่เราพิมพ์ชื่อ package ที่เราอยากจะใช้งาน มันก็จะไปจัดให้ว่ามีในเครื่องไหม ถ้ามีก็จะรันให้เลย แต่ถ้ายังไม่ได้ลงไว้ก็จะไปโหลดมาติดตั้งและรันให้ทีเดียว

และ ที่นี่ ที่รวมเอา package เจ๋งๆ ที่ใช้กับ npx แล้วหล่อ เผื่อเป็นไอเดียทำเครื่องมือง่ายๆ ใช้เอง

สุดท้ายนี้ I GEAR GEEK เราพัฒนาซอฟแวร์บน JavaScript stack ครับ อาทิ React, Node.js และ React-native เดี๋ยว ไว้บทความหน้าจะมาแชร์เทคนิคการใช้งานที่พวกเราใช้ภายในทีมอีกน่ะครับ

--

--