En NixOS, instalé el paquete yarn
como de costumbre ejecutando $ nix-env -i yarn
. Ahora estoy intentando ejecutar yarn
a 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 obtengo 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.
- ¿Tiene sentido usar npm, un administrador de paquetes diferente a nix,
bajo Nix? - Si la respuesta a (1) es afirmativa, ¿cómo instalar npm en NixOS? No
veo npm disponible cuando busco a través denix-env
, como$ nix-env -qa npm
tampoco coincide con ninguna derivación.
¿Cuál es la forma correcta de instalar webpack-dev-server
? en NixOS?
EDITAR
Intenté instalar webpack-dev-server
siguiendo el enlace comentado y pude instalar node2nix
, pero no puedo continuar con el paso 2 que aparece en el archivo Léame allí.
Localicé el archivo al que se hace referencia en el paso 2 en /nix/store
en
//eadn-wc01-5196795.nxedge.io/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 modificarlo.
Parece que no debería estar editando este /nix/store
file directamente y, en cambio, debería manipularlo indirectamente a través de nix. ¿Tengo razón en que no debería editar este archivo directamente? Si es así, ¿de qué otra forma puedo completar el paso 2 usando nix o algo así para agregar webpack-dev-server
? a eso?
Respuesta aceptada:
Hay varias formas de usar paquetes npm a través de nix:
Para mis proyectos personales, uso nix-shell
luego, dentro del shell, uso 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 default.nix para su proyecto para que no tenga que especificar dependencias para cada invocación de nix-shell, pero es opcional.
Otra forma es usando 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.
Relacionado:Eléctrico:¿cómo cablear un interruptor de luz wifi con un cableado que no coincide con las instrucciones de instalación?Puede ser una buena idea familiarizarse con nix-shell, ya que intentar instalar paquetes de nodos/cualquier dependencia en su perfil de nix (a través de nix-env o nox) anula el propósito de nix al contaminar el espacio de nombres "global".