Перейти к содержимому

Как переустановить node modules

  • автор:

Как сделать, чтобы npm устанавливал модули в node_modules текущего проекта?

Находясь в D:\nodejs\Project прописываю в терминале (вебшторма) npm i express -s. Модуль устанавливается в D:\nodejs\node_modules (а мне нужно чтобы сохранилось в *D:\nodejs\Project\node_modules*) и так как я пожелал, чтобы данные сохранились в package.json (через -s), мне ещё и выдало ошибку «ENOENT: no such file or directory, open ‘D:\nodejs\package.json’«. Как сделать, чтобы когда я находясь в папке \Project, прописывал npm i express, express устанавливался в текущую директорию, в папку node_modules? Пробовал шаманить с NODE_PATH в свойствах компьютера, всё что там можно, чтобы например модули всегда ставились в папку \Project, а вот чтобы модули установились в директорию, в которой я нахожусь, я не знаю как сделать. Очистил переустановил node.js, всё-равно не помогло. Помогите.

Отслеживать
задан 14 фев 2017 в 15:34
912 1 1 золотой знак 9 9 серебряных знаков 24 24 бронзовых знака

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Оказывается, нужно было в текущей директории написать npm init, создать package.json и всё заработало.

Отслеживать
ответ дан 14 фев 2017 в 15:47
912 1 1 золотой знак 9 9 серебряных знаков 24 24 бронзовых знака

  • node.js
  • npm
  • node-modules
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Добавление и удаление пакетов с помощью npm или Yarn

Yarn

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

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

В этом мануале мы обсудим работу с инструментами npm и yarn. Обе эти команды довольно популярны, вы могли сталкиваться с ними в других статьях по Node.js. Если же вы никогда не слышали о них: npm и yarn – это менеджеры пакетов для Node.js. Оба они используют файл package.json и работают очень похожим образом.

Если у вас уже есть локальная установка Node.js, вероятно, у вас установлен и npm. Если вы предпочитаете использовать yarn, но у вас нет этой команды, вы можете ознакомиться с инструкциями по установке yarn здесь.

В зависимости от вашей системы вы также можете установить эти команды с помощью вашего менеджера пакетов.

Кроме того, некоторые пакеты мы будем устанавливать глобально, а другие – как зависимость проекта. Для работы с этим мануалом можно использовать уже существующий проект или создать простой тестовый проект в каталоге /tmp, например:

$ mkdir /tmp/gator-project
$ cd /tmp/gator-project
$ npm init -y

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

Добавление зависимости разработки в проект

Не все зависимости одинаковы – некоторые из них требуются только при разработке. Эти зависимости тоже важны, но в производстве они могут замедлить развертывание, поскольку для их установки требуется время.

В качестве примера зависимостей разработки можно привести утилиты тестирования типа mocha или jest. Такие пакеты мы можем установить как зависимости разработки и добавить в раздел devDependencies нашего файла package.json:

# NPM
$ npm install —save-dev mocha
# сокращенная версия
$ npm i -D mocha
# Yarn
$ yarn add —dev mocha
# сокращенная версия
$ yarn add -D mocha

Добавление зависимостей производства в проект

Некоторые зависимости критически важны для приложения и всегда должны устанавливаться независимо от среды – и в разработке, и в производстве без них никуда. Это зависимости производства, обычно к ним относятся такие пакеты, как express или react.

Добавить зависимость производства в проект так же просто, как и зависимости разработки, но вместо devDependencies их следует помещать ​​в раздел dependencies:

# NPM
$ npm install —save express
# сокращенная версия
$ npm i -P express
# Yarn
$ yarn add express

Глобальная установка зависимостей

Иногда бывает необходимо установить пакет вне текущего проекта, чтобы он был доступен для всех проектов в текущей системе. Такие пакеты устанавливаются глобально. Чаще всего они включают утилиты, которые необходимо запускать вместе с другими утилитами командной строки:

# NPM
$ npm install —global json
# сокращенная версия
$ npm i -g json
# Yarn
$ yarn global add json

Удаление зависимости из проекта

В жизни каждого проекта наступает момент, когда зависимость, которая когда-то казалась жизненно необходимой, больше не выполняет никакой функции. В таком случае всегда лучше удалить код (при условии, что вы все хорошо протестировали и уверены, что после удаления ничего не сломается).

Чтобы удалить из проекта зависимость разработки или производства, используйте:

# NPM
$ npm uninstall jest
# Shorthand version
$ npm r jest
# Yarn
$ yarn remove jest

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

Глобальное удаление пакета

Удаление глобально установленного пакета выполняется так же, как удаление пакета из проекта, только вы должны передать аргумент global (его же мы использовали при глобальной установке).

# NPM
$ npm uninstall —global json
# сокращенная версия
$ npm r -g json
# Yarn
$ yarn global remove json

Как удалить все каталоги node_modules

Как удалить все каталоги node_modules с компьютера.

Tools · 28.09.2021 · читать 1 мин �� · Автор: Alexey Myzgin

Как удалить все каталоги node_modules с компьютера

За последние несколько лет я запускал npm install больше раз, чем смогу сосчитать. И как результат на компьютере образовалось довольно много каталогов node_modules , о которых я давно уже забыл и не использую.

Зачастую проект мне больше не нужен, но бывает и так, что это кодовая база, с которой я всё же изредка работаю.

И вот на днях я решил удалить со своего компьютера все каталоги node_modules и выборочно переустановить те, которые мне могут понадобиться.

Работка могла бы быть действительно долгая и трудная, делай я всё вручную. Но, нашелся способ как сделать это при помощи всего лишь одного сценария командной строки.

Перед тем как удалить все каталоги node_modules, рекомендую протестировать скрипт и убедиться, что он не удалит то, что тебе нужно.

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

cd ~/ПУТЬ_К_ПАПКЕ

Затем запускаем этот код.

# Mac/Linux find . -name "node_modules" -type d -prune -print | xargs du -chs # Windows FOR /d /r . %d in (node_modules) DO @IF EXIST "%d" echo %d"

После этого будет выведен список всех найденных node_modules и сколько дискового пространства они занимают (по отдельности и в целом).

Собственно удаление файлов

Если тебя устраивает то, что обнаруживает скрипт — можешь удалить все каталоги со своего компьютера.

ПРИМЕЧАНИЕ. Соблюдай осторожность и убедись, что ты находишься в каталоге, откуда ты удаляешь все экземпляры node_modules . Запусти приведенный выше сценарий, чтобы просмотреть их полный список перед удалением.

На самом деле этот скрипт очень похож на приведенный выше. Но, чтобы полностью всё удалить, мы будем использовать rm -rf .

# Mac/Linux find . -name 'node_modules' -type d -prune -print -exec rm -rf '<>' \; # Windows FOR /d /r . %d in (node_modules) DO @IF EXIST "%d" rm -rf "%d"
  • обязательно перечисли все node_modules в данном каталоге ПЕРЕД их удалением.
  • будь осторожен, так как этот процесс необратим!
  • не забудь снова установить npm для проектов, над которыми работаешь.

Как переустановить зависимости приложения с помощью npm?

Есть ли простой способ переустановить все пакеты, от которых зависит мое приложение (т.е. они находятся в папке моих приложений node_modules)?

trusktr 12 окт. 2012, в 20:29
Поделиться
npm rebuild также может помочь при некоторых проблемах с нативными зависимостями.
Francisco Presencia 14 июнь 2016, в 16:24

В случае, если это помогает другим: если вы просто пытаетесь переустановить один пакет, npm update отлично работает

rinogo 14 окт. 2016, в 22:24
Поделиться:

5 ответов

Лучший ответ

Самый простой способ, которым я могу видеть, — удалить папку node_modules и выполнить npm install .

Vadim Baryshev 12 окт. 2012, в 21:52
Поделиться
Согласовано; при условии, что вы создали файл package.json для своего приложения.
JohnnyHK 12 окт. 2012, в 20:24

Помните, что запуск npm install после удаления каталога node_modules может привести к node_modules разных версий зависимостей, определенных в package.json . Если вам требуются очень конкретные версии зависимостей для вашего приложения, будьте осторожны и посмотрите на npm shrinkwrap или проверьте node_modules вашего node_modules для контроля node_modules .

smithclay 12 окт. 2012, в 21:18

@smithclay Я определил явную версию пакетов в package.json моего приложения, так что должно быть все в порядке, верно?

trusktr 12 окт. 2012, в 21:35

@vadim Я проводил некоторые тесты поведения npm install и он всегда переустанавливал зависимости и обновлял пакеты до последних версий, как это разрешено package.json. Поэтому удаление папок node_modules не требуется, если вы считаете, что они повреждены. Есть ли причина, по которой вы думаете, что ее следует удалить? Однако, если целью является удаление любых посторонних пакетов, вы можете вместо этого выполнить npm prune

himanshu 18 окт. 2012, в 19:27

@himanshu вы правы npm install обновляет все модули до состояния package.json. Но вопрос в том, как переустановить все пакеты . Таким образом, они могут быть повреждены или, возможно, потребуется перестроить двоичные части после обновления версии node.js.

Vadim Baryshev 18 окт. 2012, в 23:12

@trusktr не обязательно. блокировка определенных версий гарантирует, что ваши deps не изменятся, но зависимости ваших зависимостей все еще могут измениться

jasonkarns 30 янв. 2014, в 14:41

@jasonkarns Это если я удаляю каталог node_modules и запускаю npm install верно? Так что ничего не произойдет, если мои номера зависимостей не изменились, и я пытаюсь обновить (не node_modules )? Или так? .. С другой стороны, это может быть проблемой для модулей в npmjs.org, которые используют последние зависимости (без номеров версий). Каждый раз, когда пользователь устанавливает мой пакет, он может загружать разные версии зависимостей пакета, даже если он извлекает конкретную версию моего пакета? Если так, то с этим что-то не так.

trusktr 01 фев. 2014, в 19:09

@jasonkarns Здесь говорится, что имя и версия требуются для пакетов npmjs : npmjs.org/doc/json.html . Я не проверял это, но я собираюсь предположить, что отсутствие имени и версии сделало бы вещи очень беспокойными. Я попробую это в следующий раз, когда приступлю к разработке своего Node.js.

trusktr 01 фев. 2014, в 19:25

@trusktr что вы подразумеваете под «обновлением без удаления node_modules»? Мой оригинальный комментарий состоял в том, что да, транзитивные зависимости могут изменяться без изменения вашего собственного package.json. (если node_modules удален, а затем запустить npm i )

jasonkarns 06 фев. 2014, в 21:16

@jasonkarns Я полностью согласен с тем, что вы сказали, если вы делаете проект на своем жестком диске adhoc, но это не так, если ваш пакет собирается в npmjs.org. Для пакетов npmjs.org требуются номера версий в package.json. Это все, что я имел в виду. 🙂

trusktr 07 фев. 2014, в 04:36

@trusktr Я никогда не предлагал опускать номера версий в package.json. Транзитивные зависимости могут изменяться даже с указанными версиями пакета. Скажем, я зависим от модуля [email protected]. Модуль A зависит от модуля B, используя ~ 0.4.0 (или 0.4.x или> = 0.4.0). В этом случае, выполнив npm update (или npm install после удаления node_modules), вы получите самую последнюю версию модуля B, которая удовлетворяет package.json модуля A. Таким образом, вы можете получить [email protected]. Единственный способ заблокировать переходные процессы — использовать npm shrinkwrap .

jasonkarns 07 фев. 2014, в 04:46

@jasonkarns Да, нам разрешено помещать такие вещи, как 0.4.x или >=0.4.0 в package.json пакета, который мы помещаем на npmjs.org?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *