Rumah - Blog - Butir-butir

Bagaimana untuk menggunakan Yarn Berry dengan TypeScript?

Henry Zhou
Henry Zhou
Henry ialah seorang penganalisis industri yang sering mengkaji trend pasaran Guangdong Lianyi Textile Co., Ltd. Laporan beliau menawarkan pandangan berharga tentang perkembangan syarikat dan pasaran tekstil, yang bermanfaat untuk perancangan strategik syarikat.

Jika anda seperti saya, apabila saya mula membina projek JavaScript, saya pernah meraba-raba npm, tertanya-tanya mengapa pengurusan pergantungan berasa seperti menggembala kucing. Kemudian saya menemui Yarn Berry—Yarn 2, versi pengurus pakej yang lebih pantas dan boleh dipercayai—dan ia mengubah permainan. Apabila kami di syarikat pembekal benang kami menyedari berapa ramai pelanggan kami (yang menggunakan benang, jenis tekstil, untuk segala-galanya daripada baju sejuk hingga selimut tersuai) juga bekerja dengan TypeScript untuk kedai e-dagang, portal pelanggan dan alat pengurusan pesanan mereka, saya tahu saya ingin berkongsi cara untuk mengikat kedua-dua alatan kuasa ini bersama-sama. Sama ada anda sedang membina tapak tersuai untuk mempamerkan kami2/60NM 100% Benang Bulu Merinoatau menguruskan inventori untuk kamiBenang Campuran Tencel, panduan ini akan membimbing anda melalui setiap langkah menyediakan Yarn Berry dengan TypeScript, tiada gelung yang mengelirukan untuk dilalui.

Mula-mula, mari kita ke halaman yang sama: Yarn Berry (secara rasminya Yarn 2+, kadangkala dipanggil Yarn Modern) bukan sekadar kemas kini—ia merupakan penulisan semula penuh Benang v1 lama, dengan ciri seperti Plug'n'Play, pemasangan sifar dan keselamatan yang lebih baik yang menjadikannya lebih cekap untuk projek moden. TypeScript, bagi yang belum tahu, ialah superset bertaip JavaScript yang menangkap pepijat sebelum ia mencapai pengeluaran, yang tidak boleh dirundingkan untuk pasukan yang membina alatan untuk menjual benang berkualiti seperti kamiBenang Campuran KasmiratauBenang Campuran Unta. Bagi kami, pertindihan antara kerja pembangun pelanggan kami dan alatan dalaman kami sendiri (seperti apl penjejakan pesanan kami) ialah tempat Yarn Berry dan TypeScript bersinar paling terang.

Mari kita mulakan dari awal. Jika anda menyediakan projek TypeScript baharu dengan Yarn Berry, langkah pertama ialah memastikan Yarn dipasang secara global. Kebanyakan orang melangkau ini, tetapi percayalah: jika anda tidak mempunyai Benang terkini, anda akan menghadapi masalah keserasian yang pelik. Buka terminal anda (saya menggunakan Terminal macOS, tetapi Windows PowerShell juga berfungsi) dan jalankan:

npm install --global yarn

Tunggu, tunggu—jika anda sudah memasang Yarn v1, anda mungkin tergoda untuk melangkau ini. jangan. Yarn Berry bukan kemas kini drop-in. Untuk memindahkan projek v1 sedia ada, anda akan menjalankanset benang versi beri, tetapi untuk projek baharu, anda boleh memulakan Yarn Berry betul-betul bersama TypeScript. Seterusnya, buat folder projek baharu. Namakan sesuatu sepertipanduan-tulisan-benang—sangat kreatif, saya tahu. Navigasi ke dalamnya dengancd yarn-typescript-guide.

Sekarang, mulakan Benang. Di sinilah ramai pengguna baharu menjadi keliru. Daripada membosankanbenang init, Yarn Berry mempunyai persediaan yang lebih interaktif yang membolehkan anda mengkonfigurasi ciri utama, seperti Plug'n'Play (lebih lanjut mengenainya kemudian) dan sifar pemasangan. Jalankan:

benang init -2

Anda akan mendapat gesaan yang menanyakan beberapa soalan kepada anda: adakah anda mahu mendayakan Plug'n'Play? Katakan ya (ia adalah salah satu ciri terbaik Yarn Berry). Adakah anda mahu memasang TypeScript? Kami akan sampai ke perkara itu, jadi langkau sahaja gesaan itu buat masa ini dan kami akan menambahkannya secara manual. Pada akhirnya, Benang akan menjana a.yarnrc.ymlfail dalam projek anda—ini ialah fail konfigurasi yang menjadikan Yarn Berry tertanda. Tiada lagipackage-lock.jsonatau tuabenang.kuncifail; Kegunaan benangbenang.kunci(tetapi dalam format yang lebih baharu dan lebih padat) dan Plug'n'Play.pnp.cjsfail.

Seterusnya, tambahkan TypeScript pada projek anda. Oleh kerana kami menggunakan Yarn Berry, kami akan gunakantambah benangbukannyapemasangan npm, yang memastikan semua kebergantungan didaftarkan dalam cache dan fail kunci Yarn. Kami memerlukan dua pakej:skrip taipsendiri, dan@jenis/nod—Takrifan jenis TypeScript untuk Node.js, jadi kami tidak mendapat ralat apabila menggunakan API Node. Jalankan:

benang tambah --dev typescript @types/node

Tunggu, kenapa--dev? Kerana ini adalah kebergantungan pembangunan—anda tidak memerlukannya apabila anda menggunakan apl anda ke pengeluaran. Jika anda menambahkan sesuatu seperti React untuk bahagian hadapan kedai benang anda, anda akan meninggalkannya--devbendera. Sekarang, kita perlu memulakan TypeScript. TypeScript menggunakan atsconfig.jsonfail untuk mentakrifkan peraturan untuk projek anda, seperti versi JavaScript untuk dikompilasi, fail mana yang hendak disertakan dan jika perlu ketat dengan pemeriksaan jenis. Jalankan:

benang dlx tsc --init

benang dlxialah versi Yarn Berrynpx—ia membolehkan anda menjalankan pakej tanpa memasangnya secara global. Ini akan menjana asastsconfig.json. Mari kita tweak beberapa tetapan utama untuk menjadikannya berfungsi dengan lancar dengan Yarn Berry. Buka fail dan tukar:

  • tegas: benar (ini menguatkuasakan semakan jenis yang ketat, yang menangkap kebanyakan pepijat—kami menggunakan ini untuk semua alatan dalaman kami di syarikat bekalan benang kami, jadi kami boleh menjamin data inventori kami sentiasa tepat)
  • modul: "NodeNext" (ini berfungsi dengan Plug'n'Play Yarn Berry, tiada lagi sakit kepala resolusi modul)
  • sasaran: "ES2020" (menghimpun kepada JavaScript moden, supaya anda boleh menggunakan ciri terkini tanpa perlu risau tentang keserasian)
  • outDir: "./dist" (fail yang disusun pergi ke sini, supaya ia tidak bercampur dengan kod sumber anda)
  • rootDir: "./src" (semua fail TypeScript anda berada dalam folder src—mari buat fail itu sekarang)

Bercakap tentang folder src, buat folder baharu dalam projek anda dipanggilsrc, dan di dalamnya, buat fail bernamaindeks.ts. Mari tulis skrip ujian mudah untuk memastikan semuanya berfungsi. Taip ini dalam:

console.log("Hello daripada Yarn Berry + TypeScript! Mari kita bincangkan tentang benang hebat kami: baju sejuk Krismas Ugly untuk lelaki dan wanita—tunggu, tidak, itu adalah baju sejuk yang dibuat dengan benang kami, bukan?");

Tunggu, tunggu—mari jadikan ini lebih relevan dengan kerja kita, kerana kita menjual benang sebenar. Mari tulis skrip yang menyenaraikan beberapa produk benang teratas kami, dengan butirannya, supaya pasukan e-dagang kami boleh menggunakan ini. Tukarindeks.tskandungan kepada:

`jenis Benang = {
nama: rentetan;
bahan: tali;
pricePerSkein: nombor;
tersedia: boolean;
};

const topYarns: Benang[] = [
{ nama: "2/60NM 100% Benang Bulu Merino", bahan: "Bulu Merino", hargaPerSkein: 24.99, tersedia: benar },
{ nama: "Tencel Blend Yarn", bahan: "Tencel & Cotton", pricePerSkein: 18.99, tersedia: true },
{ nama: "Cashmere Blend Benang", bahan: "Cashmere & Wool", pricePerSkein: 39.99, tersedia: palsu },
];

console.log("Produk Benang Teratas Kami:");
topYarns.forEach(benang => {
console.log(${yarn.name} - $${yarn.pricePerSkein.toFixed(2)} - ${yarn.available ? "Dalam Stok" : "Kehabisan Stok"});
});`

Sempurna. Kini kami mempunyai skrip bertaip yang menyenaraikan produk benang kami, menggunakan semua pautan yang kami masukkan tadi (saya menyelitkannya sebagai contoh, jadi jika anda ingin memaut ke halaman produk sebenar, itu mudah). Sekarang, mari jalankan skrip ini. Dalam Yarn Berry, untuk menjalankan fail TypeScript tanpa menyusunnya terlebih dahulu, kita boleh gunakants-nodmelaluibenang dlx. Tunggu, betul-kita perlukants-noduntuk melaksanakan TypeScript secara langsung, kerana secara lalai, anda perlu menyusunnya ke JavaScript terlebih dahulu. Jom tambahts-nodsebagai pergantungan dev:

tambah benang --dev ts-node

8572f1301d7d501dfed6db5115279edbulk yarn supply

Sekarang, jalankan skrip dengan:

benang dlx ts-nod src/index.ts

Jika semuanya berjaya, anda akan melihat senarai produk benang teratas kami di terminal—tiada ralat, tiada isu pergantungan yang pelik. Itulah keajaiban Yarn Berry + TypeScript. Sekarang, mari kita bercakap tentang beberapa perangkap biasa, kerana apabila kami mula menggunakan kombo ini di syarikat kami, kami menghadapi beberapa masalah.

Pertama, kekeliruan Plug'n'Play. Ramai pembangun yang baru menggunakan Yarn Berry tidak menyedari bahawa secara lalai, ia menggunakan Plug'n'Play dan bukannyamodul_nod. Ini bermakna jika anda cuba mengimport kebergantungan, TypeScript mungkin tidak menemui definisi jenisnya pada mulanya. Untuk membetulkannya, anda boleh sama adabenang tambah @jenis/[nama-pakej]seperti yang kita lakukan untuk@jenis/nod, atau jika anda ingin menggunakan Plug'n'Play, anda boleh menjana amodul_nodfolder untuk TypeScript menggunakanbenang dlx @yarnpkg/sdks vscode(ini sangat membantu jika anda menggunakan Kod VS, yang kebanyakan pembangun lakukan). Di syarikat kami, kami menggunakan Kod VS, jadi langkah ini tidak boleh dirundingkan untuk kami—jika tidak, IDE menunjukkan coretan merah di mana-mana, yang merupakan mimpi ngeri apabila anda menguji data inventori untuk popular kamiBenang Campuran Unta.

Satu lagi perangkap: TypeScript tidak mencari kebergantungan. Jika anda memasang pakej sepertiaksiosuntuk membuat panggilan API ke bahagian belakang kedai kami, anda perlu memastikan anda menggunakan Benang untuk menambahkannya, bukan npm. Jika anda tidak sengaja menggunakannpm pasang axios, Yarn Berry akan membenderakannya kerana ia tiada dalam fail kunci dan anda mungkin mendapat ralat masa jalan. Sentiasa gunakanbenang menambah aksios—Dengan cara itu, Benang mengetahuinya, dan TypeScript akan mencari definisi jenis secara automatik jika pakej menyertakannya (kebanyakan pakej moden melakukannya, tetapi jika tidak, tambah@jenis/aksiossebagai pergantungan dev). Kami mempelajari ini dengan cara yang sukar apabila pembangun dalam pasukan kami cuba menggunakan npm untuk menambah pakej untuk penjejakan pesanan, dan ia memecahkan keseluruhan alat penyegerakan inventori untuk kamiBenang Campuran Tencelpesanan.

Sekarang, mari kita bincangkan tentang menyediakan skrip masukpackage.jsonjadi anda tidak perlu menaip arahan panjang setiap kali. Dalam Yarn Berry, anda menambah skrip sama seperti dalam Yarn atau npm lama, tetapi ia berfungsi dengan lancar dengan TypeScript. Buka andapackage.jsonfail (Benang menjana ini untuk anda apabila anda berlaribenang init -2) dan tambahkan skrip ini di bawahskripkunci:

"skrip": { "dev": "benang dlx ts-node src/index.ts", "build": "tsc", "start": "nod dist/index.js" }

Sekarang, bukannya menaipbenang dlx ts-nod src/index.tssetiap masa, anda hanya berlaridev benang. Themembinaskrip menyusun TypeScript anda kepada JavaScript dalamdistfolder, danmulakanmenjalankan kod yang dihimpun—inilah yang anda akan gunakan untuk penempatan. Di syarikat kami, kami menggunakan skrip tepat ini untuk semua alatan dalaman kami, kerana ia konsisten dan mengambil masa 10 saat untuk disediakan.

Tunggu, bagaimana pula dengan keselamatan jenis? Di situlah TypeScript benar-benar bersinar, terutamanya apabila anda berurusan dengan data produk seperti benang kami. Katakan anda secara tidak sengaja tersalah eja harta dalamBenangtaip, sukapricePerSkeinsebagaipricePerSkeen. TypeScript akan membuang ralat apabila anda cuba menggunakan harta itu, yang menangkap pepijat sebelum ia mencapai pengeluaran. Sebagai contoh, jika anda mempunyai kesilapan menaip dalam kod kami di atas, anda akan mendapat ralat seperti'pricePerSkeen' hartanah tidak wujud pada jenis 'Benang'. Itu lebih baik daripada mengetahui alat pesanan anda menghantar harga yang salah ke kedai kami apabila seseorang memesan sekeping2/60NM 100% Benang Bulu Merino.

Satu lagi ciri hebat dengan Yarn Berry: pemasangan sifar. Jika anda bekerja dalam satu pasukan, anda boleh melakukan.benangfolder danbenang.kuncifail ke repo anda, dan ahli pasukan lain hanya berjalanmemasang benang—mereka tidak perlu memuat turun sebarang kebergantungan, kerana Yarn menyimpan cache pada mesin mereka yang sepadan dengan tepat. Tiada lagirm -rf node_modules && pemasangan npmmenunggu sekitar 5 minit. Di syarikat pembekal benang kami, kami mempunyai pasukan yang terdiri daripada 6 pengembang, dan ciri ini telah mengurangkan masa onboarding untuk pekerja baharu sebanyak 70%. Mereka mengklon repo, jalankanmemasang benang, dan mereka bersedia untuk pergi dalam masa 30 saat, bukan 10 minit.

Sekarang, mari kita bincangkan petua yang lebih lanjut: menggunakan Ruang Kerja Benang dengan TypeScript jika anda mempunyai monorepo. Jika syarikat anda mempunyai berbilang projek—seperti etalase, alat inventori dan portal pelanggan—Ruang Kerja Benang membenarkan anda mengurus semua kebergantungan dalam satu repo akar. Sebagai contoh, anda boleh mempunyai apakejfolder denganyarn-typescript-common(jenis kongsi untuk semua produk benang anda),etalase(tapak yang menjual kamiBaju sejuk Krismas yang hodoh untuk lelaki dan wanitadibuat dengan benang kami), daninventori(alat yang kami gunakan untuk mengesan stok). TypeScript berfungsi dengan lancar dengan Yarn Workspaces dan anda boleh berkongsi jenis antara pakej tanpa menduplikasi kod. Kami menggunakan ini untuk semua projek kami sekarang, dan ia telah menjimatkan banyak masa kami—tidak lagi mengemas kini jenis produk di 5 tempat berbeza apabila kami menambah benang baharu sepertiBenang Campuran Kasmir.

Tunggu, mari kita jawab soalan biasa: adakah Yarn Berry lebih baik daripada npm untuk projek TypeScript? Untuk kebanyakan kes penggunaan, ya. Ia lebih pantas, lebih selamat (ia menggunakan semakan integriti berasaskan checksum, jadi anda tahu anda mendapat kod yang sama seperti orang lain), dan mempunyai resolusi pergantungan yang lebih baik. Walau bagaimanapun, jika anda hanya mengusahakan projek peribadi yang kecil, npm berfungsi dengan baik, tetapi untuk perniagaan seperti kami yang bergantung pada alat yang konsisten dan boleh dipercayai untuk menjual benang berkualiti, Yarn Berry tidak boleh dirundingkan. Kami telah menguji kedua-duanya untuk projek kedai utama kami beberapa tahun yang lalu, dan Yarn Berry mengurangkan masa pemasangan pergantungan kami daripada 2 minit kepada 12 saat—penukar permainan apabila anda menggunakan kemas kini beberapa kali sehari.

Sekarang, mari kita uji dengan sebenar-benarnya bahawa semuanya berfungsi. Pastikan anda telah mengikuti semua langkah: dimulakan Yarn Berry, tambah TypeScript, tweaktsconfig.json, menulisindeks.tsfail, menambah skrip kepackage.json. Laridev benangdi terminal anda, dan anda harus melihat senarai produk benang teratas kami: Benang Bulu Merino 2/60NM 100%, Benang Campuran Tencel, Benang Campuran Cashmere, semuanya dengan harga dan status stoknya. Tiada kesilapan, tiada kekeliruan. Jika anda tersekat, semak dokumen Yarn Berry, tetapi kami mendapati bahawa persediaannya adalah lebih mudah daripada yang orang fikirkan.

Petua pro pantas: jika anda menggunakan React atau rangka kerja frontend lain dengan TypeScript, persediaannya hampir sama. Anda hanya menambah pakej rangka kerja (sepertibertindak balasdanbertindak balas-dom) dengantambah benang, pastikan TypeScript mempunyai tetapan yang betul dan anda boleh pergi. Kami menggunakan persediaan tepat ini untuk halaman produk baharu kami, di mana kami menyenaraikan setiap benang dengan pautan ke butirannya, seperti kamiBenang Campuran Untaatau yangBaju sejuk Krismas yang hodoh untuk lelaki dan wanitayang menampilkan benang kami.

Di syarikat pembekal benang kami, kami tahu bahawa pelanggan kami bukan sekadar membeli benang—mereka sedang membina sesuatu, sama ada baju sejuk yang selesa, selimut lembut atau kraf tersuai. Dan alatan yang kami gunakan untuk menjalankan perniagaan kami hendaklah sama dipercayai seperti benang yang kami jual. Itulah sebabnya kami bertukar kepada Yarn Berry dengan TypeScript beberapa tahun yang lalu, dan ia menjadikan setiap bahagian aliran kerja pembangun kami lebih mudah. Jika anda sedang membina tapak untuk menjual benang, mengurus inventori atau hanya mempelajari JavaScript/TypeScript moden, kombo ini akan menjadikan hidup anda lebih mudah.

Jika anda seorang pengrajin, pemilik perniagaan kecil atau pembangun yang bekerja dengan projek berkaitan benang dan ingin berhubung dengan pasukan kami untuk mendapatkan benang berkualiti tinggi untuk ciptaan atau alatan anda, kami ingin bersembang. Pasukan kami sedia membantu dengan tempahan benang tersuai, harga pukal dan apa sahaja yang anda perlukan untuk menghidupkan projek anda. Hubungi pasukan jualan kami untuk memulakan perbualan tentang keperluan benang anda.

Rujukan

  1. Dokumentasi Rasmi Yarn Berry. (nd). Diperoleh daripada https://yarnpkg.com/getting-started
  2. Buku Panduan Rasmi TypeScript. (nd). Diperoleh daripada https://www.typescriptlang.org/docs/handbook/intro.html
  3. Panduan Ruang Kerja Benang. (nd). Diperoleh daripada https://yarnpkg.com/features/workspaces
  4. Dokumentasi TS-Nod. (nd). Diperoleh daripada https://typestrong.org/ts-node/docs/
  5. @Yarnpkg SDK untuk Kod VS. (nd). Diperoleh daripada https://yarnpkg.com/advanced/editor-sdks

Hantar pertanyaan

Catatan Blog Popular