NPM / Bower / Composer - ความแตกต่าง?


102

คนที่สามารถอธิบายให้ฉันความแตกต่างระหว่างNPM, และBowerComposer

พวกเขาเป็นผู้จัดการแพ็คเกจทั้งหมด - ถูกต้องหรือไม่?

แต่แต่ละคนควรใช้เมื่อไหร่?

นอกจากนี้ดูเหมือนว่าแต่ละไฟล์จะมีไฟล์ json ที่มาพร้อมกับมันสิ่งนี้เก็บแพ็คเกจทั้งหมดที่คุณต้องการเพื่อให้สามารถติดตั้งด้วยบรรทัด cmd หรือไม่? ทำไมคุณถึงต้องการไฟล์นี้?

คำตอบ:


192

npmเป็นตัวจัดการแพ็คเกจ nodejs ดังนั้นจึงกำหนดเป้าหมายสภาพแวดล้อม nodejs ซึ่งโดยปกติหมายถึงโปรเจ็กต์ nodejs ฝั่งเซิร์ฟเวอร์หรือโปรเจ็กต์บรรทัดคำสั่ง (ตัว bower คือแพ็กเกจ npm) หากคุณจะทำอะไรกับ nodejs คุณจะต้องใช้ npm

bowerเป็นผู้จัดการแพ็คเกจที่มุ่งเป้าไปที่โครงการเว็บ (ส่วนหน้า) คุณต้องใช้ npm และ nodejs เพื่อติดตั้ง bower และเรียกใช้งานแม้ว่าแพ็คเกจ bower ไม่ได้มีไว้สำหรับ nodejs โดยเฉพาะ แต่เป็นสำหรับสภาพแวดล้อม "เบราว์เซอร์"

composerเป็นตัวจัดการการพึ่งพาที่กำหนดเป้าหมายโครงการ php หากคุณกำลังทำอะไรบางอย่างด้วย symfony (หรือ php เก่า ๆ ธรรมดา) นี่น่าจะเป็นวิธีที่จะไป

สรุปได้:

  • ทำโหนด? คุณทำ npm
  • ทำ php? ลองแต่งเพลง
  • front-end javascript? ลอง bower

และใช่ไฟล์ "json" อธิบายข้อมูลแพ็คเกจพื้นฐานและการอ้างอิง และใช่พวกเขาจำเป็น

แล้ว READMEs ล่ะ? :-)

[อัปเดตสี่ปีต่อมา]

  • bowerเลิกใช้งานแล้วและไม่ควรใช้กับโครงการใหม่อีกต่อไป ในระดับใหญ่มันถูกย่อยในการจัดการการพึ่งพาโหนด (จากเว็บไซต์ของพวกเขา: "ในขณะที่ดูแล Bower เราขอแนะนำให้ใช้ Yarn และ Webpack หรือ Parcel สำหรับโครงการส่วนหน้า")
  • yarnออกมาจากไม้ที่ดีกว่าnpm(แก้ไขnpmข้อบกพร่องหลายประการ) และนี่คือสิ่งที่คุณควรใช้ในตอนนี้เนื่องจากเป็นมาตรฐานใหม่โดยพฤตินัยหากคุณกำลังทำการพัฒนาส่วนหน้าหรือโหนด มันกินเหมือนกับpackage.jsonnpm และเข้ากันได้กับมันเกือบทั้งหมด
  • ฉันจะไม่ใช้composerณ จุดนี้ (เพราะฉันไม่ได้ใช้php) แม้ว่ามันจะยังคงมีชีวิตและเป็นที่นิยม

6
แอปพลิเคชัน php + frontent เป็นอย่างไร ตัวเลือกที่ดีที่สุดคืออะไร?
sompylasar

14
ขึ้นอยู่กับตำแหน่งที่คุณวาดเส้น MVC ของคุณอยู่ใน js (และ php ของคุณลดลงเป็น WS) หรือไม่? จากนั้นอาจใช้ bower MVC ของคุณเป็น php (พูดว่า symfony) และคุณมี js จำนวนมากที่เชื่อมต่อกับมุมมองฝั่งเซิร์ฟเวอร์ของคุณหรือไม่? นักแต่งเพลงน่าจะเป็นตัวเลือกที่ดีที่สุดของคุณ
Mangled Deutz

21
ส่วนที่น่ารำคาญและต่อต้านที่สุดคือเมื่อคุณทำงานในห้องสมุดที่บางแห่งใช้เฉพาะ bower บางคนใช้เฉพาะนักแต่งเพลงและคนอื่น ๆ ใช้เฉพาะ npm จะเป็นการดีที่จะหาตัวจัดการแพ็คเกจเดียวที่มีคำสั่งเดียวจะจัดการกับตัวจัดการแพ็คเกจเหล่านี้ทั้งหมด ควรเรียกว่า Inception
Angel S. Moreno

29
ฉันคิดว่า @ AngelS Moreno พูดถูก มีการให้ที่ 4 มากเกินไป :)
Eric

1
@ AngelS Moreno คุณพูดถูกและฉันจะไปไกลกว่าแค่หยุดที่ตัวติดตั้งและผู้จัดการการพึ่งพา ทุกอย่างมีมากเกินไป มีไลบรารี JS ที่ทำแบบเดียวกันมากเกินไป PHP Frameworks มากเกินไปเป็นต้น หากผู้คนสามารถทำงานร่วมกันในสิ่งหนึ่งสิ่งนั้นจะเปลี่ยนชีวิตให้กับพวกเราหลายคน
JG Estiot
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.