Untuk apa field “modul” package.json?

111

Saya telah melihat beberapa paket npm ( vue misalnya ) memiliki pkg.modulebidang di package.json mereka. Apakah ini "module"properti resmi npm atau semacam konvensi? Apakah ada dokumentasi untuk ini di suatu tempat? Untuk apa ini? jalan berikutnya? Jalur modul tidak dibundel?

ryanve
sumber
2
konvensi untuk modul ECMAScript - berikut adalah bacaan yang bagus tentang pendekatan berbeda untuk mengidentifikasi ESM: hackernoon.com/…
hackerrdave

Jawaban:

118

Apakah ini "module"properti resmi npm atau semacam konvensi?

Ini adalah proposal , tetapi kemungkinan akan didukung karena penggunaan de facto.

Apakah ada dokumentasi untuk ini di suatu tempat?

Faktanya, ada, dan itu dapat ditemukan di sini dan kemudian dihapus di sini .

Untuk apa ini?

Interoperabilitas Modul ES6 di Node. Diskusi tambahan dapat ditemukan di sini dan di sini . Dan inilah postingan blog dari Rich Harris yang membicarakan lebih banyak tentang itu.

Josh Habdas
sumber
1
Apakah WebPack memiliki dokumentasi tentang ini di suatu tempat, atau hanya Rollup?
tech4him
1
Sepertinya mereka telah menambahkannya di sini: webpack.js.org/guides/author-libraries/#final-steps
tech4him
43

Ini digunakan oleh alat bundler untuk deteksi ESM (ECMAScript Module). The dokumentasi Rollup mengatakan cukup baik:

Jika package.jsonfile Anda juga memiliki modulekolom, alat yang mendukung ES6 seperti Rollup dan webpack 2 akan mengimpor versi modul ES6 secara langsung.

Artikel di Rollup 1.0 ini mengatakannya dengan cara lain:

The mainlapangan memastikan bahwa pengguna Node menggunakan requireakan disajikan versi UMD. The modulelapangan bukan merupakan fitur NPM resmi, tetapi konvensi umum di antara bundlers untuk menunjuk cara mengimpor versi ESM dari perpustakaan kami.

Diskusi lebih lanjut pkg.moduleada di Rollup Github Wiki dan webpack Docs .

Jack Steam
sumber
1
Haruskah mainversi perpustakaan UMD yang diperkecil? Atau haruskah itu menjadi yang tidak diminimalkan? Tentang apa module? Saya kira modul itu tidak boleh dikecilkan karena pengguna akan menggunakan bundlernya (Webpack, Parcel, dll ...) dan dengan menggunakan file sumber dengan modul ES6 ekspor bundler dapat menikmati gemetar pohon, benar?
tonix