In NixOS ho installato il pacchetto yarn
come al solito eseguendo $ nix-env -i yarn
. Ora sto tentando di eseguire yarn
tramite $ yarn start
. Ma questo mi porta al seguente errore.
$ 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.
Quando provo a installare webpack-dev-server
nel mio solito modo NixOS ottengo un errore "non corrisponde a derivazioni".
$ nix-env -i webpack-dev-server
error: selector ‘webpack-dev-server’ matches no derivations
Ho letto quel webpack-dev-server
è un pacchetto npm e non sono sicuro di un paio di domande sulla rilevanza di questo in questo caso.
- Ha senso usare npm, un gestore di pacchetti diverso da nix,
sotto Nix? - Se la risposta a (1) è sì, come installare npm su NixOS? Non
vedo npm disponibile durante la ricerca tramitenix-env
, come$ nix-env -qa npm
inoltre non corrisponde a nessuna derivazione.
Qual è il modo corretto per installare webpack-dev-server
su NixOS?
MODIFICA
Ho tentato di installare webpack-dev-server
seguendo il link commentato ed è stato in grado di installare node2nix
, ma non sono in grado di seguire il passaggio 2 elencato nel file readme.
Ho individuato il file a cui si fa riferimento nel passaggio 2 in /nix/store
a
//eadn-wc01-5196795.nxedge.io/nix/store/sgk7sxgqxrv2axkxjwc3y15apcqbrv1z-nixos-17.03.1482.1b57bf274a/nixos/pkgs/development/node-packages/node-packages.json
Posso aprire quel file per visualizzare i pacchetti npm elencati, ma le autorizzazioni sono di sola lettura, anche in esecuzione con sudo, quindi dovrei modificarne le autorizzazioni per modificarlo.
Sembra che non dovrei modificare questo /nix/store
file direttamente e dovrebbe invece manipolarlo indirettamente tramite nix. Ho ragione sul fatto che non dovrei modificare questo file direttamente? In tal caso, in quale altro modo posso completare il passaggio 2 utilizzando nix o qualcosa per aggiungere webpack-dev-server
ad esso?
Risposta accettata:
Esistono diversi modi per utilizzare i pacchetti npm tramite nix:
Per i miei progetti personali, utilizzo nix-shell
quindi all'interno della shell utilizzo gli script npm per evitare la necessità di pacchetti globali npm (come con gulp). Il processo è simile a questo (ed è probabilmente molto simile per il filato):
$ 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
Questo funziona bene per me poiché nessuno dei miei pacchetti ha dipendenze binarie. Questo post descrive la creazione di un default.nix per il tuo progetto, quindi non dovrai specificare dipendenze per ogni chiamata di nix-shell, ma è facoltativo.
Un altro modo è usare npm2nix:
node2nix -i node-packages.json # creates ./default.nix
nix-shell # nix-shell will look for a default.nix, which above will have generated
Ciò farà sì che Nix gestisca tutti i pacchetti npm nel progetto.
Correlati:Elettrico - Come cablare un interruttore della luce wifi con un cablaggio che non corrisponde alle istruzioni di installazione?Potrebbe essere una buona idea acquisire familiarità con nix-shell, dal momento che provare a installare pacchetti di nodi/qualsiasi dipendenza nel tuo profilo nix (tramite nix-env o nox) vanifica lo scopo di nix inquinando lo spazio dei nomi "globale".