GNU/Linux >> Tutoriels Linux >  >> Linux

Comment installer les packages NPM dans Nixos ?

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.

  1. Est-il judicieux d'utiliser npm, un gestionnaire de packages différent de nix,
    sous Nix ?
  2. Si la réponse à (1) est oui, alors comment installer npm sur NixOS ? Je ne
    vois pas npm disponible lors de la recherche via nix-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".


Linux
  1. Comment installer des packages à partir d'un référentiel spécifique sous Linux

  2. Comment gérer les packages NodeJS à l'aide de Npm

  3. Comment installer des packages logiciels avec un playbook Ansible

  4. Comment installer React sur Ubuntu 20.04

  5. Comment installer Yarn sur Ubuntu 20.04 ?

Comment installer Anaconda sur Linux

Comment installer des packages dans l'éditeur de texte Atom

Comment installer les derniers NodeJS et NPM sous Linux

Comment installer ReactJS sur Debian 11

Comment installer ReactJS sur CentOS 8

Comment installer `build-essential` dans `Cygwin` ?