Укажите путь к узловым модулям в пакете.формат JSON
есть ли способ переместить каталог node_modules в приложении, скажем, /vendor / node_modules, как bower делает с файлом bowerrc? Я думал, что это может быть указано в пакете.JSON, но я не могу показаться, чтобы найти решение. Ваша помощь очень ценится.
3 ответов:
да, вы можете, просто установите переменную node_path env:
export NODE_PATH='yourdir'/node_modulesсогласно документу :
если переменная среды NODE_PATH установлена в список с разделителями-двоеточиями абсолютных путей, то узел будет искать эти пути для модулей, если они нигде не встречаются. (Примечание: В Windows, NODE_PATH-это разделенные точкой с запятой вместо двоеточия.)
кроме того, узел будет искать в следующих местах:
1: $ДОМАШНИЙ./папки node_modules
2: $HOME/.node_libraries
3: $ PREFIX/lib / node
где $HOME-домашний каталог пользователя, а $PREFIX-узел настроил node_prefix.
это в основном по историческим причинам. вам настоятельно рекомендуется поместите свои зависимости локально в папки node_modules. они будут загружается быстрее, и надежнее.
короче говоря: это невозможно, и, как кажется, никогда не будет поддерживаться (см. здесь https://github.com/npm/npm/issues/775).
есть некоторые hacky work-arrounds с использованием CLI или ENV-переменных (см. текущий выбранный ответ), .npmrc-Config-Files или
npm link- что у них всех есть общего: они никогда не являются просто конкретными проектами, но всегда своего родаglobalрешений.для меня ни одно из этих решений не является действительно чистым, потому что участники вашего проекта всегда должны создавать какую - то специальную конфигурацию или иметь какие-то специальные знания-они не могут просто
npm installи это работает.Итак: либо вам придется положить свой пакет.json в том же каталоге, где вы хотите установить свои node_modules, или жить с тем, что они всегда будут в корневом каталоге вашего проекта.
я не уверен, что это то, что вы имели в виду, но я в конечном итоге на этот вопрос, потому что я не смог установить
node_modulesвнутри моего проекта dir, поскольку он был смонтирован на файловой системе, которая не поддерживала символические ссылки (папка VM "shared").я нашел следующее решение:
- скопировать
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
Comments