Pertanyaan Haruskah saya. Mengembalikan tes saya?


Apa sebenarnya yang harus saya masukkan .npmignore?

Tes? Barang seperti .travis.yml, .jshintrc? Apa saja yang tidak diperlukan saat menjalankan modul (kecuali readme)?

Saya tidak dapat menemukan panduan tentang hal ini.


76
2017-08-04 18:05


asal


Jawaban:


Seperti yang mungkin Anda temukan, NPM tidak benar-benar menyatakan secara khusus apa yang harus masuk ke sana, melainkan mereka memiliki daftar file yang diabaikan-oleh-default. Banyak orang bahkan tidak menggunakannya sebagai segalanya di Anda .gitignore diabaikan di npm secara default jika .npmignore tidak ada. Selain itu, banyak file yang sudah diabaikan secara default terlepas dari pengaturan dan beberapa file selalu dikecualikan dari diabaikan, sebagaimana diuraikan dalam tautan di atas.

Tidak banyak yang resmi tentang apa yang harus selalu ada karena pada dasarnya adalah bagian dari .gitignore, tetapi dari apa yang saya kumpulkan dari menggunakan simpul selama 5 tahun, inilah yang saya temukan.

Catatan: Oleh produksi Maksud saya kapan saja dimana modul Anda digunakan oleh seseorang dan tidak mengembangkannya pada modul itu sendiri.


Pra-rilis sumber yang dikompilasi silang

Pro: Jika Anda menggunakan bahasa yang cross-compile ke dalam JavaScript, Anda dapat melakukan precompile sebelum rilis dan tidak menyertakannya .coffee file dalam paket Anda tetapi tetap melacaknya di repositori git Anda.

Buat file sisa

Pro: Orang-orang menggunakan hal-hal seperti node-gyp mungkin memiliki file objek yang dihasilkan selama membangun yang tidak pernah harus masuk ke paket. Cons: Ini harus selalu masuk ke dalam .gitignore bagaimanapun. Anda harus menempatkan ini di sini jika Anda menggunakan .npmignore file sudah seperti mengesampingkan .gitignore dari sudut pandang npm.

Tes

Pro: Lebih sedikit bagasi dalam kode produksi Anda. Cons: Anda tidak dapat menjalankan pengujian pada lingkungan hidup dalam peluang tipis ada kegagalan spesifik sistem, seperti versi yang sudah tidak berjalan dari node yang berjalan yang menyebabkan pengujian gagal.

Pengaturan integrasi berkelanjutan / file Meta

Pro: Sekali lagi, bagasi lebih sedikit. Hal-hal seperti .travis.yml tidak diperlukan untuk menggunakan, menguji, atau melihat kode.

Dokumen dan contoh kode non-readme

Pro: Lebih sedikit bagasi. Beberapa orang ada di sekolah pemikiran di mana jika Anda tidak dapat mengungkapkan setidaknya fungsi minimum yang layak di Readme Anda, modul Anda terlalu besar. Cons: Orang tidak dapat melihat dokumentasi lengkap dan contoh kode pada sistem file mereka sendiri. Mereka harus mengunjungi repositori (yang juga membutuhkan koneksi internet).

Github-pages objects

Pro: Anda tentu tidak perlu membuang rilis Anda CNAME file atau placeholder index.htmlJika Anda menggunakan modul Anda berfungsi ganda sebagai gh-pages repositori juga.

bower.json dan teman-teman

Pro: Jika Anda memutuskan untuk membangun dependensi Anda sebelum rilis, Anda tidak perlu pengguna akhir untuk menginstal bower kemudian menginstal lebih banyak hal dengan itu. Saya akan, secara pribadi, menyimpan barang-barang itu dalam paket. Ketika saya melakukan npm installSaya hanya mengandalkan npm dan tidak ada sumber eksternal lain.


Pada dasarnya, Anda harus menggunakannya jika ada sesuatu yang ingin Anda keluarkan dari paket npm Anda tetapi tidak keluar dari repositori npm Anda. Ini bukan daftar panjang item, tetapi npm lebih suka membangun fungsi daripada orang terjebak dengan objek yang tidak relevan dalam paket mereka.


74
2017-08-04 19:13



saya setuju dengan Jawaban singkat dan sintetik lante dan Jawaban besar SamT:

  • Anda tidak harus memasukkan tes Anda dalam paket Anda.
  • Paket Anda seharusnya hanya berisi file runtime produksi.
  • Itu akan membuat paket Anda lebih lugas dan lebih cepat untuk di-load.

Kontribusi saya untuk jawaban-jawaban itu:

.npmignore adalah daftar hitam cara untuk mencapai pemilihan file paket. Tetapi dengan cara yang lebih praktis, Anda bisa daftar putih file yang perlu Anda sertakan dalam paket Anda menggunakan bidang file di paket Anda.json:

{
  "files": [
    "lib/",
    "index.js"
  ]
}

Saya pikir itu lebih sederhana, bukti masa depan dan semantik yang lebih baik;)


46
2018-05-24 18:56



Hanya untuk mengklarifikasi, kapan pun seseorang melakukannya npm install your-library, npm akan mengunduh semua file sumber yang termasuk repositori, kecuali file yang Anda sertakan dalam Anda .npmignore.

Ketahuilah bahwa orang-orang yang memasang pustaka Anda hanya perlu menjalankan pustaka Anda, hal lain tidak akan diperlukan.

Misalnya, ketika seseorang memasang pustaka, mungkin dia tidak peduli dengan Anda .travis.yml atau Anda .jshintrc file, atau bahkan beberapa gambar, file Grunt, dokumentasi, dll.

.npmignore dapat membiarkan paket npm Anda memiliki lebih sedikit file, dan lebih cepat untuk diunduh


15
2017-08-04 19:12



Jangan termasuk tes Anda. Seringkali tes seperti 5x ukuran basis kode yang sebenarnya. Selama tes Anda adalah Github, dll, itu sudah cukup bagus.

Tapi yang benar-benar harus Anda lakukan adalah menguji paket NPM Anda dalam format yang dipublikasikan. Buat beberapa tes asap yang berada di basis kode yang sebenarnya, tetapi bukan bagian dari rangkaian uji.

Anda dapat membaca tentang menguji paket Anda setelah melakukan tarball, di sini: https://github.com/ORESoftware/r2g

Bagaimana cara menguji hasil `npm publish`, tanpa benar-benar mempublikasikan ke NPM?


0
2018-06-27 22:59