Відповіді:
Ви можете скористатися --prefixопцією:
mkdir -p ./install/here/node_modules
npm install --prefix ./install/here <package>
Потім пакет (и) буде встановлено в ./install/here/node_modules. mkdirНеобхідно , так НПМ може інакше вибрати вже існуючий node_modulesкаталог вище в ієрархії. (Дивіться документацію npm на папки .)
npm install(без назви пакета)? Я надумав це безпосередньо, але потім npm шукає package.jsonв {prefix}. Те, що я також прагну - це вміти пускати packages.jsonв корінь проекту і одночасно встановлювати всі пакети в {project root}/{project webroot}.
npm install, але --prefixздається, що приємніше рішення, якщо воно не викликало рекурсії.
У документації зазначено: Використовуйте опцію префікса разом із глобальним параметром :
Префікс конфиг по замовчуванням в тому місці , де встановлено вузол. У більшості систем це / usr / local . У Windows це саме місце розташування двійкового файлу node.exe. У системах Unix це рівень на один рівень, оскільки вузол зазвичай встановлюється на {prefix} / bin / node, а не на {prefix} /node.exe .
Коли встановлено глобальний прапор, npm встановлює речі в цей префікс. Якщо його не встановлено, він використовує корінь поточного пакету або поточну робочу директорію, якщо вона вже не є.
(Наголос на них)
Тож у вашому кореневому каталозі ви могли б встановити
npm install --prefix <path/to/prefix_folder> -g
і він встановить node_modulesпапку в папку
<path/to/prefix_folder>/lib/node_modules
requireвстановити пакети в усьому світі, чи не так?
Станом на npm версії 3.8.6 ви можете використовувати
npm install --prefix ./install/here <package>
встановити у вказаному каталозі. NPM автоматично створює node_modulesпапку навіть тоді, коли node_modulesкаталог вже існує у вищій ієрархії. Ви також можете мати package.jsonв поточному каталозі, а потім встановити його у вказаному каталозі, використовуючи --prefixопцію:
npm install --prefix ./install/here
Станом на npm 6.0.0, ви можете використовувати
npm install --prefix ./install/here ./
встановити package.json у поточному каталозі до каталогу "./install/here". Є одне, що я помітив на Mac, що він створює симпосилання на батьківську папку всередині каталогу node_modules. Але, це все одно працює.
ПРИМІТКА: NPM шанує шлях, який ви вказали через --prefixопцію. Він вирішується згідно документації на npm для папок , лише коли npm installвикористовується без цього --prefixпараметра.
Can't install <current directory>: Missing package name
package.jsonфайл./install/here