Ditulis oleh Rosario De Chiara✏️
mise dan asdf ialah alatan yang direka untuk membantu pembangun mengurus berbilang versi bahasa pengaturcaraan dan persekitaran. Kedua-dua alatan itu bertujuan untuk memudahkan pembangunan polyglot dengan menjadikannya lebih mudah untuk mengurus dan bertukar antara versi alat, yang merupakan cabaran biasa apabila bekerja dengan bahasa pengaturcaraan dan rangka kerja yang berbeza.
asdf ialah pengurus versi popular yang menggunakan teknik yang dipanggil "shimming" untuk bertukar antara versi alat yang berbeza seperti Python, Node.js dan Ruby. Ia mencipta laluan sementara ke versi tertentu, mengubah suai persekitaran untuk memastikan versi alat yang betul digunakan dalam projek yang berbeza. Walau bagaimanapun, kaedah ini boleh memperkenalkan prestasi overhed kerana cara shim ini berfungsi.
mise, singkatan untuk ungkapan Perancis "mise-en-place," iaitu cara anda menyediakan meja, berusaha untuk menambah baik pada asdf dengan menghilangkan pergantungan pada shim.
Ditulis dalam Rust, mise mengubah suai terus pembolehubah persekitaran PATH, yang membawa kepada masa pelaksanaan yang lebih pantas. Ia direka bentuk untuk berfungsi dengan lancar dengan pemalam asdf tetapi menawarkan ciri seperti padanan kabur arahan dan keupayaan untuk memasang berbilang versi alat yang sama secara serentak.
Untuk memasang asdf, ikut panduan permulaan untuk memasang prasyarat bergantung pada sistem anda. Setelah persekitaran sedia, anda boleh git mengklon repositori rasmi dalam direktori rumah anda:
$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1
Arahan di atas akan mengklon ke dalam direktori .asdf semua skrip dan fail konfigurasi yang diperlukan untuk memuktamadkan pemasangan.
Langkah seterusnya, daripada panduan pemasangan di atas, adalah untuk melaksanakan skrip pemasangan. Sekali lagi, langkah ini bergantung pada butiran persekitaran dan sistem pengendalian anda, jadi ikuti sahaja panduan untuk menambah skrip skrip yang betul dalam skrip permulaan shell anda (cth., .bashrc, .bash_profile, dll.). Pada penghujung proses ini dan, biasanya selepas anda memulakan semula shell anda, anda sepatutnya dapat menjalankan asdf sebagai arahan:
Pada ketika ini, asdf sedang berjalan tetapi untuk menjadikan sesuatu yang berguna dengannya, anda mesti memasang pemalam untuk mengendalikan alat (dalam bahasa asdf) yang berkaitan dengan projek yang anda ingin bangunkan (cth., Node.js, ular sawa, dll.).
Untuk tujuan ini, kami memasang pemalam untuk Node.js. Dalam asdf, pemalam ialah sekeping kod yang akan membolehkan anda menyesuaikan versi rangka kerja atau pustaka yang berbeza. Dalam kes ini, kami akan memasang pemalam Node.js dan kemudian memasang beberapa versi Node.js hanya untuk memahami cara asdf akan mengendalikannya.
Kami akan memasang pemalam Node.js dengan kod berikut:
$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1
Sila ambil perhatian bahawa anda perlu menangani secara eksplisit repositori git yang mengandungi kod sumber pemalam. Setelah pemalam itu disediakan, anda boleh menggunakannya untuk memasang versi Node.js tertentu dengan arahan berikut:
$ asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
Dalam contoh ini, anda memasang versi terkini yang, pada masa penulisan, ialah 23.1.0. Dengan arahan berikut, anda memasang versi khusus Node.js:
$ asdf install nodejs latest
Untuk memastikan kedua-duanya tersedia dalam sistem anda, gunakan yang berikut:
$ asdf install nodejs 20.0.0
Untuk memilih versi Node.js untuk digunakan, gunakan arahan berikut:
$ asdf shim-versions node nodejs 20.0.0 nodejs 23.1.0
asdf mengendalikan pelbagai versi alat dengan mengisi fail bernama [.tool-versions](https://asdf-vm.com/manage/configuration.html#tool-versions) dengan format berikut:
$ asdf global nodejs 20.0.0 $ node --version v20.0.0 $ asdf global nodejs 23.1.0 $ node --version v23.1.0
Fail .tool-versions dimanipulasi secara automatik oleh asdf dengan arahan untuk menentukan versi mana yang anda ingin gunakan, seperti yang kami lakukan di atas dengan Node.js versi 20.0.0. Bergantung pada parament global, shell dan local, kami akan menambah versi alat pada fail .tool-versions tertentu dengan kesan berbeza pada persekitaran anda. Berikutan, terdapat penjelasan tentang kesan parameter sekiranya kami memasang Node.js versi 20.0.0:
ruby 2.5.3 nodejs 10.15.0
Dengan arahan pertama, kami memberitahu asdf untuk menggunakan versi 20.0.0 dalam direktori rumah dan nod --version mengesahkan versi. Kemudian, kami mencipta direktori bernama ujian. Dalam ujian, kami melaksanakan asdf, menyatakan versi berbeza untuk Node (versi 23.1.0) dan, sekali lagi, nod --version mengesahkan bahawa kami menggunakan versi 23.1.0. Akhirnya, kembali ke direktori utama, anda boleh melihat bagaimana versi Node.js secara setempat masih 20.0.0.
Sekarang kami mempunyai asdf yang bekerja pada sistem kami, mari kita pelajari apa itu shim dan mengapa ia penting apabila bekerja dengan asdf.
Dalam sains komputer, shim ialah satu cara untuk mengubah hala arahan (cth., penyerahan kaedah perpustakaan) secara telus antara versi yang berbeza. Kuncinya di sini ialah perkataan "secara telus." Keseluruhan idea asdf adalah untuk membenarkan pengguna menukar apa yang sebenarnya dipanggil apabila anda menulis, katakan, nod atau python atau mana-mana pakej lain, dengan cara yang telus. Pengguna terus menaip nod atau python tetapi asdf telah menyediakan laluan berbeza – shim – ke versi yang betul bergantung pada apa yang ditulis dalam fail .tool-versions.
Pemalam hanyalah satu set skrip shell pintar yang membenarkan asdf memilih versi arahan tertentu yang betul (cth., semak pemalam Node.js). Arahan dalam direktori bin hanya melaksanakan perkara yang asdf mesti laksanakan apabila anda menggunakan pemalam Node.js untuk memasang versi baharu, pilih versi tertentu untuk digunakan, dsb.
Proses memasang mise lebih mudah berbanding asdf kerana anda tidak perlu mengklon repositori git:
$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1
Panduan pengaktifan agak mudah; sebaik sahaja anda melaksanakan arahan di atas dan mulakan semula shell anda, anda akan dapat menjalankan yang berikut:
$ asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
Ini akan menunjukkan status pemasangan anda. Setelah mise dipasang, anda mungkin perlu mengaktifkannya dengan perintah [mise activate](https://mise.jdx.dev/cli/activate.html).
Pada ketika ini, arahan mise tersedia untuk digunakan untuk tugas yang paling biasa: memasang versi rangka kerja tertentu untuk menjadikannya tersedia secara global untuk sistem:
$ asdf install nodejs latest
Kita bermula daripada situasi di mana nod boleh laku tidak berada dalam sistem. Menggunakan arahan mise, kami memasang versi nod tertentu secara global untuk menjadikannya tersedia. Untuk mengesahkan versi alatan yang dipasang pada masa ini, anda boleh menggunakan arahan berikut:
$ asdf install nodejs 20.0.0
Dalam arahan di atas, anda boleh melihat alat nod dipasang dalam kotak di atas dan versi Python.
Rangka kerja mise menggunakan mekanisme asdf yang sama untuk mengendalikan konfigurasi alat yang berbeza di seluruh sistem dan dalam direktori tertentu. Peranan fail .tool-versions dalam asdf dimainkan oleh fail mise.toml, yang akan mengumpulkan konfigurasi.
Dalam mise, tiada konsep yang serupa dengan pemalam asdf, dan ini adalah perkara yang baik kerana, semasa dalam asdf, memasang versi alat tertentu – katakan node@20.0.0 – ialah proses dua langkah ( mula-mula memasang pemalam Node.js dan kemudian versi tertentu Node). Dalam mise, anda hanya menangani versi tunggal alat yang anda perlukan, dan mise akan menangani semua beban berat untuk mengkonfigurasinya untuk anda di sebalik tabir. Dalam dua kotak berikut, anda boleh melihat bagaimana arahan asdf diterjemahkan kepada mise:
$ asdf shim-versions node nodejs 20.0.0 nodejs 23.1.0
Sebenarnya, ini semua boleh dilakukan dalam satu langkah yang memasang pemalam dan masa jalan serta menetapkan versi:
$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1
Perkataan umum asdf diselesaikan secara elegan oleh gula sintaksis mise. Namun, mise berbeza dalam cara ia mengendalikan pelbagai versi, yang mempunyai kesan yang lebih luas pada keseluruhan pengalaman. Dalam imej berikut, kami menggambarkan perkara yang berlaku apabila anda melaksanakan perintah nod dalam persekitaran di mana asdf berfungsi:
Proses ini, sudah tentu, memberi kesan kepada masa yang diperlukan untuk melaksanakan arahan. Sebaliknya, mise menyelesaikan masalah yang sama untuk memilih alat yang betul bergantung pada konfigurasi dengan memanfaatkan mekanisme lain: pembolehubah PATH, yang merupakan mekanisme asli sistem pengendalian untuk melaksanakan arahan.
Persembahan adalah sama dengan menjalankan arahan (cth., nod) tanpa menggunakan mise. Demi rasa ingin tahu, mise berfungsi secara berbeza berkenaan dengan asdf: mise menjejaki setiap perubahan direktori supaya apabila pengguna menukar direktori, mise memanggil cangkuk dalaman untuk mengemas kini pembolehubah PATH. Cangkuk ini sangat cekap kerana ia ditulis dalam Rust dan ia akan menyediakan pembolehubah PATH dengan cepat untuk mengkonfigurasi persekitaran anda.
Kedua-dua asdf dan mise menguruskan berbilang versi alat dengan berkesan, masing-masing dengan mekanisme unik. mise cemerlang dalam kecekapan terima kasih kepada mekanisme cangkuk PATHnya, manakala asdf menawarkan keserasian alat yang lebih luas tetapi dengan pertukaran prestasi mekanisme shimnya. keserasian mise dengan pemalam asdf merapatkan jurang antara alatan.
Sama ada mengutamakan kelajuan atau pemilihan, kedua-dua alatan memperkasakan pembangun untuk mengurus persekitaran mereka dengan mudah, menawarkan ekosistem yang berkembang pesat untuk pelbagai pakej dan alatan.
NPM:
$ asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
Tag Skrip:
$ asdf install nodejs latest
3.(Pilihan) Pasang pemalam untuk penyepaduan yang lebih mendalam dengan timbunan anda:
Mulakan sekarang.
Atas ialah kandungan terperinci mise vs. asdf untuk pengurusan persekitaran projek JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!