Di NixOS, saya menginstal paket yarn
seperti biasa dengan menjalankan $ nix-env -i yarn
. Sekarang saya mencoba menjalankan yarn
melalui $ yarn start
. Tapi ini membawa saya ke kesalahan berikut.
$ yarn start
yarn start v0.20.3
$ webpack-dev-server --env dev
sh: webpack-dev-server: command not found
error Command failed with exit code 127.
Ketika saya mencoba menginstal webpack-dev-server
dengan cara NixOS saya yang biasa, saya mendapatkan kesalahan 'tidak cocok dengan derivasi'.
$ nix-env -i webpack-dev-server
error: selector ‘webpack-dev-server’ matches no derivations
Saya membaca webpack-dev-server
adalah paket npm, dan saya tidak yakin dengan beberapa pertanyaan terkait relevansinya dalam kasus ini.
- Apakah masuk akal untuk menggunakan npm, pengelola paket yang berbeda dari nix,
di bawah Nix? - Jika jawaban (1) ya, lalu bagaimana cara menginstal npm di NixOS? Saya tidak
melihat npm tersedia saat mencari melaluinix-env
, sebagai$ nix-env -qa npm
juga tidak cocok dengan turunan.
Bagaimana cara yang benar untuk menginstal webpack-dev-server
di NixOS?
EDIT
Saya mencoba menginstal webpack-dev-server
mengikuti tautan yang dikomentari dan dapat menginstal node2nix
, tetapi saya tidak dapat mengikuti langkah 2 yang tercantum dalam readme di sana.
Saya menemukan file yang dirujuk pada langkah 2 di /nix/store
di
//eadn-wc01-5196795.nxedge.io/nix/store/sgk7sxgqxrv2axkxjwc3y15apcqbrv1z-nixos-17.03.1482.1b57bf274a/nixos/pkgs/development/node-packages/node-packages.json
Saya dapat membuka file itu untuk melihat paket npm yang terdaftar, tetapi izinnya hanya-baca, bahkan dijalankan dengan sudo — jadi saya perlu mengedit izinnya untuk mengubahnya.
Sepertinya saya tidak boleh mengedit /nix/store
ini file secara langsung dan sebagai gantinya harus memanipulasinya secara tidak langsung melalui nix. Apakah saya benar bahwa saya tidak seharusnya mengedit file ini secara langsung? Jika demikian, bagaimana lagi saya bisa menyelesaikan langkah 2 dengan menggunakan nix atau sesuatu untuk menambahkan webpack-dev-server
untuk itu?
Jawaban yang Diterima:
Ada beberapa cara untuk menggunakan paket npm melalui nix:
Untuk proyek pribadi saya, saya menggunakan nix-shell
kemudian di dalam Shell saya menggunakan skrip npm untuk mencegah kebutuhan akan paket global npm (seperti dengan tegukan). Prosesnya terlihat seperti ini (dan mungkin sangat mirip dengan benang):
$ nix-shell -p nodejs-8_x
[nix-shell:yourproject]$ npm install # installs npm deps to project-local node_modules
[nix-shell:yourproject]$ npm exec (...) # using scripts configured in package.json
Ini berfungsi dengan baik untuk saya karena tidak ada paket saya yang memiliki dependensi biner. Postingan ini menjelaskan pembuatan default.nix untuk proyek Anda sehingga Anda tidak perlu menentukan dependensi untuk setiap pemanggilan nix-shell, tetapi ini opsional.
Cara lain adalah menggunakan npm2nix:
node2nix -i node-packages.json # creates ./default.nix
nix-shell # nix-shell will look for a default.nix, which above will have generated
Yang akan menyebabkan Nix mengelola semua paket npm dalam proyek.
Terkait:Listrik – Bagaimana cara menyambungkan sakelar lampu wifi dengan kabel yang tidak sesuai dengan petunjuk pemasangan?Ini mungkin ide yang baik untuk menjadi akrab dengan nix-shell, karena mencoba menginstal paket node / ketergantungan apa pun di profil nix Anda (melalui nix-env atau nox) mengalahkan tujuan nix dengan mencemari namespace "global".