Автоматически удалять зависимости из package.json при использовании npm uninstall


84

После того, как npm initя смогу добавить зависимости в свой package.json, используя это:

npm install package --save

И скажем, я хочу получить uninstallпакет, и я делаю это следующим образом:

npm uninstall package

но я хочу, чтобы мой package.json тоже обновлялся соответствующим образом, без необходимости вручную переходить к файлу и удалять эту строку.

В документах npm говорится:

Он является строго аддитивным, поэтому он не удаляет параметры из вашего package.json без действительно веской причины.

Итак, я просто хотел знать, возможно ли это вообще.


Поскольку мои зависимости автоматически добавляются в package.json всякий раз, когда я устанавливаю с флагом (--save), мне было интересно, есть ли способ удалить зависимости из package.json, когда я также удаляю пакет.
крик

Ответы:


151

Используйте тот же --saveфлаг. Если вы установили зависимость с помощью:

$> npm install grunt-cli --save

вы можете удалить его, обновив package.json, используя:

$> npm uninstall grunt-cli --save

Флаг 'save' указывает npm обновлять package.json в зависимости от операции, которую вы только что сделали.


3
Я использую npm с ember-cli, и мне пришлось использовать --save-devвместо --save.
gerry3 06

4
если вы установили его с помощью --save-dev, то удаление также будет --save-dev, так как --save сохраняет в dependenciesразделе файла package.json, тогда как --save-dev сохранит в devDependenciesразделе
Mike ' Pomax 'Kamermans

7
Я далеко продвинулся с тех пор, как опубликовал этот вопрос, и вот небольшой совет. Вы можете использовать npm i <package_name> -Sдля добавления в свой dependenciesсписок или npm i <package_name> -Dдля добавления в свой dev-dependencies. Тот же флаг применяется для удаления с npm rm <package_name> -Sилиnpm rm <package_name> -D
крик

1
но обратите внимание, что это просто сокращенные эквиваленты флагов для --save и --save-dev. См. npm helpВсе флаги и их сокращенные эквиваленты. (все, что установлено с помощью -S или --save, и может быть удалено с помощью любого из них, npm не считает их разными. Просто «меньше печатать» для -S)
Майк 'Pomax' Камерманс

1
Вы святой среди людей.
Джон фон Нейман

0

В моем случае --save не очистил запись из package.json, команда, предложенная ionic-check, я думаю, если при удалении произойдет выход с какими-либо ошибками, package.json не будет обновлен, и в этом случае у вас есть только вариант вручную изменить package.json, это утомительно, но я думаю, единственный способ

ОБНОВИТЬ

когда вы удаляете пакет, который зависит от другого активного пакета, то в этом случае удаление может завершиться с ошибками / предупреждениями, безопасный метод заключается в следующем: по графику зависимостей не уверен, доступен ли какой-либо инструмент, удобный инструмент для таких операций, предупреждение сообщения вводят в заблуждение, хотя "вы должны установить зависимости одноранговых узлов ..." не имеет никакого смысла, когда мы удаляем пакет


1
В этом нет необходимости: если он в dependenciesсписке, его uninstall --save следует удалить, независимо от того, зависит ли от него что-то еще. NPM использует довольно умное выравнивание зависимостей, поэтому, если у вас есть X в вашем списке зависимостей (явно) и вы удалите X --save, он будет удален. Однако помните, что существует несколько списков зависимостей, и --saveэто не то же самое --save-dev, что --save-prod, или --save-optional. Также да: если вы uninstallприводите к ошибкам, NPM останавливается на этой ошибке. Он не пытается продолжить, потому что больше не может гарантировать правильность.
Майк 'Pomax' Камерманс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.