Di NixOS, saya menginstal paket yarn
seperti biasa dengan menjalankan $ nix-env -i yarn
. Sekarang saya mencoba untuk menjalankan yarn
via $ 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 seperti biasa, saya mendapatkan kesalahan 'cocok tanpa derivasi'.
$ nix-env -i webpack-dev-server
error: selector ‘webpack-dev-server’ matches no derivations
Saya membaca bahwa itu webpack-dev-server
adalah paket npm, dan tidak yakin beberapa pertanyaan mengenai relevansi paket tersebut dalam kasus ini.
- Apakah masuk akal untuk menggunakan npm, manajer paket berbeda dari nix, di bawah Nix?
- Jika jawaban (1) adalah ya, lalu bagaimana cara menginstal npm di NixOS? Saya tidak melihat npm tersedia saat mencari melalui
nix-env
,$ nix-env -qa npm
juga tidak cocok dengan derivasi.
Apa cara yang benar untuk menginstal webpack-dev-server
di NixOS?
EDIT
Saya mencoba untuk menginstal webpack-dev-server
mengikuti tautan yang dikomentari dan dapat menginstal node2nix
, tetapi saya tidak dapat melanjutkan pada langkah 2 yang tercantum dalam readme di sana.
Saya menemukan file yang dirujuk pada langkah 2 di /nix/store
pada
/nix/store/sgk7sxgqxrv2axkxjwc3y15apcqbrv1z-nixos-17.03.1482.1b57bf274a/nixos/pkgs/development/node-packages/node-packages.json
Saya dapat membuka file itu untuk melihat paket-paket npm yang terdaftar, tetapi izinnya hanya-baca, bahkan berjalan dengan sudo - jadi saya perlu mengedit izinnya untuk mengubahnya.
Tampaknya saya tidak boleh mengedit /nix/store
file ini secara langsung dan sebagai gantinya harus memanipulasi secara tidak langsung melalui nix. Apakah saya benar bahwa saya tidak boleh mengedit file ini secara langsung? Jika demikian, bagaimana lagi saya bisa menyelesaikan langkah 2 dengan menggunakan nix atau sesuatu untuk ditambahkan webpack-dev-server
?
/nix/store
hanya baca. Anda perlu clone git repo dan penggunaan-I nixpkgs=/path/to/repo
untuknix-*
perintahJawaban:
Ada beberapa cara untuk menggunakan paket npm melalui nix:
Untuk proyek pribadi saya, saya gunakan
nix-shell
kemudian di dalam shell saya menggunakan skrip npm untuk mencegah perlunya paket global npm (seperti dengan tegukan). Prosesnya terlihat seperti ini (dan mungkin sangat mirip untuk benang):Ini berfungsi baik untuk saya karena tidak ada paket saya yang memiliki dependensi biner. Posting ini menjelaskan pembuatan default.nix untuk proyek Anda sehingga Anda tidak perlu menentukan dependensi untuk setiap doa nix-shell, tetapi bersifat opsional.
Cara lain menggunakan npm2nix:
Yang akan menyebabkan Nix mengelola semua paket npm di proyek.
Mungkin menjadi ide yang baik untuk mengenal nix-shell, karena mencoba menginstal paket node / ketergantungan pada profil nix Anda (melalui nix-env atau nox) mengalahkan tujuan nix dengan mengotori namespace "global".
sumber
nodePackages_6_x.node-gyp
, dan pustaka lain sepertiblas
, maka ketika itu semua bersama-sama, Anda dapat menggunakannpm install ....
paket yang menggunakan node-gyp.npm scripts
solusi, saya menemukan menambahkan paket global npm ke yangnix-shell
efektif, misalnyanix-shell -p nodejs-8_x nodePackages.grunt-cli
. (Peringatan: nixos dan simpul noob di sini.)bin
berakhir?npm install
, executable akan ditautkan kenode_modules/.bin
. Lihat di sini .Untuk beberapa alasan saya tidak tahu, nodePackages tidak ada di root namespace dan tidak dapat ditemukan dengan menggunakan
nix-env -qa
gunakan
nix-env -qaPA 'nixos.nodePackages'
untuk mendaftar untuk paket yang tersedia.Jika tidak ada paket yang Anda inginkan dan Anda tidak bisa membuatnya, coba minta di NixOS github .
sumber
nix-env -f '<nixpkgs>' -qaPA nodePackages | grep tern
Sebagai alternatif, saya juga menemukan komentar CMCDragonkai tentang masalah Nixpkgs # 3393 :
sumber