Есть ли способ переместить каталог node_modules в приложении, скажем, в / vendor / node_modules, как это делает bower с файлом bowerrc? Я думал, что это можно указать в package.json, но я не могу найти решение. Ваша помощь очень ценится.
96
node_modules
inpackage.json
, а ответ xShirase просто не дает возможности сделать это.Ответы:
да, вы можете, просто установите переменную env NODE_PATH:
export NODE_PATH='yourdir'/node_modules
Согласно документу:
Источник
источник
process.env
Вкратце: это невозможно и, похоже, никогда не будет поддерживаться (см. Здесь https://github.com/npm/npm/issues/775 ).
Есть несколько хитрых приемов с использованием CLI или ENV-переменных (см. Текущий выбранный ответ), .npmrc-Config-Files или
npm link
- что у всех них общего: они никогда не зависят только от проекта, но всегда какие-то изglobal
решений.Для меня ни одно из этих решений не является действительно чистым, потому что участникам вашего проекта всегда нужно создавать какую-то особую конфигурацию или обладать некоторыми специальными знаниями - они не могут просто так,
npm install
и это работает.Итак: либо вам нужно будет поместить свой package.json в тот же каталог, где вы хотите установить node_modules, либо жить с тем фактом, что они всегда будут в корневом каталоге вашего проекта.
источник
Пряжа поддерживает эту функцию:
# .yarnrc file in project root --modules-folder /node_modules
Но ваш опыт может варьироваться в зависимости от того, какие пакеты вы используете. Не уверен, что ты захочешь залезть в кроличью нору.
источник
Я не уверен, что вы имели в виду именно это, но я остановился на этом вопросе, потому что мне не удалось установить
node_modules
внутри моего каталога проекта, поскольку он был смонтирован в файловой системе, которая не поддерживала символические ссылки («общая» папка виртуальной машины ).Я нашел следующее обходное решение:
package.json
файл во временную папку в другой файловой системеnpm install
тудаnode_modules
каталог обратно в каталог проекта, используяcp -r --dereference
для преобразования символических ссылок в копии.Я надеюсь, что это поможет кому-то еще, кто столкнется с этим вопросом при поиске способа перехода
node_modules
на другую файловую систему.Другие варианты
Существует еще один обходной путь, который я нашел по этому вопросу GitHub , что @Charminbear связанного с , но это не работает с ,
grunt
потому что он не поддерживает ,NODE_PATH
как на https://github.com/browserify/resolve/issues/136 :источник