¿Cómo instalar paquetes npm en NixOS?

Pregunta:

En NixOS, instalé el paquete yarn como de costumbre ejecutando $ nix-env -i yarn . Ahora estoy intentando ejecutar yarn través de $ yarn start . Pero esto me lleva al siguiente error.

$ 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.

Cuando intento instalar webpack-dev-server en mi forma habitual de NixOS, aparece un error de "coincidencias sin derivaciones".

$ nix-env -i webpack-dev-server
error: selector ‘webpack-dev-server’ matches no derivations

Leí que webpack-dev-server es un paquete npm y no estoy seguro de un par de preguntas sobre la relevancia de eso en este caso.

  1. ¿Tiene sentido usar npm, un administrador de paquetes diferente a nix, bajo Nix?
  2. Si la respuesta a (1) es sí, ¿cómo instalar npm en NixOS? No veo npm disponible cuando busco a través de nix-env , ya que $ nix-env -qa npm tampoco coincide con derivaciones.

¿Cuál es la forma correcta de instalar webpack-dev-server en NixOS?


EDITAR

webpack-dev-server instalar webpack-dev-server siguiendo el enlace comentado y pude instalar node2nix , pero no puedo seguir el paso 2 enumerado en el archivo Léame allí.

Ubiqué el archivo al que se hace referencia en el paso 2 en /nix/store en

/nix/store/sgk7sxgqxrv2axkxjwc3y15apcqbrv1z-nixos-17.03.1482.1b57bf274a/nixos/pkgs/development/node-packages/node-packages.json

Puedo abrir ese archivo para ver los paquetes npm enumerados, pero los permisos son de solo lectura, incluso se ejecutan con sudo, por lo que necesitaría editar sus permisos para modificarlos.

Parece que no debería editar este archivo /nix/store directamente y, en su lugar, debería manipularlo indirectamente a través de nix. ¿Estoy en lo cierto en cuanto a que no debería editar este archivo directamente? Si es así, ¿de qué otra manera puedo completar el paso 2 usando nix o algo para agregarle webpack-dev-server ?

Respuesta:

Hay varias formas de usar paquetes npm a través de nix:

Para mis proyectos personales, uso nix-shell luego dentro del shell utilizo scripts npm para evitar la necesidad de paquetes globales npm (como con gulp). El proceso se parece a esto (y probablemente sea muy similar para el hilo):

$ 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

Esto funciona bien para mí ya que ninguno de mis paquetes tiene dependencias binarias. Esta publicación describe la creación de un archivo default.nix para su proyecto, por lo que no tendrá que especificar dependencias para cada invocación de nix-shell, pero es opcional.

Otra forma es usar npm2nix:

node2nix -i node-packages.json # creates ./default.nix
nix-shell # nix-shell will look for a default.nix, which above will have generated

Lo que hará que Nix administre todos los paquetes npm en el proyecto.

Puede ser una buena idea familiarizarse con nix-shell, ya que intentar instalar paquetes de nodo / cualquier dependencia en su perfil nix (a través de nix-env o nox) frustra el propósito de nix al contaminar el espacio de nombres "global".

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Ir arriba