In NixOS habe ich das Paket yarn
wie gewohnt durch Ausführen installiert $ nix-env -i yarn
. Jetzt versuche ich yarn
über zu rennen $ yarn start
. Dies führt mich jedoch zu folgendem Fehler.
$ 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.
Wenn ich versuche, webpack-dev-server
auf meine übliche NixOS-Weise zu installieren , wird der Fehler "Übereinstimmungen ohne Ableitungen" angezeigt.
$ nix-env -i webpack-dev-server
error: selector ‘webpack-dev-server’ matches no derivations
Ich habe gelesen, dass webpack-dev-server
es sich um ein npm-Paket handelt, und bin mir nicht sicher, ob dies in diesem Fall relevant ist.
- Ist es sinnvoll, npm, einen anderen Paketmanager als nix, unter Nix zu verwenden?
- Wenn die Antwort auf (1) Ja lautet, wie kann man dann npm unter NixOS installieren? Ich sehe npm nicht verfügbar bei der Suche über
nix-env
, da$ nix-env -qa npm
auch keine Ableitungen übereinstimmen.
Was ist der richtige Weg, um webpack-dev-server
unter NixOS zu installieren ?
BEARBEITEN
Ich habe versucht, über webpack-dev-server
den kommentierten Link zu installieren und konnte installieren node2nix
, kann jedoch Schritt 2, der in der dortigen Readme-Datei aufgeführt ist, nicht ausführen.
Ich habe die Datei, auf die in Schritt 2 verwiesen wird, /nix/store
unter gefunden
/nix/store/sgk7sxgqxrv2axkxjwc3y15apcqbrv1z-nixos-17.03.1482.1b57bf274a/nixos/pkgs/development/node-packages/node-packages.json
Ich kann diese Datei öffnen, um die aufgelisteten npm-Pakete anzuzeigen, aber die Berechtigungen sind schreibgeschützt und können sogar mit sudo ausgeführt werden. Daher müsste ich die Berechtigungen bearbeiten, um sie zu ändern.
Es scheint, dass ich diese /nix/store
Datei nicht direkt bearbeiten und stattdessen indirekt über nix bearbeiten sollte. Stimmt es, dass ich diese Datei nicht direkt bearbeiten sollte? Wenn ja, wie kann ich Schritt 2 sonst mit nix oder etwas anderem abschließen webpack-dev-server
?
/nix/store
ist schreibgeschützt. Sie müssen Git Repo klonen und-I nixpkgs=/path/to/repo
fürnix-*
Befehl verwendenAntworten:
Es gibt mehrere Möglichkeiten, npm-Pakete über nix zu verwenden:
Für meine persönlichen Projekte verwende ich
nix-shell
dann innerhalb der Shell npm-Skripte , um die Notwendigkeit globaler npm-Pakete (wie bei gulp) zu vermeiden. Der Prozess sieht ungefähr so aus (und ist für Garn wahrscheinlich sehr ähnlich):Dies funktioniert gut für mich, da keines meiner Pakete binäre Abhängigkeiten aufweist. Dieser Beitrag beschreibt die Erstellung einer default.nix für Ihr Projekt, sodass Sie nicht bei jedem Aufruf von nix-shell Abhängigkeiten angeben müssen, dies ist jedoch optional.
Eine andere Möglichkeit ist die Verwendung von npm2nix:
Dadurch verwaltet Nix alle npm-Pakete im Projekt.
Es kann eine gute Idee sein, sich mit nix-shell vertraut zu machen, da der Versuch, Knotenpakete / Abhängigkeiten in Ihrem nix-Profil (über nix-env oder nox) zu installieren, den Zweck von nix zunichte macht, indem der "globale" Namespace verschmutzt wird.
quelle
nodePackages_6_x.node-gyp
und alle anderen Bibliotheken wieblas
. Wenn alles zusammen ist, können Sienpm install ....
Pakete verwenden, die Node-Gyp verwenden.npm scripts
finde ich als Alternative zur Lösung das Hinzufügen globaler npm-Pakete zumnix-shell
effektiven, znix-shell -p nodejs-8_x nodePackages.grunt-cli
. (Warnung: Nixos und Node Noob hier.)bin
?npm install
, werden ausführbare Dateien mit verknüpftnode_modules/.bin
. Siehe hier .Aus irgendeinem Grund weiß ich nicht, dass sich nodePackages nicht im Root-Namespace befindet und nicht mit using gefunden werden kann
nix-env -qa
Verwenden Sie
nix-env -qaPA 'nixos.nodePackages'
diese Option, um verfügbare Pakete aufzulisten.Wenn Sie keine gewünschten Pakete wünschen und keine eigenen erstellen können , fordern Sie diese unter NixOS github an .
quelle
nix-env -f '<nixpkgs>' -qaPA nodePackages | grep tern
Als Alternative fand ich auch CMCDragonkais Kommentar zum Nixpkgs-Problem Nr. 3393 :
quelle