Sous NixOS, j'ai installé le package yarn
comme d'habitude en exécutant $ nix-env -i yarn
. Maintenant, j'essaie d'exécuter yarn
via $ yarn start
. Mais cela m'amène à l'erreur suivante.
$ 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.
Lorsque j'essaie d'installer webpack-dev-server
de ma manière NixOS habituelle, j'obtiens une erreur "ne correspond à aucune dérivation".
$ nix-env -i webpack-dev-server
error: selector ‘webpack-dev-server’ matches no derivations
J'ai lu que webpack-dev-server
est un package npm, et je ne suis pas sûr de quelques questions concernant la pertinence de cela dans ce cas.
- Est-il judicieux d'utiliser npm, un gestionnaire de packages différent de nix,
sous Nix ? - Si la réponse à (1) est oui, alors comment installer npm sur NixOS ? Je ne
vois pas npm disponible lors de la recherche vianix-env
, comme$ nix-env -qa npm
ne correspond également à aucune dérivation.
Quelle est la bonne façon d'installer webpack-dev-server
sur NixOS ?
MODIFIER
J'ai essayé d'installer webpack-dev-server
suivant le lien commenté et a pu installer node2nix
, mais je ne suis pas en mesure de suivre l'étape 2 répertoriée dans le fichier Lisez-moi.
J'ai localisé le fichier référencé à l'étape 2 dans /nix/store
à
//eadn-wc01-5196795.nxedge.io/nix/store/sgk7sxgqxrv2axkxjwc3y15apcqbrv1z-nixos-17.03.1482.1b57bf274a/nixos/pkgs/development/node-packages/node-packages.json
Je peux ouvrir ce fichier pour afficher les packages npm répertoriés, mais les autorisations sont en lecture seule, même en cours d'exécution avec sudo - donc je devrais modifier ses autorisations afin de le modifier.
Il semble que je ne devrais pas éditer ce /nix/store
fichier directement et devrait plutôt le manipuler indirectement via nix. Ai-je raison de ne pas modifier ce fichier directement ? Si oui, comment puis-je compléter l'étape 2 en utilisant nix ou quelque chose pour ajouter webpack-dev-server
à elle ?
Réponse acceptée :
Il existe plusieurs façons d'utiliser les packages npm via nix :
Pour mes projets personnels, j'utilise nix-shell
puis dans le shell, j'utilise des scripts npm pour éviter d'avoir besoin de packages globaux npm (comme avec gulp). Le processus ressemble à ceci (et est probablement très similaire pour le fil):
$ 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
Cela fonctionne bien pour moi car aucun de mes packages n'a de dépendances binaires. Cet article décrit la création d'un default.nix pour votre projet afin que vous n'ayez pas à spécifier de dépendances pour chaque invocation de nix-shell, mais c'est facultatif.
Une autre méthode consiste à utiliser npm2nix :
node2nix -i node-packages.json # creates ./default.nix
nix-shell # nix-shell will look for a default.nix, which above will have generated
Ce qui obligera Nix à gérer tous les packages npm du projet.
Connexe :Électrique - Comment câbler un interrupteur d'éclairage wifi avec un câblage qui ne correspond pas aux instructions d'installation ?Il peut être judicieux de se familiariser avec nix-shell, car essayer d'installer des packages de nœuds / toute dépendance dans votre profil nix (via nix-env ou nox) va à l'encontre de l'objectif de nix en polluant l'espace de noms "global".