No NixOS, instalei o pacote yarn
normalmente, executando $ nix-env -i yarn
. Agora estou tentando executar yarn
via $ yarn start
. Mas isso me leva ao seguinte erro.
$ 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.
Quando tento instalar webpack-dev-server
da maneira usual do NixOS, recebo o erro 'corresponde a nenhuma derivação'.
$ nix-env -i webpack-dev-server
error: selector ‘webpack-dev-server’ matches no derivations
Eu li que webpack-dev-server
é um pacote npm e não tenho certeza de algumas perguntas sobre a relevância disso neste caso.
- Faz sentido usar o npm, um gerenciador de pacotes diferente do nix, no Nix?
- Se a resposta a (1) for sim, como instalar o npm no NixOS? Não vejo o npm disponível ao pesquisar via
nix-env
, pois$ nix-env -qa npm
também não corresponde a derivações.
Qual é a maneira correta de instalar webpack-dev-server
no NixOS?
EDITAR
Tentei instalar webpack-dev-server
seguindo o link comentado e consegui instalar node2nix
, mas não consigo seguir a etapa 2 listada no leia-me lá.
I localizado o arquivo referenciado no passo 2 em /nix/store
pelo
/nix/store/sgk7sxgqxrv2axkxjwc3y15apcqbrv1z-nixos-17.03.1482.1b57bf274a/nixos/pkgs/development/node-packages/node-packages.json
Eu posso abrir esse arquivo para visualizar os pacotes npm listados, mas as permissões são somente leitura, mesmo em execução com o sudo - então eu precisaria editar suas permissões para alterá-lo.
Parece que eu não deveria editar este /nix/store
arquivo diretamente e, em vez disso, deveria manipulá-lo indiretamente via nix. Estou certo de que não devo editar este arquivo diretamente? Em caso afirmativo, de que outra forma posso concluir a etapa 2 usando o nix ou algo a acrescentar webpack-dev-server
?
/nix/store
é somente leitura. Você precisa repo git clone e uso-I nixpkgs=/path/to/repo
denix-*
comandoRespostas:
Existem várias maneiras de usar pacotes npm através do nix:
Para meus projetos pessoais, eu uso
nix-shell
no shell scripts npm para evitar a necessidade de pacotes globais npm (como no gulp). O processo se parece com isso (e provavelmente é muito semelhante para fios):Isso funciona bem para mim, pois nenhum dos meus pacotes possui dependências binárias. Esta publicação descreve a criação de um default.nix para o seu projeto, para que você não precise especificar dependências para cada chamada do nix-shell, mas é opcional.
Outra maneira é usar o npm2nix:
O que fará com que o Nix gerencie todos os pacotes npm no projeto.
Pode ser uma boa idéia familiarizar-se com o nix-shell, já que tentar instalar pacotes de nós / qualquer dependência em seu perfil do nix (por meio do nix-env ou nox) anula o objetivo do nix poluindo o espaço de nomes "global".
fonte
nodePackages_6_x.node-gyp
bibliotecas e de outras bibliotecas comoblas
, então, quando estiver tudo junto, poderá usarnpm install ....
pacotes que usam o node-gyp.npm scripts
solução, acho que a adição de pacotes npm globais aonix-shell
efetivo, por exemplonix-shell -p nodejs-8_x nodePackages.grunt-cli
. (Aviso: nixos e node noob aqui.)bin
termina o binário do package.json do projeto ?npm install
, os executáveis serão vinculados aonode_modules/.bin
. Veja aqui .Por alguma razão que não sei, o nodePackages não está no espaço de nomes raiz e não pode ser encontrado usando
nix-env -qa
use
nix-env -qaPA 'nixos.nodePackages'
para listar os pacotes disponíveis.Se não houver pacotes desejados e você não puder criar seus próprios, tente solicitá-lo no NixOS github .
fonte
nix-env -f '<nixpkgs>' -qaPA nodePackages | grep tern
Como alternativa, também encontrei o comentário de CMCDragonkai sobre a edição Nixpkgs # 3393 :
fonte