NixOSで、パッケージyarn
をインストールしました いつものように$ 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.
webpack-dev-server
をインストールしようとすると 通常のNixOSの方法では、「派生に一致しない」エラーが発生します。
$ nix-env -i webpack-dev-server
error: selector ‘webpack-dev-server’ matches no derivations
そのwebpack-dev-server
を読みました はnpmパッケージであり、この場合の関連性に関するいくつかの質問がわかりません。
- nixとは異なるパッケージマネージャーであるnpmを
Nixで使用するのは理にかなっていますか? - (1)の答えが「はい」の場合、NixOSにnpmをインストールする方法は?
nix-env
で検索したときにnpmが利用できるのがわかりません 、as$ nix-env -qa npm
派生物にも一致しません。
webpack-dev-server
をインストールする正しい方法は何ですか NixOSで?
編集
webpack-dev-server
をインストールしようとしました コメントされたリンクをたどり、node2nix
をインストールできました 、ただし、Readmeに記載されている手順2を実行することはできません。
手順2で参照したファイルを/nix/store
に配置しました で
//eadn-wc01-5196795.nxedge.io/nix/store/sgk7sxgqxrv2axkxjwc3y15apcqbrv1z-nixos-17.03.1482.1b57bf274a/nixos/pkgs/development/node-packages/node-packages.json
そのファイルを開いて、リストされているnpmパッケージを表示できますが、アクセス許可は読み取り専用であり、sudoで実行されている場合でも、変更するにはアクセス許可を編集する必要があります。
この/nix/store
を編集するべきではないようです ファイルを直接作成し、代わりにnixを介して間接的に操作する必要があります。 このファイルを直接編集してはいけないというのは正しいですか? その場合、nixなどを使用してwebpack-dev-server
を追加することで、ステップ2を完了するにはどうすればよいですか。 それに?
承認された回答:
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
私のパッケージにはバイナリ依存関係がないので、これは私にとってうまく機能します。この投稿では、プロジェクトのdefault.nixの作成について説明しているため、nix-shellを呼び出すたびに依存関係を指定する必要はありませんが、オプションです。
別の方法は、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パッケージを管理します。
関連:電気–インストール手順と一致しない配線でwifiライトスイッチを配線する方法は?ノードパッケージ/nixプロファイルの依存関係(nix-envまたはnoxを介して)をインストールしようとすると、「グローバル」名前空間を汚染することでnixの目的が損なわれるため、nix-shellに精通することをお勧めします。