<p>benang yang setara dengan npx ?</p>

Dibuat pada 15 Jul 2017  ·  35Komentar  ·  Sumber: yarnpkg/yarn

bagaimana benang merekomendasikan kami menggunakan npx (yang sekarang menjadi bagian inti dari npm - https://github.com/npm/npm/pull/17685).

Pada dasarnya, ini bertindak seperti "bundle exec" Ruby, selain itu meluncurkan manajer paket jika dependensi tidak ada. Ini akan menghindari benang dan beralih kembali ke npm.

Apakah ada rencana untuk membuat padanan "ypx" yang memanfaatkan benang untuk melakukan ini?

cat-feature

Komentar yang paling membantu

@sandys - Masalah yang dirujuk @zkat (npm/npm#6053) bukan masalah pada yarn karena Anda bisa melakukan yarn x (atau yarn run x jika Anda mau eksplisit) jika x ada di direktori ./node_modules/.bin . Jadi saya rasa tidak ada kebutuhan mendesak untuk kesetaraan npx .

Jika menurut Anda ada kebutuhan yang kuat, dapatkah Anda menjelaskan mengapa Anda membutuhkannya? Misalnya. masalah apa yang akan dipecahkannya untuk Anda?

Semua 35 komentar

Untuk apa nilainya, saya pikir npx terinspirasi oleh "buatan benang" yang serupa tetapi hanya berfungsi untuk paket yang diawali dengan "buat-". Tidak yakin apa rencananya di sini.

Yup, saat ini kami memiliki yarn create (coba gunakan yarn create react-app , misalnya). Kami mungkin membukanya untuk kata kerja lain di masa depan, tapi itu belum ada di peta jalan.

Saya sedang mengerjakan npx pengubah perpustakaan. Ini bukan tugas besar untuk mengambil kode npx yang ada dan hanya mengganti nyali terkait npm dengan perintah yang setara dengan benang.

Saya tidak akan menambahkannya secara langsung ke npx itu sendiri, karena _meant_ menjadi agnostik: npx tidak melakukan operasi yang berbenturan dengan orang yang menggunakan manajer paket lain. Itu bahkan tidak memerlukan npm untuk berada di sistem, jadi Anda dapat npm rm -g npm dan npx akan berfungsi dengan baik. Jadi Anda bisa mengatakan npx _is_ ypx , kecuali jika Anda merasa sangat yakin tentang berbagi cache, yang merupakan hal yang bagus.

(dalam inspirasi ulang: npx terutama terinspirasi oleh permintaan fitur lama ini: https://github.com/npm/npm/issues/6053. Sebagian besar fungsinya berpusat pada pemenuhan kebutuhan _ini_. Fitur pemasangan otomatis _was_ ditambahkan pasca-benang-membuat, dan pasti dimaksudkan untuk menjadi solusi umum yang sebenarnya untuk hal tertentu - tetapi itu _lebih banyak_ dari itu)

@sandys - Masalah yang dirujuk @zkat (npm/npm#6053) bukan masalah pada yarn karena Anda bisa melakukan yarn x (atau yarn run x jika Anda mau eksplisit) jika x ada di direktori ./node_modules/.bin . Jadi saya rasa tidak ada kebutuhan mendesak untuk kesetaraan npx .

Jika menurut Anda ada kebutuhan yang kuat, dapatkah Anda menjelaskan mengapa Anda membutuhkannya? Misalnya. masalah apa yang akan dipecahkannya untuk Anda?

Adakah yang tahu jika yarn exec mirip dengan bundle exec ? Saya melihatnya di CLI tetapi tidak di dokumen di situs web. Bermain cepat dengan yarn exec pada baris perintah sepertinya menjalankan binari yang diinstal sehingga dapat menyelesaikan masalah Anda @sandys.

FWIW, npm-run adalah utilitas lama yang memungkinkan seseorang menjalankan binari node_modules , dan itu tidak bergantung pada npm . Itu tidak memiliki opsi apa pun, sedangkan npx penuh dengan kenop.

@BYK Use case sedang berjalan misalnya ypx greenkeeper-lockfile@1 atau ypx danger@2 pada CI tanpa menambahkannya sebagai deps ke proyek itu sendiri

@SimenB CI biasanya tidak akan mengembalikan proyek ke kontrol versi, jadi tidak masalah jika itu menambahkan dependensi dalam proses, bukan?

@MarkBennett Karena yarn exec tidak menjalankan skrip dari package.json Saya rasa ini bukan tempat yang tepat untuk menambahkan fitur ini.

@BYK Saya bukan OP, tetapi saya datang ke permintaan fitur ini karena saya memiliki paket di mesin lokal saya tetapi tidak di package.json saya. Oleh karena itu aplikasi saya akan berjalan untuk saya, tetapi tidak untuk siapa pun yang melakukan instalasi bersih aplikasi saya. Ini adalah fitur bundle exec Ruby bundler yang saya suka - itu tidak akan berjalan kecuali semua deps ada dalam manifes.

Keluhan utama saya tentang yarn x adalah ia mencoba menyelesaikan target dari 3 (tiga) tempat berbeda: perintah internal benang, skrip npm, dan tempat sampah.

Katakanlah saya memiliki alat dengan biner bernama check : 1) yarn check akan menjalankan perintah internal check sebagai gantinya 2) yarn run check akan menjalankan npm konsumen skrip dengan nama seperti itu atau mungkin alat saya.

npx memberikan pemisahan konsep yang kuat: yarn x selalu merupakan perintah internal, yarn run x selalu berupa skrip, dan npx x selalu berupa biner, tidak perlu untuk menebak dan berharap.

sesuatu seperti inti

#!/usr/bin/env bash

package_name=$1
temp_dir="/tmp/ypx/$package_name/$(date +%s%N)"
mkdir -p $temp_dir
(cd $temp_dir; yarn add $package_name) && (PATH="$temp_dir/node_modules/.bin":$PATH; "$@")
rm -rf $temp_dir

@BYK kasus penggunaan lain menjalankan _binary_ dari paket yang belum diinstal secara lokal dan saya ingin menjalankannya satu kali, tanpa repot-repot menghapusnya sendiri setelahnya. Fungsi npx adalah perpanjangan dari perilaku yarn x karena Anda dapat:

  1. jalankan perintah paket lokal di ./node_modules/.bin/ di direktori saat ini
  2. jika paket tidak ada secara lokal ATAU direktori ./node_modules/ tidak ada, unduh paket di direktori sementara dengan dependensinya dan jalankan perintah

ini dilakukan secara transparan kepada pengguna.

ypx hipotetis juga dapat menawarkan poin ketiga yaitu:

  1. jika paket tidak ada secara lokal DAN ada di cache yarn DAN cocok dengan versi terbaru, jalankan perintah menggunakan cache alih-alih mengunduh semua paket

@BYK Tidak berfungsi.
Instal babel-cli misalnya: yarn add babel-cli
Kemudian jalankan yarn babel-node --presets es2015 ./server.js yang server.js adalah file di direktori saat ini dan merupakan server api express .
Itu tidak berfungsi dan mengatakan bahwa file tersebut tidak ada. ( Error: Cannot find module )
Tetapi menggunakannya dengan npx berfungsi npx babel-node --presets es2015 ./server.js

@BYK sejauh yang saya tahu npx akan mencari perintah Anda di node_module/.bin/ di mesin lokal dan jika tidak menemukan perintah yang tepat, ia akan mendapatkan paket dari web jika ada dan Anda dapat selalu up to date .
benang tidak mendapatkan paket dari web saat tidak diinstal pada mesin lokal.

Bisakah kita mendapatkan yarnx ?

@light24bulbs mengapa khususnya?

Terus terang saya pikir npx adalah alat yang bagus meskipun agak terlalu "npm inc."-centric (seperti banyak alat npm, untuk bersikap adil). A yarnx tidak akan menyelesaikan masalah ini (itu pasti akan menjadi benang-sentris), jadi saya tidak terlalu yakin itu akan menjadi ide yang bagus.

Idealnya, saya lebih suka npx untuk secara otomatis mendeteksi manajer paket yang akan digunakan, atau setidaknya mengizinkan konfigurasinya di dalam file rc. Saya akan menyarankan untuk membawa masalah ini kepada mereka dan melihat apa yang mereka katakan. Bergantung pada jawaban mereka, kami kemudian dapat melakukan diskusi yang terinformasi

@arcanis npx sendiri digabungkan dengan npm karena dibundel dengan npm -- libnpx tidak, dan faktanya, itulah yang digunakan pnpx dari pnpm di bawah tenda. Saya menambahkan beberapa tambalan untuk memungkinkan Zoltan. Saya tidak akan menambahkan dukungan deteksi otomatis karena menghapus beberapa integrasi dan membuat segalanya lebih rumit dan lebih sulit untuk didukung :)

Baru saja mencari masalah ini di Google dan saya pikir ini adalah tempat yang tepat untuk bertanya tentang pembaruan apa pun. Apakah ada alat/solusi yang ada, atau berencana untuk menambahkan beberapa fungsi ke benang?
Misalnya masalah saya saat ini dengan npx adalah:

  1. itu mengunduh paket yang tidak ada dengan dependensi setiap saat,
  2. itu menciptakan package-lock.json dalam proyek berorientasi Benang yang menyebabkan peringatan dan perlu menghapusnya dengan tangan.
    (khususnya saya baru saja menjalankan npx gatsby new blog https://github.com/gatsbyjs/gatsby-starter-blog )

Kedua masalah ini sepertinya cocok untuk diselesaikan untuk benang seperti @phra yang sudah disebutkan sebagai poin ketiganya.

UPD: Jadi pada dasarnya alasan utama untuk ypx saya sebutkan bukanlah eksekusi biner (yang benar-benar baik-baik saja dengan benang), tetapi kemampuan untuk mengunduh paket secara otomatis yang ingin saya jalankan.

Saya setuju. Saya juga berpikir ada peluang untuk meningkatkan API aneh NPM
sedikit. Saya pikir menelepon yarn exec COMMAND akan lebih masuk akal daripada
yarnx . Bundel Ruby memiliki perintah yang sangat mirip
https://bundler.io/man/bundle-exec.1.html

Pada Senin, 17 Des 2018 pukul 14:29 Pavel Prokudin [email protected]
menulis:

Baru saja googling masalah ini dan saya pikir ini tempat yang tepat untuk bertanya
pembaruan apa pun. Apakah ada alat/solusi yang ada, atau berencana untuk menambahkan beberapa
fungsi untuk benang?
Misalnya masalah saya saat ini dengan npx adalah:

  1. itu mengunduh paket yang tidak ada dengan dependensi setiap saat,
  2. itu menciptakan package-lock.json dalam proyek berorientasi Benang yang menyebabkan
    peringatan dan perlu untuk menghapusnya dengan tangan.
    (khususnya saya baru saja menjalankan npx gatsby blog baru
    https://github.com/gatsbyjs/gatsby-starter-blog)

Kedua masalah ini terlihat seperti pasangan yang cocok untuk diselesaikan untuk benang seperti @phra
https://github.com/phra sudah menyebutkan sebagai poin ketiganya.


Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/yarnpkg/yarn/issues/3937#issuecomment-447968558 , atau bisu
benang
https://github.com/notifications/unsubscribe-auth/AAjhEng6juvpaK4xLx1KrVHccJAytnAfks5u5_CcgaJpZM4OY9aL
.

--
-Forrest

yarn exec sudah ada (dengan arti yang berbeda dari yang Anda sarankan)

Apakah yarn dlx menyelesaikan masalah ini?

cc @sandys @arcanis

https://yarnpkg.github.io/berry/cli/dlx

Ya! Menutup masalah ini untuk saat ini, saya belum mengetahui apakah kami ingin mem-backport fitur ke v1 (mungkin tidak?).

Saya tidak yakin itu pengganti yang layak. yarn dlx eslint --help membutuhkan 2,7 detik di mesin saya sementara npx eslint --help selesai dalam 0,2 detik. Jika seseorang memanggil banyak skrip bin, ini akan dengan cepat menambah nilai yang tidak dapat diterima.

Juga, saya pikir stdout/stderr tidak boleh ditulis dengan benang kecuali ada kesalahan, untuk memungkinkan penguraian keluaran skrip.

@silverwind perbedaan waktu tampaknya cukup mencolok. Apakah ini dapat direproduksi dalam banyak proses secara konsisten? Jika ya, saya akan mengajukan masalah baru untuk diselidiki karena kami pasti tidak ingin itu lambat.

Mengenai stdout/stderr dari Benang, saya _think_ Anda dapat menggunakan yarn --silend dlx eslint untuk menekan semua keluaran Benang non-kritis. @arcanis dapatkah Anda mengkonfirmasi yang terakhir ini?

@light24bulbs mengapa khususnya?

Untuk semua orang yang menemukan beberapa paket di web, lihat bahwa instruksi instalasi melibatkan npx something something , tetapi ingin tetap berada di dunia benang.

Apakah yarn dlx menyelesaikan masalah ini?

Apakah yarn dlx an tepat s/npx/yarn dlx/ drop-in pengganti npx ? Jika tidak, maka itu tidak menyelesaikan masalah ini.

pembuatan benang & npx & npm init

demo

https://www.npmjs.com/package/create-react-app

$ yarn create react-app

$ npx create-react-app

$ npm init react-app

image

https://www.npmtrends.com/npm-vs-npx-vs-yarn

image

@light24bulbs - untuk menggemakan @rulatir , saya sampai di sini karena panduan memulai cepat Storybook mengatakan untuk menggunakan npx untuk menginstalnya , dan saya tidak memiliki resep mudah untuk cara mengucapkan mantra yang setara dengan yarn . Jika ada serangkaian perintah yang setara untuk benang, kita harus mempostingnya di situs web benang, sehingga halaman tersebut (bukan utas ini) berada di bagian atas hasil pencarian google untuk "versi benang npx".

Saya juga senasib dengan @codekiln. Setiap kali saya mengikuti beberapa instruksi yang mengatakan run npx ... , saya tidak tahu apa yang setara dengan yarn . Contohnya adalah npx tslint-to-eslint-config .

@light24bulbs - untuk menggemakan @rulatir , saya sampai di sini karena panduan memulai cepat Storybook mengatakan untuk menggunakan npx untuk menginstalnya , dan saya tidak memiliki resep mudah untuk cara mengucapkan mantra yang setara dengan yarn . Jika ada serangkaian perintah yang setara untuk benang, kita harus mempostingnya di situs web benang, sehingga halaman tersebut (bukan utas ini) berada di bagian atas hasil pencarian google untuk "versi benang npx".

Sama di sini, dengan panduan pemasangan kapasitorjs https://capacitorjs.com/docs/getting-started , perasaan ini meyakinkan pengguna untuk meninggalkan benang dan kembali ke npm

https://yarnpkg.com/en/docs/cli/exec

404 halaman tidak ditemukan

Saya kira @delanym berarti halaman ini (tapi saya rasa ini tidak mereplikasi npx ): https://yarnpkg.com/cli/exec

Apakah halaman ini membantu?
0 / 5 - 0 peringkat