GNU/Linux >> Linux Esercitazione >  >> Linux

Come installare i pacchetti Npm in Nixos?

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.

  1. Ha senso usare npm, un gestore di pacchetti diverso da nix,
    sotto Nix?
  2. Se la risposta a (1) è sì, come installare npm su NixOS? Non
    vedo npm disponibile durante la ricerca tramite nix-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".


Linux
  1. Come installare pacchetti da un repository specifico in Linux

  2. Come gestire i pacchetti NodeJS usando Npm

  3. Come installare pacchetti software con un playbook Ansible

  4. Come installare il filato su Ubuntu 20.04?

  5. Come installare i pacchetti RPM su Ubuntu

Come installare Anaconda su Linux

Come installare i pacchetti in Atom Text Editor

Come installare gli ultimi NodeJS e NPM in Linux

Come installare ReactJS su Debian 11

Come installare ReactJS su CentOS 8

Come installare `build-essential` in `Cygwin`?