Cli: [BUG] Ruang kerja tidak didokumentasikan, tampaknya tidak berfungsi

Dibuat pada 24 Okt 2020  ·  8Komentar  ·  Sumber: npm/cli

Apa status ruang kerja? Apakah mereka benar-benar diluncurkan dengan npm 7? Dan haruskah ada yang benar-benar mencobanya?

Saya merasa jika fitur tersebut benar-benar diluncurkan, itu akan didokumentasikan di suatu tempat selain RFC. Mereka disebutkan di pos rilis, tetapi pada dasarnya tidak ada di tempat lain. Saya sangat bingung apakah kami harus bisa menggunakannya atau tidak.

Bisakah sesuatu tentang status mereka ditambahkan ke dokumen publik?

Bug Needs Triage Release 7.x

Komentar yang paling membantu

btw dokumen baru sudah siap 😍 https://docs.npmjs.com/cli/v7/using-npm/workspaces - terima kasih @ethomson ❤️

Semua 8 komentar

hai @justinfagnani terima kasih atas umpan baliknya 😊 Biarkan saya mencoba yang terbaik untuk mengklarifikasi beberapa hal:

Tidak ada menyebutkan ruang kerja di dokumen saat ini atau baru

Itu ada di dokumentasi yang dibundel dengan npm v7, untuk membacanya Anda dapat menjalankan:

  • npm help workspaces Buka halaman buku panduan di terminal
  • npm help workspaces --viewer=browser Membuka halaman dokumen yang sama di browser

Fungsionalitas dasar ruang kerja, seperti menginstal dependensi, tidak berfungsi: # 2035 dan # 1984

Meskipun kami berusaha keras untuk membangun perangkat lunak yang sempurna, terkadang ada bug yang tidak diinginkan dan / atau penyesuaian yang harus dilakukan dan kami akan terus menanganinya di rilis tambalan mingguan kami.

Apa status ruang kerja? Apakah mereka benar-benar diluncurkan dengan npm 7? Dan haruskah ada yang benar-benar mencobanya?

Dukungan ruang kerja yang dikirimkan dengan [email protected] adalah pekerjaan dasar yang membuat ruang kerja terhubung dengan benar dalam konteks npm install dari paket root tingkat atas. Maksud ketika kami memilih untuk melampirkan tautan RFC itu sendiri ke entri blog dan saluran komunikasi lainnya adalah agar transparan dan membuatnya sangat jelas dari sudut pandang teknis tingkat dukungan apa yang diberikan.

Secara pribadi, salah satu tujuan desain utama saya saat menerapkan dukungan ruang kerja adalah memastikannya masih dapat diperluas dan melayani ekosistem yang kaya dari perkakas yang ada - yang mengatakan, jika Anda membutuhkan pengalaman yang lebih kaya fitur dalam [email protected] Anda mungkin ingin menggunakannya bersama alat lain seperti lerna yang akan menyediakan berbagai alur kerja seputar pengelolaan ruang kerja sembari memanfaatkan npm7 untuk dapat menginstalnya dengan benar. Lerna khususnya memiliki konfigurasi useWorkspaces menjadi lerna bootstrap yang seharusnya mengaktifkan hal itu .

Kami memiliki RFC tindak lanjut yang memperluas rangkaian fitur yang disediakan di luar kotak oleh npm cli dan Anda dapat mengawasi pendaratan tersebut di rilis semi-minor v7 mendatang.

Bisakah sesuatu tentang status mereka ditambahkan ke dokumen publik?

Seperti yang saya sebutkan sebelumnya, mereka adalah bagian dari dokumen publik yang dikirimkan dalam npm cli tetapi saya juga memahami bahwa Anda mungkin merujuk ke situs web https://docs.npmjs.com/ . Dalam hal ini, kami memiliki tim yang bekerja keras untuk segera memperbaruinya.

Baiklah, saya minta maaf balasannya selama ini tetapi saya merasa sepadan dengan detail tambahannya 😊 Saya sangat menghargai masukan Anda karena ini adalah umpan balik eksternal yang sangat berharga yang akan membantu kami membentuk komunikasi yang bergerak maju - untuk satu, saya sudah berbicara keterlibatan dan lebih banyak posting blog berbaris dan saya akan memastikan untuk menerjemahkan dengan lebih baik apa arti sebenarnya dari deskripsi di RFC dalam teks biasa.

Sekali lagi terima kasih dan beri tahu saya jika masih ada pertanyaan! 😄

Hai @ruyadorno , terima kasih atas klarifikasi yang bermanfaat. Bisakah Anda juga menguraikan pertanyaan terkait ruang kerja berikut:

  • Apakah seharusnya ada satu package-lock.json di root ruang kerja (seperti yang dilakukan Yarn 1), atau dapatkah / haruskah ada file kunci individual dalam paket ruang kerja (seperti Lerna yang membuatnya)?
  • Bagaimana kita seharusnya menginstal / menghapus paket dalam ruang kerja? Tampaknya perintah ini tidak dapat menyelesaikan dependensi lokal yang ditautkan dalam folder root ruang kerja node_packages .

    • Contoh: paket ruang kerja @myworkspace/package-b tergantung pada paket ruang kerja @myworkspace/package-a . Saya mendapatkan kesalahan npm ERR! code ETARGET / npm ERR! notarget No matching version found for @myworkspace/package-a@^1.0.0 di package-b kecuali saya mengubah referensi paket ke referensi jalur lokal ( "@myworkspace/package-a": "file:../package-a" ). Apakah kita seharusnya menggunakan referensi jalur lokal seperti itu (yang kemudian membutuhkan alat pihak ketiga seperti Lerna yang mengubah package.json menjadi notasi semver tergantung pada publikasi)? Ruang kerja asli

    • Anda mengatakan bahwa kami "mungkin ingin menggunakan [[email protected]] bersama alat lain seperti lerna yang akan menyediakan berbagai alur kerja seputar pengelolaan ruang kerja". Lerna memiliki perintah add yang menginstal dependensi ke dalam paket ruang kerja yang juga berfungsi dengan file package.json berisi ekspresi dependensi semver lokal - namun tidak ada perintah native untuk menghapus paket (https: // github. com / lerna / lerna / issues / 1886, https://github.com/lerna/lerna/pull/1887#issuecomment-640285310), jadi saya perlu menggunakan npm uninstall yang mengulang kembali ke masalah yang dijelaskan.

  • Apakah seharusnya ada satu package-lock.json di root ruang kerja (seperti yang dilakukan Yarn 1), atau dapatkah / haruskah ada file kunci individual dalam paket ruang kerja (seperti Lerna yang membuatnya)?

Ya, seharusnya hanya ada satu package-lock.json 👍

  • Bagaimana kita seharusnya menginstal / menghapus paket dalam ruang kerja? Tampaknya perintah ini tidak dapat menyelesaikan dependensi lokal yang ditautkan dalam folder root ruang kerja node_packages .

Untuk [email protected] saja, cara terbaik untuk menanganinya adalah secara manual mengedit package.json untuk setiap ruang kerja anak dan menjalankan npm install dari level teratas 😊

  • Contoh: paket ruang kerja @myworkspace/package-b tergantung pada paket ruang kerja @myworkspace/package-a . Saya mendapatkan kesalahan npm ERR! code ETARGET / npm ERR! notarget No matching version found for @myworkspace/package-a@^1.0.0 di package-b kecuali saya mengubah referensi paket ke referensi jalur lokal ( "@myworkspace/package-a": "file:../package-a" ). Apakah kita seharusnya menggunakan referensi jalur lokal seperti itu (yang kemudian membutuhkan alat pihak ketiga seperti Lerna yang mengubah package.json menjadi notasi semver tergantung pada publikasi)? Ruang kerja asli

hmmm 🤔 mungkin bug resmi - dari contoh spesifik Anda, alangkah baiknya untuk memvalidasi bahwa @myworkspace/package-b dan @myworkspace/package-a didefinisikan dengan benar / dapat ditemukan dari package.json "workspaces" property (semua ruang kerja perlu didefinisikan di sana, bahkan yang merupakan dependensi dari ruang kerja bersarang). Sasaran untuk ruang kerja tidak harus menggunakan file:./<location> sebagai rentang semver seperti yang Anda sebutkan, jadi bukan itu masalahnya. 😊

  • Anda mengatakan bahwa kami "mungkin ingin menggunakan [[email protected]] bersama alat lain seperti lerna yang akan menyediakan berbagai alur kerja seputar pengelolaan ruang kerja". Lerna memiliki perintah add yang menginstal dependensi ke dalam paket ruang kerja yang juga berfungsi dengan file package.json berisi ekspresi dependensi semver lokal - namun tidak ada perintah native untuk menghapus paket (https: // github. com / lerna / lerna / issues / 1886, https://github.com/lerna/lerna/pull/1887#issuecomment-640285310), jadi saya perlu menggunakan npm uninstall yang mengulang kembali ke masalah yang dijelaskan.

Sama seperti untuk menambahkan dep baru, alur kerja vanilla untuk saat ini adalah mengedit file package.json secara manual dari ruang kerja bersarang untuk menghapus ketergantungan yang ingin Anda hapus dan kemudian jalankan npm install dari folder tingkat atas, seperti yang juga saya sebutkan dalam balasan sebelumnya yang seharusnya berubah dalam versi minor yang akan datang di mana kita akan menangani alur kerja ruang kerja seperti yang dijelaskan dalam RFC terbuka saat ini .

Terima kasih atas tanggapannya @ruyadorno. Saya tidak bermaksud mengatakan bahwa menurut saya npm harus membuat perangkat lunak yang sempurna. Saya benar-benar dapat mengetahui status fitur tersebut karena tidak ada di situs dokumen, dan ketidakmampuan saya untuk membuatnya berfungsi setelah penginstalan awal. Saya akan memeriksa npm help dan menantikan dokumen 7.x di situs web. Saya akan menindaklanjuti masalah khusus untuk fungsionalitas.

btw dokumen baru sudah siap 😍 https://docs.npmjs.com/cli/v7/using-npm/workspaces - terima kasih @ethomson ❤️

Ada rencana untuk mendukung "nohoist"? Diperlukan untuk pekerjaan react-native

hai @ acates-happymoney Menurut saya akan lebih baik untuk melacaknya dalam edisi terpisah, akan sangat bagus jika Anda dapat memberikan kasus reproduksi sehingga lebih mudah bagi kami untuk mengetahui lebih baik bagaimana menindaklanjutinya 😊

Menggunakan _yarn_ sebagai contoh kontras terkait noHoist . Menggunakan fitur ruang kerja, _yarn_ tidak menambahkan dependensi ke direktori _node_modules_ dalam paket Anda - hanya di tingkat root, yaitu _yarn_ mengangkat semua dependensi ke tingkat root. _yarn_ memanfaatkan symlink untuk menunjuk ke paket yang berbeda. Karenanya, _yarn_ menyertakan dependensi hanya sekali dalam proyek. Perhatikan, ini setara dengan _npm_ sekarang.

Anda harus menggunakan fitur _yarn workspaces_ ' noHoist untuk menggunakan dependensi pihak ketiga yang tidak kompatibel yang bekerja di lingkungan monorepo. Anda harus menentukan ini di root proyek _package.json_. Untuk informasi lebih lanjut, lihat proyek demo ConnectDotz .

Di kedua acara tersebut, terima kasih sebelumnya atas tanggapan yang cepat. Kedengarannya tidak akan terjadi dalam waktu dekat jadi itulah jawaban yang saya cari !! Salam dan kerja bagus di npm7.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

millerick picture millerick  ·  3Komentar

dr-js picture dr-js  ·  3Komentar

darcyclarke picture darcyclarke  ·  4Komentar

FaizenR picture FaizenR  ·  3Komentar

ahuglajbclajep picture ahuglajbclajep  ·  3Komentar