V NixOS jsem nainstaloval balíček yarn
jako obvykle spuštěním $ nix-env -i yarn
. Nyní se pokouším spustit yarn
přes $ yarn start
. To mě ale vede k následující chybě.
$ 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.
Když se pokusím nainstalovat webpack-dev-server
mým obvyklým způsobem NixOS dostávám chybu „neodpovídá žádné derivace“.
$ nix-env -i webpack-dev-server
error: selector ‘webpack-dev-server’ matches no derivations
Četl jsem, že webpack-dev-server
je balíček npm a nejsem si jistý pár otázkami ohledně relevance toho v tomto případě.
- Má smysl používat npm, jiného správce balíčků než nix,
pod Nix? - Pokud je odpověď na (1) ano, jak nainstalovat npm na NixOS? Při vyhledávání pomocí
nix-env
nevidím
dostupné npm , jako$ nix-env -qa npm
také neodpovídá žádné odvozeniny.
Jaký je správný způsob instalace webpack-dev-server
na NixOS?
UPRAVIT
Pokusil jsem se nainstalovat webpack-dev-server
po komentovaném odkazu a podařilo se mu nainstalovat node2nix
, ale nejsem schopen dokončit krok 2 uvedený v souboru readme.
Nalezl jsem soubor uvedený v kroku 2 v /nix/store
v
//eadn-wc01-5196795.nxedge.io/nix/store/sgk7sxgqxrv2axkxjwc3y15apcqbrv1z-nixos-17.03.1482.1b57bf274a/nixos/pkgs/development/node-packages/node-packages.json
Mohu tento soubor otevřít a zobrazit si uvedené balíčky npm, ale oprávnění jsou pouze pro čtení, dokonce i se systémem sudo – takže bych musel upravit jeho oprávnění, abych je mohl změnit.
Zdá se, že bych neměl upravovat tento /nix/store
soubor přímo a měl by s ním místo toho manipulovat nepřímo přes nix. Mám pravdu, že bych tento soubor neměl přímo upravovat? Pokud ano, jak jinak mohu dokončit krok 2 pomocí nix nebo něčeho jiného k přidání webpack-dev-server
k tomu?
Přijatá odpověď:
Existuje několik způsobů, jak používat balíčky npm prostřednictvím nix:
Pro své osobní projekty používám nix-shell
pak v rámci shellu používám skripty npm, abych zabránil potřebě globálních balíčků npm (jako u gulp). Proces vypadá asi takto (a je pravděpodobně velmi podobný pro přízi):
$ 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
To mi funguje dobře, protože žádný z mých balíčků nemá binární závislosti. Tento příspěvek popisuje vytvoření default.nix pro váš projekt, takže nebudete muset specifikovat závislosti pro každé vyvolání nix-shell, ale je to volitelné.
Dalším způsobem je použití npm2nix:
node2nix -i node-packages.json # creates ./default.nix
nix-shell # nix-shell will look for a default.nix, which above will have generated
Což způsobí, že Nix bude spravovat všechny balíčky npm v projektu.
Související:Elektrika – Jak zapojit vypínač wifi s kabeláží, která neodpovídá instalačním pokynům?Může být dobrý nápad seznámit se s nix-shell, protože pokus o instalaci balíčků uzlů / jakékoli závislosti ve vašem profilu nix (prostřednictvím nix-env nebo nox) maří účel nix tím, že znečišťuje „globální“ jmenný prostor.