ควรใส่อะไรกันแน่.npmignore
?
การทดสอบ? สิ่งที่ชอบ.travis.yml
, .jshintrc
? มีอะไรที่ไม่จำเป็นเมื่อเรียกใช้โมดูล (ยกเว้น readme)?
ฉันไม่พบคำแนะนำเกี่ยวกับเรื่องนี้
ควรใส่อะไรกันแน่.npmignore
?
การทดสอบ? สิ่งที่ชอบ.travis.yml
, .jshintrc
? มีอะไรที่ไม่จำเป็นเมื่อเรียกใช้โมดูล (ยกเว้น readme)?
ฉันไม่พบคำแนะนำเกี่ยวกับเรื่องนี้
.npmignore
หรือ"files"
( docs.npmjs.com/files/package.json#files )
คำตอบ:
ที่คุณอาจพบ NPM ไม่ได้โดดรัฐโดยเฉพาะสิ่งที่ควรจะไปในที่นั่นค่อนข้างจะมีรายชื่อของไฟล์ละเว้นโดยค่าเริ่มต้น หลายคนไม่ได้ใช้มันเนื่องจากทุกอย่างในของคุณ.gitignore
ถูกละเว้นnpm
โดยค่าเริ่มต้นถ้า.npmignore
ไม่มีอยู่ นอกจากนี้ไฟล์จำนวนมากจะถูกละเว้นโดยค่าเริ่มต้นโดยไม่คำนึงถึงการตั้งค่าและไฟล์บางไฟล์จะถูกละเว้นจากการถูกเพิกเฉยตามที่ระบุไว้ในลิงก์ด้านบน
ไม่มีความเป็นทางการมากนักเกี่ยวกับสิ่งที่ควรจะมีอยู่เสมอเพราะโดยพื้นฐานแล้วมันเป็นเพียงส่วนย่อย.gitignore
แต่จากสิ่งที่ฉันรวบรวมจากการใช้โหนดเป็นเวลา 5 ปีนี่คือสิ่งที่ฉันคิดขึ้นมา
หมายเหตุ: จากการผลิตฉันหมายถึงทุกครั้งที่มีคนใช้โมดูลของคุณและไม่ต้องพัฒนาบนโมดูลเอง
.coffee
ไฟล์ในแพ็กเกจของคุณ แต่ให้ติดตามในที่เก็บ git ของคุณnode-gyp
อาจมีไฟล์ออบเจ็กต์ที่สร้างขึ้นในระหว่างการสร้างที่ไม่ควรเข้าไปในแพ็คเกจ.gitignore
อยู่เสมอ คุณต้องวางสิ่งเหล่านี้ไว้ในที่นี้หากคุณใช้.npmignore
ไฟล์อยู่แล้วเนื่องจากมันถูกแทนที่.gitignore
จากมุมมองของ npm.travis.yml
ไม่จำเป็นสำหรับการใช้งานการทดสอบหรือการดูรหัสCNAME
ไฟล์หรือตัวยึดตำแหน่งindex.html
หากคุณใช้โมดูลของคุณทำหน้าที่สองหน้าที่เป็นที่gh-pages
เก็บเช่นกันnpm install
ฉันควรพึ่งพา npm เท่านั้นและไม่มีแหล่งข้อมูลภายนอกอื่น ๆโดยพื้นฐานแล้วคุณควรใช้มันหากมีบางสิ่งที่คุณต้องการเก็บไว้จากแพ็คเกจ npm ของคุณ แต่ไม่ได้อยู่ในที่เก็บ npm ของคุณ ไม่ใช่รายการที่ยาว แต่ npm ต้องการสร้างฟังก์ชันการทำงานมากกว่าที่จะมีคนติดอยู่กับวัตถุที่ไม่เกี่ยวข้องในแพ็คเกจ
ฉันเห็นด้วยกับคำตอบสั้น ๆ และไวยากรณ์ของ Lanteและคำตอบที่ยิ่งใหญ่ของ SamT :
การมีส่วนร่วมของฉันกับคำตอบเหล่านั้น:
.npmignoreเป็นวิธีบัญชีดำในการเลือกไฟล์แพ็คเกจ แต่ในทางปฏิบัติคุณสามารถอนุญาตพิเศษไฟล์ที่คุณต้องรวมไว้ในแพ็คเกจของคุณโดยใช้ฟิลด์ไฟล์ใน package.json ของคุณ:
{
"files": [
"lib/",
"index.js"
]
}
ฉันคิดว่ามันง่ายกว่าพิสูจน์ได้ในอนาคตและมีความหมายที่ดีกว่า;)
npm test
ในnode_modulesทั้งหมดสามารถให้คำแนะนำแก่คุณได้หากมีบางอย่างทำงานแตกต่างกันในบางสภาพแวดล้อม
.npmignore
ดังนั้นเราจึงสามารถละเว้นแฟ้มการทดสอบโดยไม่ต้องสร้าง files: ["lib", "!lib/**/*.test.js"]
. :)
เพียงชี้แจงทุกเวลามีคนไม่npm install your-library
, NPMจะดาวน์โหลดไฟล์ที่มาทั้งหมดที่ซื้อคืนรวมถึงการยกเว้นไฟล์ที่คุณรวมอยู่ในของคุณ.npmignore
จะดาวน์โหลดไฟล์ที่มาทั้งหมดที่ซื้อคืนรวมถึงการยกเว้นไฟล์ที่คุณรวมอยู่ในของคุณ
รู้ว่าคนที่ติดตั้งไลบรารีของคุณต้องการเพียงแค่ไลบรารีของคุณทำงานเท่านั้นสิ่งอื่น ๆ ก็ไม่จำเป็น
ตัวอย่างเช่นเมื่อมีคนติดตั้งไลบรารีอาจเป็นไปได้ว่าเขา / เธอไม่สนใจ ไฟล์.travis.yml
ของคุณหรือของคุณ.jshintrc
หรือแม้แต่รูปภาพบางไฟล์ Grunt เอกสารประกอบ ฯลฯ
.npmignore
อาจทำให้แพ็กเกจ npm ของคุณมีไฟล์น้อยลงและดาวน์โหลดได้เร็วขึ้น
.npmignore
ไม่ส่งผลโดยตรงต่อสิ่งที่ดาวน์โหลดแต่จะส่งผลต่อสิ่งที่เข้าสู่แพ็กเกจของคุณเมื่อคุณเผยแพร่และอัปโหลดnpm สิ่งนี้จะสร้างไฟล์ขนาดเล็กเพื่อดาวน์โหลดโดยทางอ้อม
อย่ารวมการทดสอบของคุณ บ่อยครั้งการทดสอบมีขนาดเท่ากับ 5x ของโค้ดเบสจริง ตราบใดที่การทดสอบของคุณอยู่ใน Github ฯลฯ นั่นก็ดีพอแล้ว
แต่สิ่งที่คุณควรทำอย่างยิ่งคือทดสอบแพ็คเกจ NPM ของคุณในรูปแบบที่เผยแพร่ในรูปแบบของการตีพิมพ์สร้างการทดสอบควันบางส่วนที่อยู่ในโค้ดเบสจริง แต่ไม่ได้เป็นส่วนหนึ่งของชุดทดสอบ
คุณสามารถอ่านเกี่ยวกับการทดสอบแพ็กเกจของคุณหลังจากเล่น Tarball ได้ที่นี่: https://github.com/ORESoftware/r2g
จะทดสอบผลลัพธ์ "npm เผยแพร่" โดยไม่เผยแพร่ไปยัง NPM ได้อย่างไร
npm install yourlibrary
มาเช่น.travis.yml
และ.jshintrc