En NixOS, instalé el paquete yarn
como de costumbre al ejecutarlo $ nix-env -i yarn
. Ahora estoy intentando ejecutar yarn
vía $ 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 trato de instalar webpack-dev-server
en mi forma habitual de NixOS, aparece un error de "coincide 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, en Nix?
- Si la respuesta a (1) es sí, ¿cómo instalar npm en NixOS? No veo npm disponible al buscar 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
Intenté instalar webpack-dev-server
siguiendo el enlace comentado y pude instalarlo node2nix
, pero no puedo seguir el paso 2 que figura en el archivo Léame allí.
Localicé el archivo referenciado en el paso 2 en /nix/store
por lo
/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 editar este /nix/store
archivo directamente y debería manipularlo indirectamente a través de nix. ¿Estoy en lo cierto de 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 agregar webpack-dev-server
?
/nix/store
es de solo lectura.-I nixpkgs=/path/to/repo
nix-*
Respuestas:
Hay múltiples formas de usar paquetes npm a través de nix:
Para mis proyectos personales, utilizo
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):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, por lo que no tendrá que especificar dependencias para cada invocación de nix-shell, pero es opcional.
Otra forma es usar npm2nix:
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 de nix (a través de nix-env o nox) anula el propósito de nix al contaminar el espacio de nombres "global".
fuente
nodePackages_6_x.node-gyp
bibliotecas, y cualquier otra, comoblas
, entonces, cuando está todo junto, puede usarnpm install ....
paquetes que usan node-gyp.npm scripts
solución, encuentro agregar paquetes globales npm a losnix-shell
efectivos, por ejemplonix-shell -p nodejs-8_x nodePackages.grunt-cli
. (Advertencia: nixos y novato de nodo aquí.)bin
?npm install
, los ejecutables se vincularán anode_modules/.bin
. Ver aquí .Por alguna razón no lo sé, nodePackages no está en el espacio de nombres raíz y no se puede encontrar usando
nix-env -qa
use
nix-env -qaPA 'nixos.nodePackages'
para enumerar los paquetes disponibles.Si no hay paquetes que desea y no puede crear uno propio, intente solicitarlo en NixOS github .
fuente
nix-env -f '<nixpkgs>' -qaPA nodePackages | grep tern
Como alternativa, también encontré el comentario de CMCDragonkai sobre el tema Nixpkgs # 3393 :
fuente