Corepack adalah skrip Node.js yang tidak bergantung pada runtime yang bertindak sebagai jembatan antara proyek Node.js dan manajer paket yang akan digunakan selama pengembangan. Secara praktis, Corepack memungkinkan Anda menggunakan Yarn, npm, dan pnpm tanpa harus menginstalnya .
Corepack didistribusikan secara default dengan semua versi Node.js terbaru. Jalankan corepack enable
untuk menginstal biner Yarn dan pnpm yang diperlukan di jalur Anda.
Pertama-tama hapus instalasi biner Yarn dan pnpm global Anda (biarkan saja npm). Secara umum, Anda dapat melakukannya dengan menjalankan perintah berikut:
npm uninstall -g benang pnpm# Itu sudah cukup, tetapi jika Anda menginstal Yarn tanpa melalui npm mungkin# akan lebih membosankan - misalnya, Anda mungkin perlu menjalankan `brew uninstall Yarn` juga.
Kemudian instal Corepack:
npm instal -g corepack
Kami mengakui ironi dan overhead dalam menggunakan npm untuk menginstal Corepack, yang setidaknya menjadi alasan mengapa opsi yang lebih disukai adalah menggunakan versi Corepack yang didistribusikan bersama dengan Node.js itu sendiri.
Lihat CONTRIBUTING.md
.
Gunakan saja manajer paket Anda seperti biasanya. Jalankan yarn install
di proyek Yarn, pnpm install
di proyek pnpm, dan npm
di proyek npm. Corepack akan menerima panggilan ini, dan bergantung pada situasinya:
Jika proyek lokal dikonfigurasi untuk manajer paket yang Anda gunakan , Corepack akan mengunduh dan menyimpan versi terbaru yang kompatibel dalam cache.
Jika proyek lokal dikonfigurasi untuk manajer paket yang berbeda , Corepack akan meminta Anda untuk menjalankan perintah lagi menggunakan manajer paket yang tepat - sehingga menghindari kerusakan pada artefak instalasi Anda.
Jika proyek lokal tidak dikonfigurasi untuk manajer paket apa pun , Corepack akan berasumsi bahwa Anda tahu apa yang Anda lakukan, dan akan menggunakan versi manajer paket apa pun yang telah disematkan sebagai "rilis yang dikenal baik". Periksa bagian yang relevan untuk lebih jelasnya.
Tetapkan manajer paket Anda dengan bidang packageManager
di package.json
:
{ "packageManager": "[email protected]+sha224.953c8233f7a92884eee2de69a1b92d1f2ec1655e66d08071ba9a02fa"}
Di sini, yarn
adalah nama manajer paket, yang ditentukan pada versi 3.2.3
, bersama dengan hash SHA-224 versi ini untuk validasi. packageManager@xyz
diperlukan. Hash bersifat opsional tetapi sangat disarankan sebagai praktik keamanan. Nilai yang diizinkan untuk manajer paket adalah yarn
, npm
, dan pnpm
.
Anda juga dapat memberikan URL ke file .js
(yang akan ditafsirkan sebagai modul CommonJS) atau file .tgz
(yang akan ditafsirkan sebagai sebuah paket, dan bidang "bin"
dari package.json
akan digunakan untuk menentukan file mana yang akan digunakan dalam arsip).
{ "packageManager": "yarn@https://registry.npmjs.org/@yarnpkg/cli-dist/-/cli-dist-3.2.3.tgz#sha224.16a0797d1710d1fb7ec40ab5c3801b68370a612a9b66ba117ad9924b"}
Saat menjalankan Corepack dalam proyek yang tidak mencantumkan manajer paket yang didukung, maka secara default akan menggunakan kumpulan Rilisan Baik yang Diketahui.
Jika tidak ada Rilis Baik yang Diketahui untuk manajer paket yang diminta, Corepack mencari registri npm untuk versi terbaru yang tersedia dan menyimpannya dalam cache untuk digunakan di masa mendatang.
Rilisan Baik yang Diketahui dapat diperbarui di seluruh sistem menggunakan corepack install -g
. Ketika Corepack mengunduh versi baru dari manajer paket tertentu pada jalur utama yang sama dengan Rilis Baik yang Diketahui, maka secara otomatis akan diperbarui secara default.
Perintah utilitas dirinci di bagian selanjutnya.
Anda juga dapat menggunakan jaringan saat membuat image container, dalam hal ini Anda cukup menjalankan corepack pack
untuk memastikan bahwa image Anda menyertakan rilis Last Known Good untuk manajer paket yang ditentukan.
Atau Anda menerbitkan proyek Anda ke sistem di mana jaringan tidak tersedia, dalam hal ini Anda akan terlebih dahulu membuat arsip manajer paket dari komputer lokal Anda (menggunakan corepack pack -o
) sebelum menyimpannya di suatu tempat yang dapat diakses oleh penampung Anda (misalnya dalam repositori Anda). Setelah itu tinggal menjalankan corepack install -g --cache-only
untuk mengatur cache.
corepack [@] [... args]
Perintah meta ini menjalankan manajer paket yang ditentukan di folder lokal. Anda dapat menggunakannya untuk memaksa instalasi agar berjalan dengan versi tertentu, yang dapat berguna saat mencari regresi.
Perhatikan bahwa perintah tersebut masih memeriksa apakah proyek lokal dikonfigurasi untuk manajer paket tertentu (yaitu Anda tidak akan dapat menjalankan corepack yarn install
pada proyek yang referensi bidang packageManager
pnpm
).
corepack cache clean
Menghapus direktori cache COREPACK_HOME
lokal.
corepack cache clear
Menghapus direktori cache COREPACK_HOME
lokal.
corepack enable [... name]
Pilihan | Keterangan |
---|---|
--install-directory | Tambahkan shim ke lokasi yang ditentukan |
Perintah ini akan mendeteksi di mana Corepack diinstal dan akan membuat shim di sebelahnya untuk masing-masing manajer paket yang ditentukan (atau semuanya jika perintah dipanggil tanpa parameter). Perhatikan bahwa npm shims tidak akan diinstal kecuali diminta secara eksplisit, karena npm saat ini didistribusikan dengan Node.js melalui cara lain.
Jika sistem file tempat biner corepack
berada hanya-baca, perintah ini akan gagal. Solusinya adalah dengan menambahkan binari sebagai alias di file konfigurasi shell Anda (misalnya di ~/.bash_aliases
):
alias benang = "corepack benang" alias benang pkg = "corepack benang pkg" alias pnpm = "corepack pnpm" alias pnpx = "corepack pnpx" alias npm = "corepack npm" alias npx = "corepack npx"
Di Windows PowerShell, Anda dapat menambahkan fungsi menggunakan variabel otomatis $PROFILE
:
echo "fungsi benang { corepack benang `$args }" >> $PROFILEecho "fungsi benangpkg { corepack benangpkg `$args }" >> $PROFILEecho "fungsi pnpm { corepack pnpm `$args }" >> $PROFILEecho "fungsi pnpx { corepack pnpx `$args }" >> $PROFILEecho "fungsi npm { corepack npm `$args }" >> $PROFILEecho "fungsi npx { corepack npx `$args }" >> $PROFILE
corepack disable [... name]
Pilihan | Keterangan |
---|---|
--install-directory | Lepaskan shim ke lokasi yang ditentukan |
Perintah ini akan mendeteksi di mana Node.js diinstal dan akan menghapus shim dari sana.
corepack install
Unduh dan instal manajer paket yang dikonfigurasi di proyek lokal. Perintah ini tidak mengubah versi global yang digunakan saat menjalankan manajer paket dari luar proyek (gunakan tanda `-g,--global` jika Anda ingin melakukan ini).
corepack install <-g,--global> [... name[@]]
Instal manajer paket yang dipilih dan instal pada sistem.
Manajer paket yang diinstal akan dikonfigurasi sebagai default baru ketika memanggil biner masing-masing di luar proyek yang mendefinisikan bidang packageManager
.
corepack pack [... name[@]]
Pilihan | Keterangan |
---|---|
--json | Cetak folder keluaran, bukan log |
-o,--output | Jalur tempat menghasilkan arsip |
Unduh pengelola paket yang dipilih dan simpan di dalam tarball yang sesuai untuk digunakan dengan corepack install -g
.
corepack use ]>
Saat dijalankan, perintah ini akan mengambil rilis terbaru yang cocok dengan deskriptor yang disediakan, menetapkannya ke file package.json proyek, dan secara otomatis melakukan instalasi.
corepack up
Ambil versi terbaru yang tersedia untuk baris rilis utama manajer paket saat ini yang digunakan dalam proyek lokal, dan perbarui proyek untuk menggunakannya.
Tidak seperti corepack use
perintah ini tidak menggunakan nama manajer paket atau rentang versi, karena akan selalu memilih versi terbaru yang tersedia dari baris utama yang sama. Jika Anda perlu meningkatkan ke jurusan baru, gunakan corepack use {name}@latest
call (atau cukup corepack use {name}
).
COREPACK_DEFAULT_TO_LATEST
dapat diatur ke 0
untuk menginstruksikan Corepack agar tidak mencari di registri jarak jauh versi terbaru manajer paket yang dipilih, dan tidak memperbarui versi Last Known Good ketika mendownload versi baru dari jalur utama yang sama.
COREPACK_ENABLE_AUTO_PIN
dapat diatur ke 0
untuk mencegah Corepack memperbarui bidang packageManager
ketika mendeteksi bahwa paket lokal tidak mencantumkannya. Secara umum kami menyarankan untuk selalu mencantumkan bidang packageManager
(yang dapat Anda atur dengan mudah melalui corepack use [name]@[version]
), karena ini memastikan bahwa instalasi proyek Anda selalu bersifat deterministik.
COREPACK_ENABLE_DOWNLOAD_PROMPT
dapat diatur ke 0
untuk mencegah Corepack menampilkan URL ketika perlu mengunduh perangkat lunak, atau dapat diatur ke 1
agar URL ditampilkan. Secara default, ketika Corepack dipanggil secara eksplisit (misalnya corepack pnpm …
), maka diatur ke 0
; ketika Corepack dipanggil secara implisit (misalnya pnpm …
), itu diatur ke 1
. Ketika masukan standar adalah TTY dan tidak ada lingkungan CI yang terdeteksi, Corepack akan meminta masukan pengguna sebelum memulai pengunduhan.
COREPACK_ENABLE_UNSAFE_CUSTOM_URLS
dapat diatur ke 1
untuk memungkinkan penggunaan URL khusus untuk memuat manajer paket yang dikenal oleh Corepack ( yarn
, npm
, dan pnpm
).
COREPACK_ENABLE_NETWORK
dapat diatur ke 0
untuk mencegah Corepack mengakses jaringan (dalam hal ini Anda akan bertanggung jawab untuk menghidrasi versi manajer paket yang akan diperlukan untuk proyek yang akan Anda jalankan, menggunakan corepack install -g --cache-only
).
COREPACK_ENABLE_STRICT
dapat diatur ke 0
untuk mencegah Corepack melakukan kesalahan jika manajer paket tidak sesuai dengan yang ditentukan untuk proyek saat ini. Artinya, jika pengguna menggunakan manajer paket yang ditentukan dalam proyek saat ini, ia akan menggunakan versi yang ditentukan oleh bidang packageManager
proyek. Namun jika pengguna menggunakan pengelola paket lain yang berbeda dari yang ditentukan untuk proyek saat ini, maka pengguna akan menggunakan versi pengelola paket seluruh sistem.
COREPACK_ENABLE_PROJECT_SPEC
dapat diatur ke 0
untuk mencegah Corepack memeriksa apakah manajer paket sesuai dengan yang ditentukan untuk proyek saat ini. Ini berarti bahwa ia akan selalu menggunakan manajer paket seluruh sistem terlepas dari apa yang ditentukan dalam bidang packageManager
proyek.
COREPACK_HOME
dapat diatur untuk menentukan di mana Corepack harus menginstal manajer paket. Secara default diatur ke %LOCALAPPDATA%nodecorepack
di Windows, dan ke $HOME/.cache/node/corepack
di tempat lain.
COREPACK_ROOT
tidak memiliki dampak fungsional pada Corepack itu sendiri; itu secara otomatis diatur di lingkungan Anda oleh Corepack ketika dikeluarkan ke manajer paket yang mendasarinya, sehingga mereka dapat mendeteksi keberadaannya (berguna untuk perintah seperti yarn init
).
COREPACK_NPM_REGISTRY
menyetel url basis registri yang digunakan saat mengambil pengelola paket dari npm. Nilai defaultnya adalah https://registry.npmjs.org
COREPACK_NPM_TOKEN
menyetel header otorisasi token pembawa saat menghubungkan ke registri tipe npm.
COREPACK_NPM_USERNAME
dan COREPACK_NPM_PASSWORD
untuk menyetel header otorisasi dasar saat menyambung ke registri tipe npm. Perhatikan bahwa kedua variabel lingkungan diperlukan dan sebagai teks biasa. Jika Anda ingin mengirim kata sandi kosong, setel COREPACK_NPM_PASSWORD
secara eksplisit ke string kosong.
HTTP_PROXY
, HTTPS_PROXY
, dan NO_PROXY
didukung melalui node-proxy-agent
.
COREPACK_INTEGRITY_KEYS
dapat disetel ke string kosong atau 0
untuk memerintahkan Corepack melewati pemeriksaan integritas, atau ke string JSON yang berisi kunci khusus.
Ada berbagai macam masalah jaringan yang dapat terjadi saat menjalankan perintah corepack
. Hal-hal yang perlu diperiksa:
Pastikan koneksi jaringan Anda aktif.
Pastikan host untuk permintaan Anda dapat diselesaikan oleh DNS Anda; coba gunakan curl [URL]
(ipv4) dan curl -6 [URL]
(ipv6) dari shell Anda.
Periksa pengaturan proxy Anda (lihat Variabel Lingkungan).
Lihat CONTRIBUTING.md
.
Lihat LICENSE.md
.