Dans NixOS, j'ai installé le package yarn
comme d'habitude en exécutant $ nix-env -i yarn
. Maintenant, j'essaie de courir 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 la manière habituelle NixOS, 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 qu'il webpack-dev-server
s'agit d'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 de npm disponible lors de la recherche via
nix-env
, car$ nix-env -qa npm
ne correspond également à aucune dérivation.
Quelle est la bonne façon d'installer webpack-dev-server
sur NixOS?
ÉDITER
J'ai essayé d'installer en webpack-dev-server
suivant le lien commenté et j'ai 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
à
/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 - j'ai donc besoin de modifier ses autorisations afin de le modifier.
Il semble que je ne devrais pas éditer ce /nix/store
fichier directement et plutôt le manipuler indirectement via nix. Ai-je raison de ne pas modifier directement ce fichier? Si oui, comment puis-je terminer l'étape 2 en utilisant nix ou quelque chose pour y ajouter webpack-dev-server
?
/nix/store
est en lecture seule. Vous devez cloner git repo et utiliser-I nixpkgs=/path/to/repo
pour lanix-*
commandeRéponses:
Il existe plusieurs façons d'utiliser les packages npm via nix:
Pour mes projets personnels, j'utilise
nix-shell
ensuite 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):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, vous n'aurez donc pas à spécifier de dépendances pour chaque invocation de nix-shell, mais c'est facultatif.
Une autre façon utilise npm2nix:
Ce qui amènera Nix à gérer tous les packages npm du projet.
Ce peut être une bonne idée 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".
la source
nodePackages_6_x.node-gyp
, et de toutes les autres bibliothèques commeblas
, alors quand tout est ensemble, vous pouvez utiliser desnpm install ....
packages qui utilisent node-gyp.npm scripts
solution, je trouve que l’ajout de packages globaux npm à l’nix-shell
effectif, par exemplenix-shell -p nodejs-8_x nodePackages.grunt-cli
. (Avertissement: nixos et noeud noob ici.)bin
?npm install
, les exécutables seraient liésnode_modules/.bin
. Voyez ici .Pour une raison que je ne sais pas, nodePackages n'est pas dans l'espace de noms racine et ne peut pas être trouvé en utilisant
nix-env -qa
utiliser
nix-env -qaPA 'nixos.nodePackages'
pour lister les paquets disponibles.S'il n'y a pas de packages que vous souhaitez et que vous ne pouvez pas créer les vôtres, essayez de le demander sur NixOS github .
la source
nix-env -f '<nixpkgs>' -qaPA nodePackages | grep tern
Comme alternative, j'ai également trouvé le commentaire de CMCDragonkai sur le problème Nixpkgs # 3393 :
la source