В 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, и не уверен в паре вопросов относительно значимости этого в этом случае.
- Имеет ли смысл использовать npm, менеджер пакетов, отличный от nix, под Nix?
- Если ответ (1) - «да», то как установить npm на NixOS? Я не вижу npm доступным при поиске через
nix-env
, так как$ nix-env -qa npm
также не соответствует ни одному выводу.
Как правильно установить webpack-dev-server
NixOS?
РЕДАКТИРОВАТЬ
Я попытался установить webpack-dev-server
по закомментированной ссылке и смог установить node2nix
, но не смог выполнить шаг 2, указанный в файле readme.
Я нашел файл , на который ссылается на шаге 2 /nix/store
на
/nix/store/sgk7sxgqxrv2axkxjwc3y15apcqbrv1z-nixos-17.03.1482.1b57bf274a/nixos/pkgs/development/node-packages/node-packages.json
Я могу открыть этот файл, чтобы просмотреть перечисленные пакеты npm, но разрешения доступны только для чтения, даже если они запускаются с помощью sudo - поэтому мне нужно отредактировать его разрешения, чтобы изменить его.
Кажется, что я не должен редактировать этот /nix/store
файл напрямую, а должен косвенно манипулировать им через nix. Я прав, что не должен редактировать этот файл напрямую? Если так, как еще я могу выполнить шаг 2, используя nix или что-то еще, чтобы добавить webpack-dev-server
к нему?
/nix/store
только для чтения. Вам нужно клонировать git repo и использовать-I nixpkgs=/path/to/repo
дляnix-*
командованияОтветы:
Существует несколько способов использования пакетов npm через nix:
Для моих личных проектов я использую
nix-shell
затем внутри оболочки, я использую сценарии npm, чтобы предотвратить необходимость в глобальных пакетах npm (как в случае с gulp). Процесс выглядит примерно так (и, вероятно, очень похож на пряжу):Это хорошо работает для меня, так как ни один из моих пакетов не имеет бинарных зависимостей. В этом посте описывается создание default.nix для вашего проекта, поэтому вам не нужно указывать зависимости для каждого вызова nix-shell, но это необязательно.
Другой способ - использовать npm2nix:
Что заставит Nix управлять всеми пакетами npm в проекте.
Хорошей идеей может быть знакомство с nix-shell, поскольку попытка установить пакеты узлов / любые зависимости в вашем профиле nix (через nix-env или nox) наносит ущерб цели nix, загрязняя «глобальное» пространство имен.
источник
nodePackages_6_x.node-gyp
и любые другие библиотеки, напримерblas
, тогда, когда все это вместе, вы можете использоватьnpm install ....
пакеты, которые используют node-gyp.npm scripts
решению, я считаю добавление глобальных пакетов npm кnix-shell
эффективным, напримерnix-shell -p nodejs-8_x nodePackages.grunt-cli
. (Предупреждение: nixos и noob узла здесь.)bin
заканчивается бинарный файл для package.json проекта ?npm install
, исполняемые файлы будут связаны сnode_modules/.bin
. Смотрите здесь .По какой-то причине я не знаю, nodePackages не находится в корневом пространстве имен и не может быть найден с помощью
nix-env -qa
использовать
nix-env -qaPA 'nixos.nodePackages'
для списка доступных пакетов.Если нет нужных вам пакетов и вы не можете их создать, попробуйте запросить их на NixOS github .
источник
nix-env -f '<nixpkgs>' -qaPA nodePackages | grep tern
В качестве альтернативы я также нашел комментарий CMCDragonkai по проблеме Nixpkgs # 3393 :
источник