Biarkan npm memilih registri mengikut skop pakej, bukan VPN
Entri skop menghantar pakej syarikat ke registri peribadi dan membiarkan semua yang lain awam. Penghalaan, kelayakan dan keutamaan ialah tiga keputusan lagi.
Menyambung VPN tidak sepatutnya bermakna menyunting tetapan registri npm dua kali sehari. Entri skop dalam fail konfigurasi peringkat projek boleh menghantar pakej syarikat ke satu registri dan semua yang lain ke registri awam, tanpa pertukaran dan tanpa penggantian yang tertinggal pada petang Jumaat. Masalahnya, ini hanya menyelesaikan penamaan; penghalaan, kelayakan dan keutamaan konfigurasi ialah tiga perkara berasingan yang masing-masing gagal dengan caranya sendiri.
Dua nama, dua destinasi
Nama pakej npm sama ada mempunyai skop atau tidak. Nama berskop bermula dengan tanda @ dan pengecam skop, dan pengecam itulah yang boleh dipetakan oleh konfigurasi. Tiada perkara lain pada pakej yang penting untuk pemetaan. Registri tidak pernah melihat permintaan berdasarkan sama ada pakej itu dalaman atau awam; ia hanya melihat nama.
Jadi fail di bawah menyatakan dua niat dalam tiga baris: pakej awam pergi ke registri awam, dan pakej di bawah skop syarikat pergi ke registri syarikat dengan token untuk hos itu.
registry=https://registry.npmjs.org/
@acme:registry=https://packages.corp.example/
//packages.corp.example/:_authToken=${NPM_TOKEN}Gantikan skop, hos dan nama pemboleh ubah dengan apa yang sebenarnya disediakan organisasi. Struktur yang penting, bukan nilai contoh. Dua baris konfigurasi membawa seluruh dasar, sebab itu ia wajar difahami dan bukan disalin.
Simpan pemetaan dan rangkaian dalam petak berasingan di dalam fikiran anda. Entri skop tidak boleh menjadikan hos yang tidak dapat dicapai boleh dicapai, dan terowong yang berfungsi tidak boleh memberitahu npm registri mana sesuatu pakej milik.
Tulis fail dalam susunan yang betul
Letakkan fail projek dahulu dalam penaakulan anda walaupun npm membaca beberapa fail. .npmrc dalam direktori projek ialah fail yang diwarisi rakan sekerja anda melalui repositori, jadi ia harus menyatakan dasar bersama dan bukan token peribadi anda. Fail itu juga yang akan dibaca oleh penyemak. Kekalkan ia cukup kecil untuk disemak sekali pandang.
Biarkan baris registry lalai menunjuk ke registri awam melainkan organisasi memutuskan sebaliknya. Mengeluarkannya menjadikan mesin bergantung pada apa yang dikatakan fail peringkat pengguna, dan itulah jenis kebergantungan tersirat yang menghasilkan keputusan berbeza pada dua komputer riba.
Baris skop bukan kad liar. Nama di luar skop terus menggunakan nilai lalai, dan itulah tingkah laku yang anda mahu untuk setiap kebergantungan yang tidak anda tulis sendiri.
Semak apa fail itu diselesaikan sebelum anda komit, dengan menggunakan nama pakej sekali guna dan bukan pemasangan sebenar, supaya kesilapan tidak menelan apa-apa kos.
Kelayakan milik hos, bukan projek
Entri pengesahan dikunci pada hos registri dan, di mana registri memerlukannya, pada laluan. Sebab itulah baris token bermula dengan garis miring berganda dan hos dan bukan skop. Sebaik sahaja anda melihat hos pada kedudukan itu, baki baris berhenti kelihatan seperti tanda baca sewenang-wenangnya. Ia ialah alamat, dan token itu terikat padanya.
Menggunakan pemboleh ubah persekitaran menyimpan token literal di luar fail dalam repositori. Ia tidak menjadikan token tidak kelihatan di mana-mana; ia masih muncul dalam persekitaran proses, dan arahan yang mencetak konfigurasi boleh mendedahkannya.
Sediakan pemboleh ubah melalui mekanisme kelayakan tempatan atau CI yang diluluskan organisasi, dan jangan sekali-kali tampal token sebenar ke dalam contoh yang mungkin disalin ke dalam dokumentasi.
Jika dua registri terlibat, setiap satu mendapat entrinya sendiri. Satu tetapan token tanpa kelayakan paling baik bersifat samar-samar dan paling buruk dihantar ke hos yang salah.
Apabila registri yang salah menang
Konfigurasi berlapis, dan nilai yang berkuat kuasa tidak semestinya nilai dalam fail yang baru anda sunting. Tetapan projek, tetapan pengguna, tetapan global dan pemboleh ubah persekitaran semuanya terlibat. Pelapisan itulah sebabnya pembetulan berfungsi pada mesin anda tetapi tidak dalam kontena rakan sekerja. Ia juga sebabnya nilai berkesan wajar dicetak sebelum anda berbahas tentangnya.
Pemboleh ubah persekitaran ialah pesalah biasa dalam CI, di mana sesuatu kerja menetapkan registri sekali dan setiap langkah berikutnya mewarisinya. Yang kedua paling biasa ialah fail peringkat pengguna pada mesin pembangun yang mengatasi apa yang dikatakan repositori.
Cetak konfigurasi berkesan dan registri yang diselesaikan untuk satu nama berskop dan satu nama tanpa skop sebelum menyahpepijat apa-apa lagi. Jika kedua-dua jawapan itu seperti yang anda jangkakan, masalahnya ialah rangkaian; jika tidak, masalahnya ialah konfigurasi dan tiada kerja VPN akan membantu.
Senarai semak sebelum komit
Sahkan nama skop sepadan dengan pakej yang benar-benar diterbitkan, registri lalai bersifat eksplisit, dan baris token menamakan hos yang betul. Kesilapan taip dalam skop menghasilkan kegagalan paling pelik sekali, kerana pakej diselesaikan daripada registri awam dan mengembalikan modul orang lain dengan nama yang sama. Semak nama itu sebelum menyahpepijat token.
Sahkan registri peribadi boleh dicapai daripada mesin dalam konteks yang menjalankan pemasangan, bukan hanya daripada pelayar anda. Perbezaan itu penting apabila proksi atau kontena mempunyai penghalaan yang berbeza daripada shell anda.
Kemudian sahkan tingkah laku pada checkout bersih tanpa pakej yang di-cache. Pemasangan baharu ialah satu-satunya ujian yang menunjukkan apa yang akan dialami rakan sekerja baharu.