Подтвердить что ты не робот

Укажите путь к node_modules в package.json

Есть ли способ переместить каталог node_modules в приложение, чтобы сказать say/vendor/node_modules как bower делает с файлом bowerrc? Я думал, что это может быть указано в package.json, но я не могу найти решение. Ваша помощь очень ценится.

4b9b3361

Ответ 1

да, вы можете, просто установите переменную env NODE_PATH:

export NODE_PATH='yourdir'/node_modules

Согласно документу:

Если переменная среды NODE_PATH установлена ​​в список с разделителями двоеточия абсолютных путей, то node будет искать эти пути для модулей, если они не найдены нигде. (Примечание. В Windows NODE_PATH разделенных точкой с запятой, а не двоеточиями.)

Кроме того, node будет искать в следующих местах:

1: $HOME/.node_modules

2: $HOME/.node_libraries

3: $PREFIX/lib/ node

Где $HOME является домашним каталогом пользователя, а $PREFIX - node. сконфигурированный node_prefix.

Это в основном по историческим причинам. Вам настоятельно рекомендуется разместите свои зависимости локально в папках node_modules.. Они будут загружаются быстрее и надежнее.

Источник

Ответ 2

Вкратце: это невозможно, и, как кажется, никогда не будет поддерживаться (см. здесь https://github.com/npm/npm/issues/775).

Есть некоторые хакеры с использованием CLI или ENV-Variables (см. текущий выбранный ответ),.npmrc-Config-Files или npm link - все, что у всех их есть: они никогда не просто проектно- но всегда есть своего рода global Решения.

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

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

Ответ 3

Я не уверен, что это то, что вы имели в виду, но я закончил этот вопрос, потому что мне не удалось установить node_modules внутри моего проекта dir, поскольку он был установлен в файловой системе, которая не поддерживала символические ссылки ( папка с общим доступом VM.

Я нашел следующее обходное решение:

  • Скопируйте файл project.json в временную папку в другой файловой системе.
  • Запустите npm install там
  • Скопируйте полученный каталог node_modules обратно в каталог проекта, используя cp -r --dereference, чтобы развернуть символические ссылки в копии.

Я надеюсь, что это поможет кому-то еще, кто закончит этот вопрос, когда вы ищете способ переместить node_modules в другую файловую систему.

Другие опции

Существует другое обходное решение, которое Я обнаружил в проблеме github, что @Charminbear связан с, но это не работает с grunt потому что он не поддерживает NODE_PATH по https://github.com/browserify/resolve/issues/136:

позволяет сказать, что у вас есть /media/sf_shared, и вы не можете установить символические ссылки в там, что означает, что вы не можете установить npm из /media/sf_shared/myproject, потому что некоторые модули используют символические ссылки.

  • $ mkdir /home/dan/myproject && cd /home/dan/myproject
  • $ ln -s /media/sf_shared/myproject/package.json (вы можете символически ссылаться в этом направление, просто не может создать один внутри /media/sf _shared)
  • $ npm install
  • $ cd /media/sf_shared/myproject
  • $ NODE_PATH=/home/dan/myproject/node_modules node index.js