W NixOS zainstalowałem pakiet yarn
jak zwykle, uruchamiając $ nix-env -i yarn
. Teraz jestem próbujesz uruchomić yarn
poprzez $ yarn start
. Ale to prowadzi mnie do następującego błędu.
$ 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.
Kiedy próbuję zainstalować webpack-dev-server
w zwykły sposób NixOS, pojawia się błąd „nie pasuje do pochodnych”.
$ nix-env -i webpack-dev-server
error: selector ‘webpack-dev-server’ matches no derivations
Przeczytałem, że webpack-dev-server
jest to pakiet npm i nie jestem pewien kilku pytań dotyczących znaczenia tego w tym przypadku.
- Czy ma sens używanie npm, innego menedżera pakietów niż nix, pod Nix?
- Jeśli odpowiedź na (1) brzmi „tak”, to jak zainstalować npm na NixOS? Nie widzę npm dostępnego podczas wyszukiwania
nix-env
, ponieważ$ nix-env -qa npm
również nie pasuje do żadnych pochodnych.
Jaki jest prawidłowy sposób instalacji webpack-dev-server
na NixOS?
EDYTOWAĆ
Próbowałem zainstalować webpack-dev-server
po skomentował linku i był w stanie zainstalować node2nix
, ale nie jestem w stanie zrealizują kroku 2 wymienione tam readme.
I znajduje się plik wymieniony w punkcie 2, w /nix/store
co
/nix/store/sgk7sxgqxrv2axkxjwc3y15apcqbrv1z-nixos-17.03.1482.1b57bf274a/nixos/pkgs/development/node-packages/node-packages.json
Mogę otworzyć ten plik, aby wyświetlić wymienione pakiety npm, ale uprawnienia są tylko do odczytu, nawet działają z sudo - więc musiałbym edytować jego uprawnienia, aby je zmienić.
Wygląda na to, że nie powinienem edytować tego /nix/store
pliku bezpośrednio, a zamiast tego powinienem nim manipulować pośrednio przez nix. Czy mam rację, że nie powinienem bezpośrednio edytować tego pliku? Jeśli tak, to w jaki inny sposób mogę wykonać krok 2, używając nix lub czegoś, co można webpack-dev-server
do niego dodać ?
/nix/store
jest tylko do odczytu. Trzeba clone git repo i wykorzystania-I nixpkgs=/path/to/repo
dlanix-*
poleceniaOdpowiedzi:
Istnieje wiele sposobów używania pakietów npm przez nix:
Do moich osobistych projektów używam
nix-shell
następnie w powłoce używam skryptów npm, aby uniknąć potrzeby globalnych pakietów npm (jak w przypadku gulp). Proces wygląda mniej więcej tak (i prawdopodobnie jest bardzo podobny w przypadku przędzy):Działa to dla mnie dobrze, ponieważ żaden z moich pakietów nie ma zależności binarnych. Ten post opisuje tworzenie pliku default.nix dla twojego projektu, więc nie będziesz musiał określać zależności dla każdego wywołania powłoki nix, ale jest to opcjonalne.
Innym sposobem jest użycie npm2nix:
Co spowoduje, że Nix będzie zarządzał wszystkimi pakietami npm w projekcie.
Dobrym pomysłem może być zapoznanie się z powłoką nix, ponieważ próba zainstalowania pakietów węzłów / dowolnej zależności w twoim profilu nix (poprzez nix-env lub nox) nie pozwala osiągnąć celu nix przez zanieczyszczenie „globalnej” przestrzeni nazw.
źródło
nodePackages_6_x.node-gyp
bibliotek i innych podobnych bibliotekblas
, a kiedy wszystko będzie razem, możesz użyćnpm install ....
pakietów korzystających z węzła gyp.npm scripts
rozwiązania, znajduję dodawanie globalnych pakietów npm donix-shell
skutecznego, npnix-shell -p nodejs-8_x nodePackages.grunt-cli
. (Ostrzeżenie: tutaj nixos i węzeł noob.)bin
kończy się plik binarny dla pliku package.json projektu ?npm install
, pliki wykonywalne zostaną połączonenode_modules/.bin
. Zobacz tutaj .Z jakiegoś powodu nie wiem, pakiet nodePackages nie znajduje się w głównej przestrzeni nazw i nie można go znaleźć za pomocą
nix-env -qa
służy
nix-env -qaPA 'nixos.nodePackages'
do wyświetlania listy dostępnych pakietów.Jeśli nie ma pakiety chcesz i nie można zrobić własną prośbę, spróbuj go na NixOS github .
źródło
nix-env -f '<nixpkgs>' -qaPA nodePackages | grep tern
Alternatywnie znalazłem również komentarz CMCDragonkai na temat numeru Nixpkgs # 3393 :
źródło