NixOSにnpmパッケージをインストールする方法は?

NixOSにnpmパッケージをインストールする方法は?

yarnNixOSでは$ nix-env -i yarn。今私はyarn$ yarn startただし、これにより次のエラーが発生します。

$ 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.

一般的なNixOS方式でインストールしようとすると、webpack-dev-server「不一致フォーク」エラーが発生します。

$ nix-env -i webpack-dev-server
error: selector ‘webpack-dev-server’ matches no derivations

私はこれがwebpack-dev-servernpmパッケージであることを読んでおり、このケースに関連するいくつかの問題はわかりません。

  1. Nixでnpm(nixと他のパッケージマネージャ)を使用するのは合理的ですか?
  2. (1)に対する答えが「はい」の場合、NixOSにnpmをインストールする方法は?検索時に一致するフォークがないnix-envため、利用可能なnpmは表示されません。$ nix-env -qa npm

webpack-dev-serverNixOSにインストールする正しい方法は何ですか?


編集する

webpack-dev-server私は次のようにインストールしようとしていますコメントリンクをインストールできましたが、node2nixReadmeに記載されている手順2を実行できませんでした。

/nix/store手順2で参照されたファイルを次の場所で見つけました。

/nix/store/sgk7sxgqxrv2axkxjwc3y15apcqbrv1z-nixos-17.03.1482.1b57bf274a/nixos/pkgs/development/node-packages/node-packages.json

ファイルを開いてリストされたnpmパッケージを表示できますが、sudoとして実行している場合でも権限は読み取り専用であるため、変更するには権限を編集する必要があります。

/nix/storeこのファイルを直接編集するのではなく、nixを介して間接的に操作するだけです。このファイルを直接編集しないでください。もしそうなら、nixを使用するか、他のものを追加してステップ2を実行するにはどうすればよいですかwebpack-dev-server

ベストアンサー1

nixを介してnpmパッケージを使用する方法はいくつかあります。

私の個人的なプロジェクトでは、nix-shell私が使用するシェルで使用します。npmスクリプトnpmグローバルパッケージ(gulpなど)を必要としないようにします。プロセスは次のとおりです(おそらく糸の場合は非常に似ています)。

$ 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

私のパッケージにはバイナリの依存関係がないので、これは私にとってうまくいきます。これ投稿では、nix-shellを呼び出すたびに依存関係を指定する必要がないように、プロジェクトに対してdefault.nixを生成する方法について説明しますが、これはオプションです。

別の方法はnpm2nixを使用することです。

node2nix -i node-packages.json # creates ./default.nix
nix-shell # nix-shell will look for a default.nix, which above will have generated

これにより、Nixはプロジェクト内のすべてのnpmパッケージを管理します。

nix-envまたはnoxを介してnixプロファイルにノードパッケージ/依存関係をインストールしようとすると、「グローバル」ネームスペースが汚染され、nixの目的が失われるため、nix-shellに慣れるのはおそらく良い考えです。

おすすめ記事