In NixOS habe ich das Paket yarn
installiert wie gewohnt durch Ausführen von $ nix-env -i yarn
. Jetzt versuche ich, yarn
auszuführen über $ yarn start
. Aber das führt mich 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
zu installieren Auf meine übliche NixOS-Weise erhalte ich die Fehlermeldung „Übereinstimmung mit keinen Ableitungen“.
$ nix-env -i webpack-dev-server
error: selector ‘webpack-dev-server’ matches no derivations
Ich habe diesen webpack-dev-server
gelesen ist ein npm-Paket und bin mir bei einigen Fragen zur Relevanz in diesem Fall nicht sicher.
- Ist es sinnvoll, npm, einen anderen Paketmanager als nix,
unter Nix zu verwenden? - Wenn Antwort auf (1) ja ist, wie installiere ich dann npm auf NixOS? Ich sehe npm nicht
verfügbar, wenn ich übernix-env
suche , als$ nix-env -qa npm
stimmt auch mit keinen Ableitungen überein.
Wie installiere ich webpack-dev-server
richtig? auf NixOS?
BEARBEITEN
Ich habe versucht, webpack-dev-server
zu installieren dem kommentierten Link gefolgt und konnte node2nix
installieren , aber ich kann Schritt 2, der dort in der Readme-Datei aufgeführt ist, nicht ausführen.
Ich habe die Datei, auf die in Schritt 2 verwiesen wird, in /nix/store
gefunden bei
//eadn-wc01-5196795.nxedge.io/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, sogar wenn sie mit sudo ausgeführt werden – also müsste ich ihre Berechtigungen bearbeiten, um sie zu ändern.
Es scheint, dass ich diesen /nix/store
nicht bearbeiten sollte Datei direkt und sollte stattdessen indirekt über nix manipuliert werden. Habe ich Recht, dass ich diese Datei nicht direkt bearbeiten sollte? Wenn ja, wie kann ich sonst Schritt 2 abschließen, indem ich nix oder etwas verwende, um webpack-dev-server
hinzuzufügen dazu?
Akzeptierte Antwort:
Es gibt mehrere Möglichkeiten, npm-Pakete über nix zu verwenden:
Für meine persönlichen Projekte verwende ich nix-shell
dann verwende ich innerhalb der Shell npm-Skripte, um die Notwendigkeit globaler npm-Pakete zu verhindern (wie bei gulp). Der Prozess sieht in etwa so aus (und ist wahrscheinlich für Garn sehr ähnlich):
$ 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
Dies funktioniert gut für mich, da keines meiner Pakete binäre Abhängigkeiten hat. Dieser Beitrag beschreibt die Erstellung einer default.nix für Ihr Projekt, sodass Sie nicht für jeden Aufruf von Nix-Shell Abhängigkeiten angeben müssen, aber es ist optional.
Eine andere Möglichkeit ist die Verwendung von npm2nix:
node2nix -i node-packages.json # creates ./default.nix
nix-shell # nix-shell will look for a default.nix, which above will have generated
Was dazu führt, dass Nix alle npm-Pakete im Projekt verwaltet.
Verwandte:Elektrik – Wie verdrahte ich einen WLAN-Lichtschalter mit einer Verkabelung, die nicht den Installationsanweisungen entspricht?
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. P>