ฟิลด์ "module" package.json มีไว้ทำอะไร


112

ฉันเคยเห็นแพ็คเกจ npm ( ตัวอย่างเช่น vue ) มีpkg.moduleฟิลด์ใน package.json เป็น"module"สถานที่ให้บริการอย่างเป็นทางการหรือ NPM นี้คือการประชุมของบางชนิด? มีเอกสารสำหรับเรื่องนี้หรือไม่? มีไว้เพื่ออะไร? เส้นทาง esnext? เส้นทางโมดูลที่ไม่ได้รวมกลุ่ม?


2
อนุสัญญาสำหรับโมดูล ECMAScript - อ่านวิธีต่างๆในการระบุ ESM ของ: hackernoon.com/…
hackerrdave

คำตอบ:


121

เป็น "module"สถานที่ให้บริการอย่างเป็นทางการหรือ NPM นี้คือการประชุมของบางชนิด?

เป็นข้อเสนอแต่น่าจะได้รับการสนับสนุนเนื่องจากการใช้งานโดยพฤตินัย

มีเอกสารสำหรับเรื่องนี้หรือไม่?

นอกจากนี้ในความเป็นจริงและมันสามารถพบได้ที่นี่และต่อมาเอาออกนี่

มีไว้เพื่ออะไร?

ความสามารถในการทำงานร่วมกันของโมดูล ES6 ในโหนด อภิปรายเพิ่มเติมสามารถพบได้ที่นี่และที่นี่ และนี่คือบล็อกโพสต์จาก Rich Harris ที่พูดถึงเรื่องนี้


1
WebPack มีเอกสารเกี่ยวกับเรื่องนี้อยู่ที่ไหนสักแห่งหรือแค่ Rollup?
tech4him

1
ดูเหมือนว่าพวกเขาได้เพิ่มไว้ที่นี่: webpack.js.org/guides/author-libraries/#final-steps
tech4him

45

ใช้โดยเครื่องมือบันเดิลเลอร์สำหรับการตรวจจับ ESM (ECMAScript Module) เอกสาร Rollupบอกว่ามันสวยดี:

หากpackage.jsonไฟล์ของคุณมีmoduleฟิลด์ด้วยเครื่องมือ ES6-Aware เช่นRollupและwebpack 2จะนำเข้าเวอร์ชันโมดูล ES6โดยตรง

บทความเกี่ยวกับ Rollup 1.0 นี้กล่าวอีกวิธีหนึ่ง:

mainฟิลด์ทำให้แน่ใจว่าผู้ใช้โหนดใช้requireจะเสิร์ฟรุ่น UMD moduleฟิลด์ไม่ได้เป็นคุณลักษณะ NPM อย่างเป็นทางการ แต่การประชุมร่วมกันระหว่าง bundlers เพื่อกำหนดวิธีการที่จะนำเข้ารุ่น ESM ของห้องสมุดของเรา

การอภิปรายต่อไปของการpkg.moduleอยู่บนRollup Github วิกิพีเดียและเอกสาร webpack


1
ควรmainเป็นเวอร์ชันย่อของไลบรารีเวอร์ชัน UMD หรือไม่ หรือควรจะเป็นแบบไม่มีการปิดกั้น? เกี่ยวกับอะไรmodule? ฉันเดาว่าโมดูลไม่ควรถูกย่อขนาดเนื่องจากผู้ใช้จะใช้บันเดิลเลอร์ (Webpack, Parcel, ฯลฯ ... ) และโดยการใช้ซอร์สไฟล์ที่มีการเอ็กซ์พอร์ตโมดูล ES6 บันเดิลเลอร์สามารถเขย่าต้นไม้ได้ถูกต้องหรือไม่
tonix
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.