Cli: [BUG] `npm pack` berhasil diselesaikan meskipun` main` tidak ada dalam paket

Dibuat pada 15 Mei 2020  ·  3Komentar  ·  Sumber: npm/cli

Apa sebabnya

Kami menemukan ini ketika salah satu paket internal perusahaan kami melakukan beberapa pemfaktoran ulang dan memindahkan titik masuk ke tempat lain di repositori tanpa ingat untuk memperbarui main di package.json. Hasil akhirnya adalah npm pack dengan senang hati dibuat dan memungkinkan sebuah paket yang tidak memiliki kesempatan untuk bekerja dengan baik untuk dipublikasikan.

Kapan

Ketika npm pack dan karena itu ketika npm publish dijalankan

Dimana

Bagaimana

Perilaku Saat Ini

npm pack tidak memvalidasi bahwa main ada di tarball yang membuatnya agak mudah untuk membuat dan menerbitkan paket yang tidak dapat digunakan oleh konsumen.

Langkah-langkah untuk Mereproduksi

  • Buat direktori kosong
  • npm init dan lanjutkan membuat segala sesuatu dengan nilai default. Anda akan mendapatkan package.json seperti ini
{
  "name": "npm-repro",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}
  • Jalankan npm pack di direktori ini, dan amati bahwa tarball dibuat dengan senang hati
npm notice
npm notice 📦  [email protected]
npm notice === Tarball Contents ===
npm notice 205B package.json
npm notice === Tarball Details ===
npm notice name:          npm-repro
npm notice version:       1.0.0
npm notice filename:      npm-repro-1.0.0.tgz
npm notice package size:  241 B
npm notice unpacked size: 205 B
npm notice shasum:        ca39bc17447e27ef2fd0dea656e0e6b473f310d7
npm notice integrity:     sha512-p8tZD8W438r7t[...]7Oo0YMcAoNPzQ==
npm notice total files:   1
npm notice
npm-repro-1.0.0.tgz

Tidak ada index.js , jadi jika paket ini pernah dicoba untuk digunakan, itu tidak akan berhasil.

Perilaku yang Diharapkan

  • npm pack akan keluar dengan kode keluar bukan nol, yang juga akan menyebabkan npm publish gagal dan mencegah paket yang tarbal-nya tidak berisi main dari package.json diterbitkan ke registri.

WHO

Perusahaan kami mengalami masalah ini saat mencoba memublikasikan ke registri internal kami.

Referensi

  • t / a
Bug

Komentar yang paling membantu

Kedengarannya masuk akal. Untuk alasan apa pun perusahaan saya menggunakan npm pack to sebagai tes untuk melihat apakah publikasi akan berhasil diselesaikan atau tidak. npm publish --dry-run mungkin adalah cek yang lebih baik.

Semua 3 komentar

Saya tidak yakin apakah ini lebih cocok sebagai bug untuk npm-packlist . Saya tidak sepenuhnya yakin bagaimana organisasi npm ingin memisahkan masalah di antara keduanya. Yaitu harus npm-packlist hanya secara membabi buta mengembalikan daftar file yang harus mencoba untuk dimasukkan tanpa melakukan validasi apa pun dan membiarkan validasi urutan yang lebih tinggi berlangsung di paket apa pun yang ingin menggunakan fungsionalitas npm-packlist ?

Ini bukan pekerjaan npm-packlist, ini pekerjaan npm publish jika ada.

Kedengarannya masuk akal. Untuk alasan apa pun perusahaan saya menggunakan npm pack to sebagai tes untuk melihat apakah publikasi akan berhasil diselesaikan atau tidak. npm publish --dry-run mungkin adalah cek yang lebih baik.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat